Преглед на файлове

商品档案更新导入功能

hu преди 1 месец
родител
ревизия
492dc3158b

+ 10 - 0
src/custom/restcontroller/R.java

@@ -5657,6 +5657,16 @@ public class R {
         public static class v1 {
         }
     }
+
+    public static class ID2025061614370103 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025061614392903 {
+        public static class v1 {
+        }
+    }
 }
 
 

+ 336 - 0
src/custom/restcontroller/webmanage/sale/item/ExportExcel_Update.java

@@ -0,0 +1,336 @@
+package restcontroller.webmanage.sale.item;
+
+
+import org.apache.poi.ss.usermodel.BorderStyle;
+import org.apache.poi.ss.usermodel.FillPatternType;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.IndexedColors;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.usermodel.*;
+
+import java.awt.*;
+
+public class ExportExcel_Update {
+    /**
+     * 设置标题单元样式
+     *
+     * @param workbook
+     * @return
+     */
+    public static XSSFCellStyle createTitleCellStyle1(XSSFWorkbook workbook) {
+        XSSFCellStyle cellStyle = workbook.createCellStyle();
+        XSSFFont font = workbook.createFont();
+        font.setFontHeightInPoints((short) 12);
+        font.setColor(IndexedColors.RED.getIndex());
+        font.setFontName("微软雅黑");// 设置标题字体
+        cellStyle.setFont(font);
+        cellStyle.setWrapText(true);  //自动换行
+        cellStyle = workbook.createCellStyle();
+        cellStyle.setFont(font);// 设置列标题样式
+        XSSFColor colorBlue = new XSSFColor(new Color(48, 84, 150));
+        cellStyle.setFillForegroundColor(colorBlue);
+        cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        cellStyle.setAlignment(HorizontalAlignment.CENTER); // 居中
+        return cellStyle;
+    }
+
+    /**
+     * 设置中文提示信息样式
+     *
+     * @param workbook
+     * @return
+     */
+    public static XSSFCellStyle createTitleCellStyle2(XSSFWorkbook workbook) {
+        XSSFCellStyle cellStyle = workbook.createCellStyle();
+        XSSFFont font = workbook.createFont();
+        font.setFontHeightInPoints((short) 12);
+        font.setColor(IndexedColors.RED.getIndex());
+        font.setFontName("微软雅黑");// 设置标题字体
+        cellStyle.setFont(font);
+        cellStyle.setWrapText(true);  //自动换行
+        cellStyle = workbook.createCellStyle();
+        cellStyle.setFont(font);// 设置列标题样式
+        XSSFColor colorGrey = new XSSFColor(new Color(217, 225, 242));
+        cellStyle.setFillForegroundColor(colorGrey);
+        cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        cellStyle.setAlignment(HorizontalAlignment.LEFT); // 居左
+        return cellStyle;
+    }
+
+    /**
+     * 设置正文单元样式
+     *
+     * @param workbook
+     * @return
+     */
+    public static XSSFCellStyle createBodyCellStyle4(XSSFWorkbook workbook) {
+        XSSFCellStyle cellStyle = workbook.createCellStyle();
+        XSSFFont font = workbook.createFont();
+        font.setFontHeightInPoints((short) 12);
+        font.setFontName("微软雅黑");// 设置标题字体
+        // font.setFontName(HSSFFont.FONT_ARIAL);// 设置标题字体
+        cellStyle.setFont(font);
+        cellStyle = workbook.createCellStyle();
+        cellStyle.setAlignment(HorizontalAlignment.CENTER);
+        return cellStyle;
+    }
+
+    public static XSSFCellStyle createTitleCellStyle3(XSSFWorkbook workbook) {
+        XSSFCellStyle cellStyle = workbook.createCellStyle();
+        XSSFFont font = workbook.createFont();
+        font.setFontHeightInPoints((short) 12);
+        font.setColor(IndexedColors.WHITE.getIndex());
+        font.setFontName("微软雅黑");// 设置标题字体
+        cellStyle.setFont(font);
+        cellStyle.setWrapText(true);  //自动换行
+        cellStyle = workbook.createCellStyle();
+        cellStyle.setFont(font);// 设置列标题样式
+        XSSFColor colorBlue = new XSSFColor(new Color(48, 84, 150));
+        cellStyle.setFillForegroundColor(colorBlue);
+        cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        cellStyle.setAlignment(HorizontalAlignment.CENTER); // 居中
+        return cellStyle;
+    }
+
+    /**
+     * 2022-07-14 17:41:39
+     * 设置表格宽度(导入模板)
+     **/
+    public static void setBatchDetailSheetColumn1(XSSFSheet sheet) {
+        sheet.setDefaultRowHeight((short) 600);
+        sheet.setColumnWidth((short) 0, (short) 5000);
+        sheet.setColumnWidth((short) 1, (short) 5000);
+        sheet.setColumnWidth((short) 2, (short) 5000);
+        sheet.setColumnWidth((short) 3, (short) 5000);
+        sheet.setColumnWidth((short) 4, (short) 5000);
+        sheet.setColumnWidth((short) 5, (short) 5000);
+        sheet.setColumnWidth((short) 6, (short) 5000);
+
+
+    }
+
+
+    /**
+     * 2022-07-14 17:41:39
+     * 设置表格宽度(返回错误Excel的样式)
+     **/
+    public static void setBatchDetailSheetColumn2(XSSFSheet sheet) {
+        sheet.setDefaultRowHeight((short) 600);
+        sheet.setColumnWidth((short) 0, (short) 5000);
+        sheet.setColumnWidth((short) 1, (short) 5000);
+        sheet.setColumnWidth((short) 2, (short) 5000);
+        sheet.setColumnWidth((short) 3, (short) 5000);
+        sheet.setColumnWidth((short) 4, (short) 5000);
+        sheet.setColumnWidth((short) 5, (short) 5000);
+        sheet.setColumnWidth((short) 6, (short) 5000);
+        sheet.setColumnWidth((short) 7, (short) 5000);
+
+    }
+
+    /**
+     * 2022-07-14 17:42:03
+     * 设置表头
+     * cellStyle1 中文提示信息样式
+     * cellStyle2 标题提示信息样式
+     * cellStyle3 正文提示信息样式
+     **/
+    public static void batchDetail(XSSFSheet sheet, XSSFCellStyle cellStyle1, XSSFCellStyle cellStyle2, XSSFCellStyle cellStyle3, XSSFCellStyle cellStyle4, XSSFWorkbook xssfFWorkbook) {
+//        HSSFCellStyle bcs = ExportExcel.createTitleCellStyle1(workbook);
+//        bcs.setBorderBottom(BorderStyle.THIN); //下边框
+//        bcs.setBorderLeft(BorderStyle.THIN);//左边框
+//        bcs.setBorderTop(BorderStyle.THIN);//上边框
+//        bcs.setBorderRight(BorderStyle.THIN);//右边框
+//        bcs.setWrapText(true);
+
+
+        XSSFRow row = null;
+        XSSFCell cell = null;
+
+        cellStyle1.setBorderBottom(BorderStyle.THIN); //下边框
+        cellStyle1.setBorderLeft(BorderStyle.THIN);//左边框
+        cellStyle1.setBorderTop(BorderStyle.THIN);//上边框
+        cellStyle1.setBorderRight(BorderStyle.THIN);//右边框
+        cellStyle1.setWrapText(true);
+
+        cellStyle2.setBorderBottom(BorderStyle.THIN); //下边框
+        cellStyle2.setBorderLeft(BorderStyle.THIN);//左边框
+        cellStyle2.setBorderTop(BorderStyle.THIN);//上边框
+        cellStyle2.setBorderRight(BorderStyle.THIN);//右边框
+        cellStyle2.setWrapText(true);
+        cellStyle1.setDataFormat(xssfFWorkbook.createDataFormat().getFormat("TEXT"));
+        cellStyle2.setDataFormat(xssfFWorkbook.createDataFormat().getFormat("TEXT"));
+        cellStyle3.setDataFormat(xssfFWorkbook.createDataFormat().getFormat("TEXT"));
+        cellStyle4.setDataFormat(xssfFWorkbook.createDataFormat().getFormat("TEXT"));
+
+        /*第一行*/
+        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 4));
+        sheet.addMergedRegion(new CellRangeAddress(0, 0, 5, 6));
+
+        /*第一行塞值*/
+        row = sheet.createRow(0);
+
+        cell = row.createCell(0);// ID
+        cell.setCellStyle(cellStyle1);
+        cell.setCellValue("货品档案");
+
+        cell = row.createCell(5);// ID
+        cell.setCellStyle(cellStyle1);
+        cell.setCellValue("商品营销分类列表");
+        /*第二行*/
+        sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 6));
+        /*第二行塞值*/
+        row = sheet.createRow(1);
+        cell = row.createCell(0);// ID
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("注意:①请按照以下示例填写信息;②最多不超过5000行;③导入前,请记得删除示例行!");
+        /*第三行塞值*/
+        row = sheet.createRow(2);
+
+        cell = row.createCell(0);
+        cell.setCellStyle(cellStyle3);
+        cell.setCellValue("产品编码(必填)");
+
+        cell = row.createCell(1);
+        cell.setCellStyle(cellStyle3);
+        cell.setCellValue("规格");
+
+        cell = row.createCell(2);
+        cell.setCellStyle(cellStyle3);
+        cell.setCellValue("型号");
+
+        cell = row.createCell(3);
+        cell.setCellStyle(cellStyle3);
+        cell.setCellValue("财务分类");
+
+        cell = row.createCell(4);
+        cell.setCellStyle(cellStyle3);
+        cell.setCellValue("领域");
+
+
+        cell = row.createCell(5);
+        cell.setCellStyle(cellStyle3);
+        cell.setCellValue("品牌");
+
+        cell = row.createCell(6);
+        cell.setCellStyle(cellStyle3);
+        cell.setCellValue("营销类别编码");
+
+
+
+
+        /*第四行塞值*/
+        row = sheet.createRow(3);
+
+        cell = row.createCell(0);
+        cell.setCellStyle(cellStyle4);
+        cell.setCellValue("测试品号");
+
+        cell = row.createCell(1);
+        cell.setCellStyle(cellStyle4);
+        cell.setCellValue("测试规格");
+
+        cell = row.createCell(2);
+        cell.setCellStyle(cellStyle4);
+        cell.setCellValue("测试型号");
+
+        cell = row.createCell(3);
+        cell.setCellStyle(cellStyle4);
+        cell.setCellValue("测试财务分类");
+
+        cell = row.createCell(4);
+        cell.setCellStyle(cellStyle4);
+        cell.setCellValue("测试领域");
+
+        cell = row.createCell(5);
+        cell.setCellStyle(cellStyle4);
+        cell.setCellValue("测试品牌");
+
+        cell = row.createCell(6);
+        cell.setCellStyle(cellStyle4);
+        cell.setCellValue("测试营销类别编码");
+
+
+    }
+
+
+    /**
+     * 2022-07-14 17:42:03
+     * 设置表头
+     **/
+    public static void batchDetailErr(XSSFSheet sheet, XSSFCellStyle cellStyle1, XSSFCellStyle cellStyle2, XSSFCellStyle cellStyle3, XSSFWorkbook workbook) {
+//        HSSFCellStyle bcs = ExportExcel.createTitleCellStyle1(workbook);
+//        bcs.setBorderBottom(BorderStyle.THIN); //下边框
+//        bcs.setBorderLeft(BorderStyle.THIN);//左边框
+//        bcs.setBorderTop(BorderStyle.THIN);//上边框
+//        bcs.setBorderRight(BorderStyle.THIN);//右边框
+//        bcs.setWrapText(true);
+
+
+        XSSFRow row = null;
+        XSSFCell cell = null;
+
+        cellStyle1.setBorderBottom(BorderStyle.THIN); //下边框
+        cellStyle1.setBorderLeft(BorderStyle.THIN);//左边框
+        cellStyle1.setBorderTop(BorderStyle.THIN);//上边框
+        cellStyle1.setBorderRight(BorderStyle.THIN);//右边框
+        cellStyle1.setWrapText(true);
+
+
+
+        /*第一行*/
+        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 4));
+        sheet.addMergedRegion(new CellRangeAddress(0, 0, 5, 7));
+
+        /*第一行塞值*/
+        row = sheet.createRow(0);
+        cell = row.createCell(0);// ID
+        cell.setCellStyle(cellStyle1);
+        cell.setCellValue("货品档案");
+        cell = row.createCell(27);// ID
+        cell.setCellStyle(cellStyle1);
+        cell.setCellValue("商品营销分类列表");
+        /*第二行*/
+        sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 7));
+        /*第二行塞值*/
+        row = sheet.createRow(1);
+        cell = row.createCell(0);// ID
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("注意:①请按照以下示例填写信息;②最多不超过5000行;③导入前,请记得删除示例行!");
+        /*第三行塞值*/
+        row = sheet.createRow(2);
+
+        cell = row.createCell(0);
+        cell.setCellStyle(cellStyle3);
+        cell.setCellValue("产品编码(必填)");
+
+        cell = row.createCell(1);
+        cell.setCellStyle(cellStyle3);
+        cell.setCellValue("规格");
+
+        cell = row.createCell(2);
+        cell.setCellStyle(cellStyle3);
+        cell.setCellValue("型号");
+
+        cell = row.createCell(3);
+        cell.setCellStyle(cellStyle3);
+        cell.setCellValue("财务分类");
+
+        cell = row.createCell(4);
+        cell.setCellStyle(cellStyle3);
+        cell.setCellValue("领域");
+
+
+        cell = row.createCell(5);
+        cell.setCellStyle(cellStyle3);
+        cell.setCellValue("品牌");
+
+        cell = row.createCell(6);
+        cell.setCellStyle(cellStyle3);
+        cell.setCellValue("营销类别编码");
+
+        cell = row.createCell(7);
+        cell.setCellStyle(cellStyle3);
+        cell.setCellValue("错误信息");
+
+    }
+}

+ 297 - 0
src/custom/restcontroller/webmanage/sale/item/Item.java

@@ -1077,6 +1077,38 @@ public class Item extends Controller {
         return getSucReturnObject().setData(url).toString();
     }
 
+    @API(title = "货品档案更新模板", apiversion = R.ID2025061614370103.v1.class)
+    public String downloadUpdateExcel() throws YosException {
+        ExcelFactory excelFactory = new ExcelFactory("货品档案更新模板");
+
+        XSSFSheet sheet = excelFactory.getXssfWorkbook().createSheet("Sheet1");
+        XSSFWorkbook xssfFWorkbook = excelFactory.getXssfWorkbook();
+
+        CellStyle style = xssfFWorkbook.createCellStyle();
+        DataFormat format = xssfFWorkbook.createDataFormat();
+        style.setDataFormat(format.getFormat("@"));
+        // 对单独某一列进行样式赋值,第一个参数为列数,第二个参数为样式
+        for (int i = 0; i <= 31; i++) {
+            sheet.setDefaultColumnStyle(i, style);
+        }
+        // 设置工作薄列宽
+        ExportExcel_Update.setBatchDetailSheetColumn1(sheet);// 设置工作薄列宽
+        XSSFCellStyle titleCellStyle1 = ExportExcel_Update.createTitleCellStyle1(xssfFWorkbook);
+        XSSFCellStyle titleCellStyle2 = ExportExcel_Update.createTitleCellStyle2(xssfFWorkbook);
+        XSSFCellStyle titleCellStyle3 = ExportExcel_Update.createTitleCellStyle3(xssfFWorkbook);
+        XSSFCellStyle titleCellStyle4 = ExportExcel_Update.createBodyCellStyle4(xssfFWorkbook);
+
+        ExportExcel_Update.batchDetail(sheet, titleCellStyle1, titleCellStyle2, titleCellStyle3, titleCellStyle4, xssfFWorkbook);
+
+        Rows aa = uploadExcelToObs(excelFactory);
+        String url = "";
+        if (!aa.isEmpty()) {
+            url = aa.get(0).getString("url");
+        }
+        return getSucReturnObject().setData(url).toString();
+    }
+
+
     @API(title = "货品档案导入", apiversion = R.ID20230311111404.v1.class)
     @CACHEING_CLEAN(apiversions = {R.ID20220923140602.class})
     public String importItems() throws YosException {
@@ -1433,6 +1465,218 @@ public class Item extends Controller {
         return getSucReturnObject().toString();
     }
 
+    @API(title = "商品档案更新", apiversion = R.ID2025061614392903.v1.class)
+    public String updateItems() throws YosException {
+        ArrayList<String> sqlList = new ArrayList<>();
+        ExcelFactory e;
+        try {
+
+            // 华为云
+            e = getPostExcelFactory(content.getLong("attachmentid"));
+            // 本地
+            //e = getPostExcelFactory();
+
+            ArrayList<String> keys = new ArrayList<>();
+            keys.add("itemno");
+            keys.add("standards");
+            keys.add("model");
+            keys.add("financeclasstype");
+            keys.add("tradefield");
+            keys.add("brandname");
+            keys.add("itemclassnum");
+
+            Rows rows = e.getSheetRows(0, keys, 3);
+            boolean iserr = false;
+            Rows rowserr = new Rows();
+            Rows rowssuc = new Rows();
+            RowsMap itemnoRowsMap = dbConnect.runSqlQuery("select itemno,itemid from plm_item t1  where siteid='" + siteid + "'").toRowsMap("itemno");
+            ArrayList<String> tradefieldList = dbConnect.runSqlQuery("select sys_optiontypemx.value from sys_optiontypemx where (1=1) and (sys_optiontypemx.isused='1') and (sys_optiontypemx.optiontypeid in(select optiontypeid from sys_optiontype where typename='tradefield')) and ((ifnull(siteid,'')='' or siteid='"+siteid+"')) order by sequence").toArrayList("value");
+            RowsMap imitemnoRowsMap = rows.toRowsMap("itemno");
+            Rows itemcalss = dbConnect.runSqlQuery("select t1.sa_brandid,t1.brandname,t2.itemclassid,t2.itemclassnum from sa_brand t1 inner join plm_itemclass t2 on t1.siteid=t2.siteid and t1.sa_brandid=t2.sa_brandid where t1.siteid='" + siteid + "'");
+
+            RowsMap itemclassRowsMap = itemcalss.toRowsMap("brandname");
+
+            for (Row row : rows) {
+
+                String brandname = row.getString("brandname");
+                String itemclassnum = row.getString("itemclassnum");
+                String itemno = row.getString("itemno");
+                if (StringUtils.isEmpty(itemno)) {
+                    iserr = true;
+                    row.put("msg", "错误信息:产品编号不能为空");
+                    rowserr.add(row);
+                    continue;
+                }
+                if ((StringUtils.isEmpty(brandname) && StringUtils.isNotEmpty(itemclassnum)) || (StringUtils.isNotEmpty(brandname) && StringUtils.isEmpty(itemclassnum))) {
+                    iserr = true;
+                    row.put("msg", "错误信息:不能单独填写品牌和营销类别");
+                    rowserr.add(row);
+                    continue;
+                }
+                if (imitemnoRowsMap.containsKey(itemno) && imitemnoRowsMap.get(itemno).size() > 1) {
+                    iserr = true;
+                    row.put("msg", "错误信息:本次导入商品中存在重复的商品编号");
+                    rowserr.add(row);
+                    continue;
+                }
+                if (!itemnoRowsMap.containsKey(itemno)) {
+                    iserr = true;
+                    row.put("msg", "错误信息:商品编号在系统中不存在,无法更新数据");
+                    rowserr.add(row);
+                    continue;
+                }
+                if(!StringUtils.isBlank(row.getString("tradefield"))){
+                    if (!tradefieldList.contains(row.getString("tradefield"))) {
+                        iserr = true;
+                        row.put("msg", "错误信息:领域不存在");
+                        rowserr.add(row);
+                        continue;
+                    }
+                }
+                if(!StringUtils.isBlank(brandname) && !StringUtils.isBlank(itemclassnum)){
+                    if (!itemclassRowsMap.containsKey(brandname) || !itemclassRowsMap.get(brandname).toArrayList("itemclassnum").contains(itemclassnum)) {
+                        iserr = true;
+                        row.put("msg", "错误信息:品牌不存在或该品牌下没有对应的营销类别");
+                        rowserr.add(row);
+                    }
+               }
+
+                row.put("itemid", itemnoRowsMap.get(itemno).get(0).getLong("itemid"));
+                for (Row row1 : itemclassRowsMap.get(brandname)) {
+                    if (row1.getString("itemclassnum").equals(itemclassnum)) {
+                        row.put("sa_brandid", row1.getLong("sa_brandid"));
+                        row.put("itemclassid", row1.getLong("itemclassid"));
+                        break;
+                    }
+                }
+                rowssuc.add(row);
+            }
+
+            if (!rowssuc.isEmpty()) {
+                for (Row row : rowssuc) {
+                    UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "plm_item");
+                    updateSQL.setUniqueid(row.getLong("itemid"));
+                    updateSQL.setSiteid(siteid);
+                    if(!StringUtils.isBlank(row.getString("standards"))){
+                        updateSQL.setValue("standards", row.getString("standards"));
+                    }
+                    if(!StringUtils.isBlank(row.getString("model"))){
+                        updateSQL.setValue("model", row.getString("model"));
+                    }
+                    if(!StringUtils.isBlank(row.getString("financeclasstype"))){
+                        updateSQL.setValue("financeclasstype", row.getString("financeclasstype"));
+                    }
+                    updateSQL.setValue("changeby", username);
+                    updateSQL.setDateValue("changedate");
+                    sqlList.add(updateSQL.getSQL());
+
+                    Rows itemtradefieldRows =dbConnect.runSqlQuery("select * from plm_item_tradefield where itemid="+row.getLong("itemid")+" and siteid='"+siteid+"'");
+                    if(StringUtils.isNotBlank(row.getString("tradefield"))){
+                        if(itemtradefieldRows.isEmpty()){
+                            Long plm_item_tradefieldid = createTableID("plm_item_tradefield");
+                            SQLFactory sqlFactory = new SQLFactory(this, "新增领域");
+                            sqlFactory.addParameter("siteid", siteid);
+                            sqlFactory.addParameter("plm_item_tradefieldid", plm_item_tradefieldid);
+                            sqlFactory.addParameter("tradefield", row.getString("tradefield"));
+                            sqlFactory.addParameter("userid", userid);
+                            sqlFactory.addParameter("itemid", row.getLong("itemid"));
+                            sqlList.add(sqlFactory.getSQL());
+                            sqlList.add(DataContrlLog.createLog(this, "plm_item_tradefield", plm_item_tradefieldid, "新增", "货品档案更新导入").getSQL());
+                        }else{
+                            UpdateSQL item_tradefieldidupdateSQL = SQLFactory.createUpdateSQL(this, "plm_item_tradefield");
+                            item_tradefieldidupdateSQL.setUniqueid(itemtradefieldRows.get(0).getLong("plm_item_tradefieldid"));
+                            item_tradefieldidupdateSQL.setSiteid(siteid);
+                            item_tradefieldidupdateSQL.setValue("tradefield",row.getString("tradefield"));
+                            sqlList.add(item_tradefieldidupdateSQL.getSQL());
+                            sqlList.add(DataContrlLog.createLog(this, "plm_item_tradefield", itemtradefieldRows.get(0).getLong("plm_item_tradefieldid"), "更新", "货品档案更新导入").getSQL());
+                        }
+                    }
+
+
+
+                    Rows itemsaleclassRows =dbConnect.runSqlQuery("select * from sa_itemsaleclass where itemid="+row.getLong("itemid")+" and siteid='"+siteid+"'");
+
+                    if(StringUtils.isNotBlank(row.getString("brandname"))){
+                        if(itemsaleclassRows.isEmpty()){
+                            Long sa_itemsaleclassid = createTableID("sa_itemsaleclass");
+                            SQLFactory sqlFactory = new SQLFactory(this, "新增营销类别");
+                            sqlFactory.addParameter("siteid", siteid);
+                            sqlFactory.addParameter("sa_itemsaleclassid", sa_itemsaleclassid);
+                            sqlFactory.addParameter("itemclassid", row.getString("itemclassid"));
+                            sqlFactory.addParameter("itemno", row.getString("itemno"));
+                            sqlFactory.addParameter("itemid", row.getLong("itemid"));
+                            sqlList.add(sqlFactory.getSQL());
+                            sqlList.add(DataContrlLog.createLog(this, "sa_itemsaleclass", sa_itemsaleclassid, "新增", "货品档案更新导入").getSQL());
+                        }else{
+                            UpdateSQL itemsaleclassupdateSQL = SQLFactory.createUpdateSQL(this, "sa_itemsaleclass");
+                            itemsaleclassupdateSQL.setUniqueid(itemsaleclassRows.get(0).getLong("sa_itemsaleclassid"));
+                            itemsaleclassupdateSQL.setSiteid(siteid);
+                            itemsaleclassupdateSQL.setValue("itemno","itemno");
+                            itemsaleclassupdateSQL.setValue("itemclassid",row.getString("itemclassid"));
+                            sqlList.add(itemsaleclassupdateSQL.getSQL());
+                            sqlList.add(DataContrlLog.createLog(this, "sa_itemsaleclass", itemsaleclassRows.get(0).getLong("sa_itemsaleclassid"), "更新", "货品档案更新导入").getSQL());
+                        }
+                    }
+
+
+                    sqlList.add(DataContrlLog.createLog(this, "plm_item", row.getLong("itemid"), "更新", "货品档案更新导入").getSQL());
+
+                }
+            }
+
+            if (!sqlList.isEmpty()) {
+                dbConnect.runSqlUpdate(sqlList);
+            }
+
+            if (iserr) {
+                ExcelFactory excelFactory = new ExcelFactory("货品档案导入错误信息");
+                HashMap<String, String> map = new HashMap<String, String>();
+                map.put("itemno", "产品编码");
+                map.put("standards", "规格");
+                map.put("model", "型号");
+                map.put("financeclasstype", "财务分类");
+                map.put("tradefield", "领域");
+                map.put("brandname", "品牌");
+                map.put("itemclassnum", "营销类别编码");
+                map.put("msg", "错误信息");
+                ArrayList<String> colNameList = new ArrayList<String>();
+                HashMap<String, Class> keytypemap = new HashMap<String, Class>();
+                colNameList.add("itemno");
+                colNameList.add("standards");
+                colNameList.add("model");
+                colNameList.add("financeclasstype");
+                colNameList.add("tradefield");
+                colNameList.add("brandname");
+                colNameList.add("itemclassnum");
+                colNameList.add("msg");
+                keytypemap.put("itemno", String.class);
+                keytypemap.put("standards", String.class);
+                keytypemap.put("model", String.class);
+                keytypemap.put("financeclasstype", String.class);
+                keytypemap.put("tradefield", String.class);
+                keytypemap.put("brandname", String.class);
+                keytypemap.put("itemclassnum", String.class);
+                keytypemap.put("msg", String.class);
+                rowserr.setFieldList(colNameList);
+                rowserr.setFieldTypeMap(keytypemap);
+                addUpdateSheet(excelFactory, "Sheet1", rowserr, map);
+
+                Rows aa = uploadExcelToObs(excelFactory);
+                String url = "";
+                if (!aa.isEmpty()) {
+                    url = aa.get(0).getString("url");
+                }
+                return getSucReturnObject().setData(url).toString();
+            }
+
+        } catch (Exception e1) {
+            e1.printStackTrace();
+            return getErrReturnObject().setErrMsg(e1.getMessage()).toString();
+        }
+        return getSucReturnObject().toString();
+    }
+
+
     public XSSFSheet addSheet(ExcelFactory excelFactory, String sheetname, Rows datarows,
                               HashMap<String, String> titlemap) {
         ArrayList<String> keylist = datarows.getFieldList();
@@ -1485,4 +1729,57 @@ public class Item extends Controller {
         return sheet;
     }
 
+
+    public XSSFSheet addUpdateSheet(ExcelFactory excelFactory, String sheetname, Rows datarows,
+                              HashMap<String, String> titlemap) {
+        ArrayList<String> keylist = datarows.getFieldList();
+        XSSFSheet sheet = excelFactory.getXssfWorkbook().createSheet(sheetname);
+        XSSFWorkbook xssfFWorkbook = excelFactory.getXssfWorkbook();
+
+        XSSFCellStyle xssfCellStyle1 = xssfFWorkbook.createCellStyle();
+        XSSFFont font = xssfFWorkbook.createFont();
+
+        font.setColor((short) 0xa);
+        font.setFontHeightInPoints((short) 12);
+        font.setBold(true);
+        xssfCellStyle1.setFont(font);
+
+        CellStyle style = xssfFWorkbook.createCellStyle();
+        DataFormat format = xssfFWorkbook.createDataFormat();
+        style.setDataFormat(format.getFormat("@"));
+        // 对单独某一列进行样式赋值,第一个参数为列数,第二个参数为样式
+        for (int i = 0; i <= 8; i++) {
+            sheet.setDefaultColumnStyle(i, style);
+        }
+
+        ExportExcel_Update.setBatchDetailSheetColumn2(sheet);// 设置工作薄列宽
+        XSSFCellStyle titleCellStyle1 = ExportExcel_Update.createTitleCellStyle1(xssfFWorkbook);
+        XSSFCellStyle titleCellStyle2 = ExportExcel_Update.createTitleCellStyle2(xssfFWorkbook);
+        XSSFCellStyle titleCellStyle3 = ExportExcel_Update.createTitleCellStyle3(xssfFWorkbook);
+        ExportExcel_Update.batchDetailErr(sheet, titleCellStyle1, titleCellStyle2, titleCellStyle3, xssfFWorkbook);// 写入标题
+
+        for (int n = 0; n < datarows.size(); n++) {
+            Row row = datarows.get(n);
+            XSSFRow datarow = sheet.createRow(n + 3);
+            for (int i1 = 0; i1 < keylist.size(); i1++) {
+                Class fieldclazztype = datarows.getFieldMeta(keylist.get(i1)).getFieldtype();
+                if (fieldclazztype == Integer.class) {
+                    datarow.createCell(i1).setCellValue(row.getInteger((String) keylist.get(i1)));
+                } else if (fieldclazztype == Long.class) {
+                    datarow.createCell(i1).setCellValue(row.getLong((String) keylist.get(i1)));
+                } else if (fieldclazztype == Float.class) {
+                    datarow.createCell(i1).setCellValue(row.getFloat((String) keylist.get(i1)));
+                } else if (fieldclazztype == Double.class) {
+                    datarow.createCell(i1).setCellValue(row.getDouble((String) keylist.get(i1)));
+                } else {
+                    datarow.createCell(i1).setCellValue(row.getString((String) keylist.get(i1)));
+                }
+                if (i1 == 7) {
+                    datarow.getCell(i1).setCellStyle(xssfCellStyle1);
+                }
+            }
+        }
+        return sheet;
+    }
+
 }