فهرست منبع

发货单明细查询、订单明细查询导出

郭齐峰 2 سال پیش
والد
کامیت
f83c4fd08b

+ 179 - 0
src/custom/restcontroller/webmanage/sale/dispatch/ExportDown.java

@@ -0,0 +1,179 @@
+package restcontroller.webmanage.sale.dispatch;
+
+import common.data.Row;
+import common.data.Rows;
+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.xssf.usermodel.*;
+
+import java.awt.*;
+
+public class ExportDown {
+
+    public static XSSFCellStyle createTitleCellStyle2(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.LEFT); // 居左
+        return cellStyle;
+    }
+
+    public static XSSFCellStyle createBodyCellStyle(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.LEFT); // 居左
+        return cellStyle;
+    }
+
+    public static void setBatchDetailSheetColumn1(XSSFSheet sheet) {
+        sheet.setDefaultRowHeight((short) 600);
+        sheet.setColumnWidth((short) 0, (short) 5500);
+        sheet.setColumnWidth((short) 1, (short) 5500);
+        sheet.setColumnWidth((short) 2, (short) 5500);
+        sheet.setColumnWidth((short) 3, (short) 5500);
+        sheet.setColumnWidth((short) 4, (short) 5500);
+        sheet.setColumnWidth((short) 5, (short) 5500);
+        sheet.setColumnWidth((short) 6, (short) 5500);
+        sheet.setColumnWidth((short) 7, (short) 5500);
+        sheet.setColumnWidth((short) 8, (short) 5500);
+        sheet.setColumnWidth((short) 9, (short) 5500);
+        sheet.setColumnWidth((short) 10, (short) 5500);
+    }
+
+    public static void batchDetail(XSSFSheet sheet, XSSFCellStyle cellStyle2, XSSFCellStyle cellStyle3, Rows rows) {
+//        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;
+
+        cellStyle2.setBorderBottom(BorderStyle.THIN); //下边框
+        cellStyle2.setBorderLeft(BorderStyle.THIN);//左边框
+        cellStyle2.setBorderTop(BorderStyle.THIN);//上边框
+        cellStyle2.setBorderRight(BorderStyle.THIN);//右边框
+        cellStyle2.setWrapText(true);
+
+        /*第一行塞值*/
+        row = sheet.createRow(0);
+
+        cell = row.createCell(0);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("发货单号");
+
+        cell = row.createCell(1);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("状态");
+
+        cell = row.createCell(2);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("订单号");
+
+        cell = row.createCell(3);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("经销商名称");
+
+        cell = row.createCell(4);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("经销商编号");
+
+        cell = row.createCell(5);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("发货日期");
+
+        cell = row.createCell(6);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("产品编码");
+
+        cell = row.createCell(7);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("品名");
+
+        cell = row.createCell(8);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("单位");
+
+        cell = row.createCell(9);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("发货数量");
+
+        cell = row.createCell(10);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("备注");
+
+
+        int i = 1;
+        /*第四行塞值*/
+        for (Row row1 : rows) {
+            row = sheet.createRow(i);
+
+            cell = row.createCell(0);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("billno"));
+
+            cell = row.createCell(1);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("status"));
+
+            cell = row.createCell(2);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("sonum"));
+
+            cell = row.createCell(3);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("enterprisename"));
+
+            cell = row.createCell(4);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("agentnum"));
+
+            cell = row.createCell(5);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("billdate"));
+
+            cell = row.createCell(6);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("itemno"));
+
+            cell = row.createCell(7);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("itemname"));
+
+            cell = row.createCell(8);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("unit"));
+
+            cell = row.createCell(9);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("outwarehouseqty"));
+
+            cell = row.createCell(10);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("remarks"));
+
+            i++;
+        }
+
+
+    }
+}

+ 69 - 54
src/custom/restcontroller/webmanage/sale/dispatch/dispatchItems.java

@@ -9,11 +9,13 @@ import common.YosException;
 import common.annotation.API;
 import common.annotation.CACHEING;
 import common.annotation.CACHEING_CLEAN;
-import common.data.Row;
-import common.data.Rows;
-import common.data.RowsMap;
-import common.data.SQLFactory;
+import common.data.*;
 import org.apache.commons.lang.StringUtils;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.DataFormat;
+import org.apache.poi.xssf.usermodel.XSSFCellStyle;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import restcontroller.R;
 import restcontroller.webmanage.sale.order.Order;
 import restcontroller.webmanage.sale.order.OrderItems;
@@ -110,14 +112,14 @@ public class dispatchItems extends Controller {
     @CACHEING
     public String queryErpIcinvbalBatchList() throws YosException {
 
-        JSONArray jsonArray= content.getJSONArray("itemnos");
-        ERPDocking erpDocking =new ERPDocking();
-        JSONArray rows = erpDocking.getErpIcinvbalBatchRows(1000, 1,jsonArray );
+        JSONArray jsonArray = content.getJSONArray("itemnos");
+        ERPDocking erpDocking = new ERPDocking();
+        JSONArray rows = erpDocking.getErpIcinvbalBatchRows(1000, 1, jsonArray);
         return getSucReturnObject().setData(rows).toString();
     }
 
     @API(title = "新建或修改发货单商品明细", apiversion = R.ID20221115104603.v1.class)
-    @CACHEING_CLEAN(apiClass = {dispatchItems.class,dispatch.class})
+    @CACHEING_CLEAN(apiClass = {dispatchItems.class, dispatch.class})
     public String insertormodify_dispatchItems() throws YosException {
         Long sa_dispatchid = content.getLong("sa_dispatchid");
         JSONArray iteminfos = content.getJSONArray("iteminfos");
@@ -221,29 +223,29 @@ public class dispatchItems extends Controller {
         sqlFactory.addParameter("sa_dispatchid", sa_dispatchid);
         sqlFactory.addParameter("siteid", siteid);
         Rows rows = dbConnect.runSqlQuery(sqlFactory);
-        RowsMap rowsMap =rows.toRowsMap("itemno");
-        ERPDocking erpDocking =new ERPDocking();
-        JSONArray jsonArray =new JSONArray();
-        if(rows.toJsonArray("itemno").size()!=0){
+        RowsMap rowsMap = rows.toRowsMap("itemno");
+        ERPDocking erpDocking = new ERPDocking();
+        JSONArray jsonArray = new JSONArray();
+        if (rows.toJsonArray("itemno").size() != 0) {
             if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true")) {
-                jsonArray=erpDocking.getErpIcinvbalRows(200000, 1,rows.toJsonArray("itemno"));
+                jsonArray = erpDocking.getErpIcinvbalRows(200000, 1, rows.toJsonArray("itemno"));
             }
 
         }
-        SQLFactory sqlFactory1 =new SQLFactory(this,"商品发货数量汇总");
+        SQLFactory sqlFactory1 = new SQLFactory(this, "商品发货数量汇总");
         sqlFactory1.addParameter("siteid", siteid);
         Rows sumQtyRows = dbConnect.runSqlQuery(sqlFactory1);
-        RowsMap sumQtyRowsMap= sumQtyRows.toRowsMap("itemno");
+        RowsMap sumQtyRowsMap = sumQtyRows.toRowsMap("itemno");
 
-        if(!jsonArray.isEmpty()){
-            for (Object object:jsonArray) {
-                JSONObject jsonObject =(JSONObject)object;
+        if (!jsonArray.isEmpty()) {
+            for (Object object : jsonArray) {
+                JSONObject jsonObject = (JSONObject) object;
 
-                if(rowsMap.containsKey(jsonObject.getString("fitemno"))){
-                    if(rowsMap.get(jsonObject.getString("fitemno")).isNotEmpty()){
-                        if(sumQtyRowsMap.containsKey(jsonObject.getString("fitemno"))){
-                            rowsMap.get(jsonObject.getString("fitemno")).get(0).put("delinvbalqty", jsonObject.getBigDecimalValue("fqty").subtract( sumQtyRowsMap.get(jsonObject.getString("fitemno")).get(0).getBigDecimal("qty")));
-                        }else {
+                if (rowsMap.containsKey(jsonObject.getString("fitemno"))) {
+                    if (rowsMap.get(jsonObject.getString("fitemno")).isNotEmpty()) {
+                        if (sumQtyRowsMap.containsKey(jsonObject.getString("fitemno"))) {
+                            rowsMap.get(jsonObject.getString("fitemno")).get(0).put("delinvbalqty", jsonObject.getBigDecimalValue("fqty").subtract(sumQtyRowsMap.get(jsonObject.getString("fitemno")).get(0).getBigDecimal("qty")));
+                        } else {
                             rowsMap.get(jsonObject.getString("fitemno")).get(0).put("delinvbalqty", jsonObject.getBigDecimalValue("fqty"));
                         }
                         rowsMap.get(jsonObject.getString("fitemno")).get(0).put("invbalqty", jsonObject.getBigDecimalValue("fqty"));
@@ -252,8 +254,8 @@ public class dispatchItems extends Controller {
             }
         }
 
-        for (Row row:rows) {
-            if(!row.containsKey("delinvbalqty")){
+        for (Row row : rows) {
+            if (!row.containsKey("delinvbalqty")) {
                 row.put("delinvbalqty", row.getBigDecimal("undeliqty").negate());
                 row.put("invbalqty", 0);
             }
@@ -268,7 +270,7 @@ public class dispatchItems extends Controller {
          * 过滤条件设置
          */
         StringBuffer where = new StringBuffer(" 1=1 ");
-        if(sys_enterpriseid>0) {
+        if (sys_enterpriseid > 0) {
             where.append(" and t4.sys_enterpriseid ='").append(sys_enterpriseid).append("' ");
         }
 
@@ -296,35 +298,35 @@ public class dispatchItems extends Controller {
         }
         boolean isExport = content.getBooleanValue("isExport");
         SQLFactory sqlFactory = new SQLFactory(this, "发货单明细所有列表查询", pageSize, pageNumber, pageSorting);
-        if(isExport){
+        if (isExport) {
             sqlFactory = new SQLFactory(this, "发货单明细所有列表查询");
         }
         sqlFactory.addParameter_SQL("where", where);
         sqlFactory.addParameter("siteid", siteid);
         Rows rows = dbConnect.runSqlQuery(sqlFactory);
-        RowsMap rowsMap =rows.toRowsMap("itemno");
-        ERPDocking erpDocking =new ERPDocking();
-        JSONArray jsonArray =new JSONArray();
-        if(rows.toJsonArray("itemno").size()!=0){
+        RowsMap rowsMap = rows.toRowsMap("itemno");
+        ERPDocking erpDocking = new ERPDocking();
+        JSONArray jsonArray = new JSONArray();
+        if (rows.toJsonArray("itemno").size() != 0) {
             if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true")) {
-                jsonArray=erpDocking.getErpIcinvbalRows(200000, 1,rows.toJsonArray("itemno"));
+                jsonArray = erpDocking.getErpIcinvbalRows(200000, 1, rows.toJsonArray("itemno"));
             }
 
         }
-        SQLFactory sqlFactory1 =new SQLFactory(this,"商品发货数量汇总");
+        SQLFactory sqlFactory1 = new SQLFactory(this, "商品发货数量汇总");
         sqlFactory1.addParameter("siteid", siteid);
         Rows sumQtyRows = dbConnect.runSqlQuery(sqlFactory1);
-        RowsMap sumQtyRowsMap= sumQtyRows.toRowsMap("itemno");
+        RowsMap sumQtyRowsMap = sumQtyRows.toRowsMap("itemno");
 
-        if(!jsonArray.isEmpty()){
-            for (Object object:jsonArray) {
-                JSONObject jsonObject =(JSONObject)object;
+        if (!jsonArray.isEmpty()) {
+            for (Object object : jsonArray) {
+                JSONObject jsonObject = (JSONObject) object;
 
-                if(rowsMap.containsKey(jsonObject.getString("fitemno"))){
-                    if(rowsMap.get(jsonObject.getString("fitemno")).isNotEmpty()){
-                        if(sumQtyRowsMap.containsKey(jsonObject.getString("fitemno"))){
-                            rowsMap.get(jsonObject.getString("fitemno")).get(0).put("delinvbalqty", jsonObject.getBigDecimalValue("fqty").subtract( sumQtyRowsMap.get(jsonObject.getString("fitemno")).get(0).getBigDecimal("qty")));
-                        }else {
+                if (rowsMap.containsKey(jsonObject.getString("fitemno"))) {
+                    if (rowsMap.get(jsonObject.getString("fitemno")).isNotEmpty()) {
+                        if (sumQtyRowsMap.containsKey(jsonObject.getString("fitemno"))) {
+                            rowsMap.get(jsonObject.getString("fitemno")).get(0).put("delinvbalqty", jsonObject.getBigDecimalValue("fqty").subtract(sumQtyRowsMap.get(jsonObject.getString("fitemno")).get(0).getBigDecimal("qty")));
+                        } else {
                             rowsMap.get(jsonObject.getString("fitemno")).get(0).put("delinvbalqty", jsonObject.getBigDecimalValue("fqty"));
                         }
                         rowsMap.get(jsonObject.getString("fitemno")).get(0).put("invbalqty", jsonObject.getBigDecimalValue("fqty"));
@@ -333,27 +335,40 @@ public class dispatchItems extends Controller {
             }
         }
 
-        for (Row row:rows) {
-            if(!row.containsKey("delinvbalqty")){
+        for (Row row : rows) {
+            if (!row.containsKey("delinvbalqty")) {
                 row.put("delinvbalqty", row.getBigDecimal("undeliqty").negate());
                 row.put("invbalqty", 0);
             }
         }
 
         if (isExport) {
-            //去除不需要导出项
-            String[] removeFieldList = {"sa_dispatch_itemsid", "sa_dispatchid", "sa_orderitemsid", "rowno", "itemid",
-                    "outwarehouseqty", "batchno", "price", "amount", "undeliqty",
-                    "deliedqty", "invbalqty", "delinvbalqty"};
-            for (String key : removeFieldList) {
-                rows.getFieldList().remove(key);
+            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("@"));
+            // 对单独某一列进行样式赋值,第一个参数为列数,第二个参数为样式
+            sheet.setDefaultColumnStyle(0, style);
+            ExportDown.setBatchDetailSheetColumn1(sheet);// 设置工作薄列宽
+            XSSFCellStyle titleCellStyle2 = ExportDown.createTitleCellStyle2(xssfFWorkbook);
+            XSSFCellStyle titleCellStyle3 = ExportDown.createBodyCellStyle(xssfFWorkbook);
+            ExportDown.batchDetail(sheet, titleCellStyle2, titleCellStyle3, rows);// 写入标题
+
+            Rows uploadRows = uploadExcelToObs(excelFactory);
+            String url = "";
+            if (!uploadRows.isEmpty()) {
+                url = uploadRows.get(0).getString("url");
             }
-
-            Rows uploadRows = uploadExcelToObs("sa_dispatch", "发货单明细所有列表查询", rows, getTitleMap());
-            return getSucReturnObject().setData(uploadRows).toString();
+            return getSucReturnObject().setData(url).toString();
         }
         return getSucReturnObject().setData(rows).toString();
     }
+
     //返回导出的标题
     public HashMap<String, String> getTitleMap() {
         HashMap<String, String> titleMap = new HashMap<>();
@@ -374,7 +389,7 @@ public class dispatchItems extends Controller {
     }
 
     @API(title = "删除明细", apiversion = R.ID20221115104803.v1.class)
-    @CACHEING_CLEAN(apiClass = {dispatchItems.class,dispatch.class})
+    @CACHEING_CLEAN(apiClass = {dispatchItems.class, dispatch.class})
     public String deletemx() throws YosException {
 
         JSONArray sa_dispatch_itemsids = content.getJSONArray("sa_dispatch_itemsids");

+ 206 - 0
src/custom/restcontroller/webmanage/sale/order/ExportDown.java

@@ -0,0 +1,206 @@
+package restcontroller.webmanage.sale.order;
+
+import common.data.Row;
+import common.data.Rows;
+import common.data.RowsMap;
+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 ExportDown {
+
+    public static XSSFCellStyle createTitleCellStyle2(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.LEFT); // 居左
+        return cellStyle;
+    }
+
+    public static XSSFCellStyle createBodyCellStyle(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.LEFT); // 居左
+        return cellStyle;
+    }
+
+    public static void setBatchDetailSheetColumn1(XSSFSheet sheet) {
+        sheet.setDefaultRowHeight((short) 600);
+        sheet.setColumnWidth((short) 0, (short) 5500);
+        sheet.setColumnWidth((short) 1, (short) 5500);
+        sheet.setColumnWidth((short) 2, (short) 5500);
+        sheet.setColumnWidth((short) 3, (short) 5500);
+        sheet.setColumnWidth((short) 4, (short) 5500);
+        sheet.setColumnWidth((short) 5, (short) 5500);
+        sheet.setColumnWidth((short) 6, (short) 5500);
+        sheet.setColumnWidth((short) 7, (short) 5500);
+        sheet.setColumnWidth((short) 8, (short) 5500);
+        sheet.setColumnWidth((short) 9, (short) 5500);
+        sheet.setColumnWidth((short) 10, (short) 5500);
+        sheet.setColumnWidth((short) 11, (short) 5500);
+        sheet.setColumnWidth((short) 12, (short) 5500);
+        sheet.setColumnWidth((short) 13, (short) 5500);
+    }
+
+    public static void batchDetail(XSSFSheet sheet, XSSFCellStyle cellStyle2, XSSFCellStyle cellStyle3, Rows rows) {
+//        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;
+
+        cellStyle2.setBorderBottom(BorderStyle.THIN); //下边框
+        cellStyle2.setBorderLeft(BorderStyle.THIN);//左边框
+        cellStyle2.setBorderTop(BorderStyle.THIN);//上边框
+        cellStyle2.setBorderRight(BorderStyle.THIN);//右边框
+        cellStyle2.setWrapText(true);
+
+        /*第一行塞值*/
+        row = sheet.createRow(0);
+
+        cell = row.createCell(0);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("行号");
+
+        cell = row.createCell(1);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("经销商编号");
+
+        cell = row.createCell(2);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("经销商名称");
+
+        cell = row.createCell(3);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("订单号");
+
+        cell = row.createCell(4);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("订单状态");
+
+        cell = row.createCell(5);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("单据日期");
+
+        cell = row.createCell(6);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("领域");
+
+        cell = row.createCell(7);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("产品编码");
+
+        cell = row.createCell(8);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("品名");
+
+        cell = row.createCell(9);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("单位");
+
+        cell = row.createCell(10);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("数量");
+
+        cell = row.createCell(11);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("订单类型");
+
+        cell = row.createCell(12);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("未发货数量");
+
+        cell = row.createCell(13);
+        cell.setCellStyle(cellStyle2);
+        cell.setCellValue("订单行备注");
+
+        int i = 1;
+        /*第四行塞值*/
+        for (Row row1 : rows) {
+            row = sheet.createRow(i);
+
+            cell = row.createCell(0);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("rowno"));
+
+            cell = row.createCell(1);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("agentnum"));
+
+            cell = row.createCell(2);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("enterprisename"));
+
+            cell = row.createCell(3);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("sonum"));
+
+            cell = row.createCell(4);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("status"));
+
+            cell = row.createCell(5);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("billdate"));
+
+            cell = row.createCell(6);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("tradefield"));
+
+            cell = row.createCell(7);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("itemno"));
+
+            cell = row.createCell(8);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("itemname"));
+
+            cell = row.createCell(9);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("unit"));
+
+            cell = row.createCell(10);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("qty"));
+
+            cell = row.createCell(11);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("type"));
+
+            cell = row.createCell(12);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("undeliqty"));
+
+            cell = row.createCell(13);
+            cell.setCellStyle(cellStyle3);
+            cell.setCellValue(row1.getString("remarks"));
+            i++;
+        }
+
+
+    }
+}

+ 121 - 107
src/custom/restcontroller/webmanage/sale/order/OrderItems.java

@@ -17,10 +17,12 @@ import common.YosException;
 import common.annotation.API;
 import common.annotation.CACHEING;
 import common.annotation.CACHEING_CLEAN;
-import common.data.Row;
-import common.data.Rows;
-import common.data.RowsMap;
-import common.data.SQLFactory;
+import common.data.*;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.DataFormat;
+import org.apache.poi.xssf.usermodel.XSSFCellStyle;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import restcontroller.R;
 import restcontroller.webmanage.sale.aftersalesmag.twriteoffbill_orderchange;
 import restcontroller.webmanage.sale.rebate.Rebate;
@@ -63,27 +65,27 @@ public class OrderItems extends Controller {
 
         String type = orderRows.get(0).getString("type");
         JSONArray items = content.getJSONArray("items");
-        Long sa_promotionid=orderRows.get(0).getLong("sa_promotionid");
+        Long sa_promotionid = orderRows.get(0).getLong("sa_promotionid");
 
 
         ArrayList<String> sqlList = new ArrayList<>();
         //查询erp库存
 //        Invbal.selectErpInvbal(this, items);
 
-        Rows itemRows =dbConnect.runSqlQuery("select itemid,orderaddqty,orderminqty,itemno from plm_item where siteid='"+siteid+"'");
-        RowsMap itemRowsMap= itemRows.toRowsMap("itemid");
+        Rows itemRows = dbConnect.runSqlQuery("select itemid,orderaddqty,orderminqty,itemno from plm_item where siteid='" + siteid + "'");
+        RowsMap itemRowsMap = itemRows.toRowsMap("itemid");
         for (Object obj : items) {
             JSONObject item = (JSONObject) obj;
             Long itemid = item.getLong("itemid");
             Long sa_orderitemsid = item.getLong("sa_orderitemsid");
             BigDecimal qty = item.getBigDecimalValue("qty");
-            if(!type.equals("促销订单")){
-                if(itemRowsMap.containsKey(item.getString("itemid"))){
-                    if(itemRowsMap.get(item.getString("itemid")).isNotEmpty()){
-                        BigDecimal orderaddqty =itemRowsMap.get(item.getString("itemid")).get(0).getBigDecimal("orderaddqty");
-                        BigDecimal orderminqty =itemRowsMap.get(item.getString("itemid")).get(0).getBigDecimal("orderminqty");
-                        if(((qty.subtract(orderminqty)).remainder(orderaddqty)).compareTo(BigDecimal.ZERO)!=0){
-                            return getErrReturnObject().setErrMsg("品号为"+itemRowsMap.get(item.getString("itemid")).get(0).getString("itemno")+"的商品数量不符合该商品的起订量和增量").toString();
+            if (!type.equals("促销订单")) {
+                if (itemRowsMap.containsKey(item.getString("itemid"))) {
+                    if (itemRowsMap.get(item.getString("itemid")).isNotEmpty()) {
+                        BigDecimal orderaddqty = itemRowsMap.get(item.getString("itemid")).get(0).getBigDecimal("orderaddqty");
+                        BigDecimal orderminqty = itemRowsMap.get(item.getString("itemid")).get(0).getBigDecimal("orderminqty");
+                        if (((qty.subtract(orderminqty)).remainder(orderaddqty)).compareTo(BigDecimal.ZERO) != 0) {
+                            return getErrReturnObject().setErrMsg("品号为" + itemRowsMap.get(item.getString("itemid")).get(0).getString("itemno") + "的商品数量不符合该商品的起订量和增量").toString();
                         }
 
                     }
@@ -91,31 +93,31 @@ public class OrderItems extends Controller {
             }
             //商品信息
             Row itemRow = getItemRow(itemid);
-            Rows promotionitems =dbConnect.runSqlQuery("select * from sa_promotion_items where siteid='"+siteid+"' and sa_promotionid="+sa_promotionid);
+            Rows promotionitems = dbConnect.runSqlQuery("select * from sa_promotion_items where siteid='" + siteid + "' and sa_promotionid=" + sa_promotionid);
             RowsMap promotionitemsRowsMap = promotionitems.toRowsMap("itemid");
-            if(type.equals("促销订单")){
-                if(promotionitemsRowsMap.containsKey(item.getString("itemid"))){
-                    if(promotionitemsRowsMap.get(item.getString("itemid")).isNotEmpty()){
-                        BigDecimal saledqty =promotionitemsRowsMap.get(item.getString("itemid")).get(0).getBigDecimal("saledqty");
-                        BigDecimal groupqty =promotionitemsRowsMap.get(item.getString("itemid")).get(0).getBigDecimal("groupqty");
-                        boolean islimit =promotionitemsRowsMap.get(item.getString("itemid")).get(0).getBoolean("islimit");
-                        if(islimit){
-                            if(groupqty.compareTo(saledqty.add(qty))<0){
-                                return getErrReturnObject().setErrMsg(itemRow.getString("itemno")+"商品数量已超过促销活动的限定数量【"+groupqty.subtract(saledqty)+"】,无法新建").toString();
+            if (type.equals("促销订单")) {
+                if (promotionitemsRowsMap.containsKey(item.getString("itemid"))) {
+                    if (promotionitemsRowsMap.get(item.getString("itemid")).isNotEmpty()) {
+                        BigDecimal saledqty = promotionitemsRowsMap.get(item.getString("itemid")).get(0).getBigDecimal("saledqty");
+                        BigDecimal groupqty = promotionitemsRowsMap.get(item.getString("itemid")).get(0).getBigDecimal("groupqty");
+                        boolean islimit = promotionitemsRowsMap.get(item.getString("itemid")).get(0).getBoolean("islimit");
+                        if (islimit) {
+                            if (groupqty.compareTo(saledqty.add(qty)) < 0) {
+                                return getErrReturnObject().setErrMsg(itemRow.getString("itemno") + "商品数量已超过促销活动的限定数量【" + groupqty.subtract(saledqty) + "】,无法新建").toString();
                             }
                         }
-            }
+                    }
                 }
             }
 
-            BigDecimal price1=new BigDecimal(0);
+            BigDecimal price1 = new BigDecimal(0);
             SQLFactory sqlFactory = new SQLFactory(this, "订单商品明细_新增");
             if (sa_orderitemsid <= 0) {
                 Rows rows = dbConnect.runSqlQuery("SELECT sa_orderitemsid,price from sa_orderitems WHERE siteid='" + siteid + "' and itemid=" + itemid + " and sa_orderid=" + sa_orderid);
                 if (rows.isEmpty()) {
                     sa_orderitemsid = createTableID("sa_orderitems");
                 } else {
-                    price1=rows.get(0).getBigDecimal("price");
+                    price1 = rows.get(0).getBigDecimal("price");
                     sa_orderitemsid = rows.get(0).getLong("sa_orderitemsid");
                     sqlFactory = new SQLFactory(this, "订单商品明细_更新");
                 }
@@ -178,43 +180,43 @@ public class OrderItems extends Controller {
 //                        break;
                     case "促销订单":
                         defaultprice = itemPrice.getGraderateprice();
-                        price= itemPrice.getPromotionPrice(sa_promotionid);
+                        price = itemPrice.getPromotionPrice(sa_promotionid);
                         break;
                     default:
                         defaultprice = itemPrice.getGraderateprice();
-                        price= itemPrice.getGraderateprice();
+                        price = itemPrice.getGraderateprice();
                 }
             } else {
                 price = item.getBigDecimalValue("price");
-                if(price.compareTo(price1)!=0){
-                    sqlList.add(DataContrlLog.createLog(this, "sa_order", sa_orderid, "订单商品【"+itemRow.getString("itemname")+"】由单价:"+price1+"修改为单价:"+price, "订单修改单价").getSQL());
+                if (price.compareTo(price1) != 0) {
+                    sqlList.add(DataContrlLog.createLog(this, "sa_order", sa_orderid, "订单商品【" + itemRow.getString("itemname") + "】由单价:" + price1 + "修改为单价:" + price, "订单修改单价").getSQL());
                 }
                 defaultprice = item.getBigDecimalValue("defaultprice");
 //                if (!type.equals("特殊订单") && defaultprice.compareTo(rows.get(0).getBigDecimal("defaultprice")) != 0 && defaultprice.compareTo(itemPrice.getContractprice()) < 0) {
 //                    return getErrReturnObject().setErrMsg("调整价格不可小于协议价").toString();
 //                }
             }
-            if(type.equals("特殊订单")){
+            if (type.equals("特殊订单")) {
                 if (item.containsKey("defaultprice")) {
-                    if(item.getBigDecimalValue("price").compareTo(BigDecimal.ZERO)>0 && item.getBigDecimalValue("amount").compareTo(BigDecimal.ZERO)<=0){
+                    if (item.getBigDecimalValue("price").compareTo(BigDecimal.ZERO) > 0 && item.getBigDecimalValue("amount").compareTo(BigDecimal.ZERO) <= 0) {
                         sqlFactory.addParameter("price", item.getBigDecimalValue("price"));
                         //折前金额(元)
                         sqlFactory.addParameter("amount", price.multiply(qty));
-                    }else if(item.getBigDecimalValue("price").compareTo(BigDecimal.ZERO)<=0 && item.getBigDecimalValue("amount").compareTo(BigDecimal.ZERO)>0){
-                        sqlFactory.addParameter("price",item.getBigDecimalValue("amount").divide(qty,4));
+                    } else if (item.getBigDecimalValue("price").compareTo(BigDecimal.ZERO) <= 0 && item.getBigDecimalValue("amount").compareTo(BigDecimal.ZERO) > 0) {
+                        sqlFactory.addParameter("price", item.getBigDecimalValue("amount").divide(qty, 4));
                         //折前金额(元)
                         sqlFactory.addParameter("amount", item.getBigDecimalValue("amount"));
-                    }else{
+                    } else {
                         sqlFactory.addParameter("price", price);
                         //折前金额(元)
                         sqlFactory.addParameter("amount", price.multiply(qty));
                     }
-                }else {
+                } else {
                     sqlFactory.addParameter("price", price);
                     //折前金额(元)
                     sqlFactory.addParameter("amount", price.multiply(qty));
                 }
-            }else {
+            } else {
                 sqlFactory.addParameter("price", price);
                 //折前金额(元)
                 sqlFactory.addParameter("amount", price.multiply(qty));
@@ -329,31 +331,31 @@ public class OrderItems extends Controller {
     public String freeze() throws YosException {
         Long sa_orderid = content.getLong("sa_orderid");
         JSONArray sa_orderitemsids = content.getJSONArray("sa_orderitemsids");
-        boolean isfreeze=content.getBooleanValue("isfreeze");
-        Rows orderRows = dbConnect.runSqlQuery("select * from sa_order where sa_orderid="+sa_orderid+ " and siteid='"+siteid+"'");
-        if(!orderRows.isEmpty()){
+        boolean isfreeze = content.getBooleanValue("isfreeze");
+        Rows orderRows = dbConnect.runSqlQuery("select * from sa_order where sa_orderid=" + sa_orderid + " and siteid='" + siteid + "'");
+        if (!orderRows.isEmpty()) {
 
-            if(!orderRows.get(0).getString("status").equals("审核")){
-                if(isfreeze){
+            if (!orderRows.get(0).getString("status").equals("审核")) {
+                if (isfreeze) {
                     return getErrReturnObject().setErrMsg("非审核状态无法进行冻结").toString();
-                }else {
+                } else {
                     return getErrReturnObject().setErrMsg("非审核状态无法进行反冻结").toString();
                 }
 
             }
-        }else {
+        } else {
             return getErrReturnObject().setErrMsg("该订单不存在").toString();
         }
         SQLFactory sqlFactory;
-        if(isfreeze){
-             sqlFactory = new SQLFactory(this, "订单商品明细_冻结");
-        }else {
-             sqlFactory = new SQLFactory(this, "订单商品明细_反冻结");
+        if (isfreeze) {
+            sqlFactory = new SQLFactory(this, "订单商品明细_冻结");
+        } else {
+            sqlFactory = new SQLFactory(this, "订单商品明细_反冻结");
         }
         sqlFactory.addParameter("siteid", siteid);
         sqlFactory.addParameter_in("sa_orderitemsid", sa_orderitemsids.toArray());
         String sql = sqlFactory.getSQL();
-         System.out.println(sql);
+        System.out.println(sql);
         dbConnect.runSqlUpdate(sql);
         return getSucReturnObject().toString();
     }
@@ -362,23 +364,23 @@ public class OrderItems extends Controller {
     @CACHEING_CLEAN(apiClass = {Order.class, OrderItems.class, restcontroller.sale.order.Order.class, ToolBill.class})
     public String updateOrderItemsDiscountrate() throws YosException {
         Long sa_orderid = content.getLong("sa_orderid");
-        BigDecimal discountrate =content.getBigDecimal("discountrate");
-        Rows orderRows = dbConnect.runSqlQuery("select * from sa_order where sa_orderid="+sa_orderid+ " and siteid='"+siteid+"'");
-        if(!orderRows.isEmpty()){
-            if(!orderRows.get(0).getString("status").equals("新建")){
+        BigDecimal discountrate = content.getBigDecimal("discountrate");
+        Rows orderRows = dbConnect.runSqlQuery("select * from sa_order where sa_orderid=" + sa_orderid + " and siteid='" + siteid + "'");
+        if (!orderRows.isEmpty()) {
+            if (!orderRows.get(0).getString("status").equals("新建")) {
                 return getErrReturnObject().setErrMsg("非新建状态无法进行商品行折扣变更").toString();
             }
-        }else {
+        } else {
             return getErrReturnObject().setErrMsg("该订单不存在").toString();
         }
 
-        Rows orderItemsRows = dbConnect.runSqlQuery("select * from sa_orderitems where sa_orderid="+sa_orderid+ " and siteid='"+siteid+"'");
-        ArrayList<String> sqlList =new ArrayList<>();
-        if(!orderItemsRows.isEmpty()){
-            for (Row row :orderItemsRows) {
-                BigDecimal price =row.getBigDecimal("price").multiply(discountrate);
-                BigDecimal amount =row.getBigDecimal("amount").multiply(discountrate);
-                sqlList.add("update sa_orderitems set price="+price+",amount="+amount+" where sa_orderitemsid="+row.getLong("sa_orderitemsid"));
+        Rows orderItemsRows = dbConnect.runSqlQuery("select * from sa_orderitems where sa_orderid=" + sa_orderid + " and siteid='" + siteid + "'");
+        ArrayList<String> sqlList = new ArrayList<>();
+        if (!orderItemsRows.isEmpty()) {
+            for (Row row : orderItemsRows) {
+                BigDecimal price = row.getBigDecimal("price").multiply(discountrate);
+                BigDecimal amount = row.getBigDecimal("amount").multiply(discountrate);
+                sqlList.add("update sa_orderitems set price=" + price + ",amount=" + amount + " where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
             }
         }
         dbConnect.runSqlUpdate(sqlList);
@@ -431,26 +433,26 @@ public class OrderItems extends Controller {
         sqlFactory.addParameter_SQL("where", where);
         Rows rows = dbConnect.runSqlQuery(sqlFactory);
         ArrayList<Long> ids = rows.toArrayList("itemid", new ArrayList<>());
-        RowsMap rowsMap =rows.toRowsMap("itemno");
+        RowsMap rowsMap = rows.toRowsMap("itemno");
 
-        SQLFactory sqlFactory1 =new SQLFactory(this,"商品发货数量汇总");
+        SQLFactory sqlFactory1 = new SQLFactory(this, "商品发货数量汇总");
         sqlFactory1.addParameter("siteid", siteid);
         Rows sumQtyRows = dbConnect.runSqlQuery(sqlFactory1);
-        RowsMap sumQtyRowsMap= sumQtyRows.toRowsMap("itemno");
+        RowsMap sumQtyRowsMap = sumQtyRows.toRowsMap("itemno");
 
-        ERPDocking erpDocking =new ERPDocking();
-        JSONArray jsonArray =new JSONArray();
-        if(rows.toJsonArray("itemno").size()!=0){
+        ERPDocking erpDocking = new ERPDocking();
+        JSONArray jsonArray = new JSONArray();
+        if (rows.toJsonArray("itemno").size() != 0) {
             if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true")) {
-                jsonArray=erpDocking.getErpIcinvbalRows(200000, 1,rows.toJsonArray("itemno"));
+                jsonArray = erpDocking.getErpIcinvbalRows(200000, 1, rows.toJsonArray("itemno"));
             }
         }
 
-        if(!jsonArray.isEmpty()){
-            for (Object object:jsonArray) {
-                JSONObject jsonObject =(JSONObject)object;
-                if(rowsMap.containsKey(jsonObject.getString("fitemno"))){
-                    if(rowsMap.get(jsonObject.getString("fitemno")).isNotEmpty()){
+        if (!jsonArray.isEmpty()) {
+            for (Object object : jsonArray) {
+                JSONObject jsonObject = (JSONObject) object;
+                if (rowsMap.containsKey(jsonObject.getString("fitemno"))) {
+                    if (rowsMap.get(jsonObject.getString("fitemno")).isNotEmpty()) {
                         rowsMap.get(jsonObject.getString("fitemno")).get(0).put("invbalqty", jsonObject.getBigDecimalValue("fqty"));
                     }
                 }
@@ -459,13 +461,13 @@ public class OrderItems extends Controller {
         //查询附件
         RowsMap attinfoRowsMap = getAttachmentUrl("plm_item", ids);
         for (Row row : rows) {
-            if(sumQtyRowsMap.get(row.getString("itemno")).isNotEmpty()){
+            if (sumQtyRowsMap.get(row.getString("itemno")).isNotEmpty()) {
                 row.put("unsoldqty", sumQtyRowsMap.get(row.getString("itemno")).get(0).getBigDecimal("qty"));
-            }else {
+            } else {
                 row.put("unsoldqty", BigDecimal.ZERO);
             }
-            if(!row.containsKey("invbalqty")){
-                row.put("invbalqty",BigDecimal.ZERO);
+            if (!row.containsKey("invbalqty")) {
+                row.put("invbalqty", BigDecimal.ZERO);
             }
             row.put("attinfos", attinfoRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
             row.put("contractprice", 0);
@@ -492,7 +494,7 @@ public class OrderItems extends Controller {
     @API(title = "查询订单所有明细列表", apiversion = R.ID20230508111703.v1.class)
     public String selectAllList() throws YosException, IOException {
         StringBuffer where = new StringBuffer(" 1=1 ");
-        if(sys_enterpriseid>0) {
+        if (sys_enterpriseid > 0) {
             where.append(" and t5.sys_enterpriseid ='").append(sys_enterpriseid).append("' ");
         }
         if (content.containsKey("where")) {
@@ -526,26 +528,26 @@ public class OrderItems extends Controller {
         sqlFactory.addParameter_SQL("where", where);
         Rows rows = dbConnect.runSqlQuery(sqlFactory);
         ArrayList<Long> ids = rows.toArrayList("itemid", new ArrayList<>());
-        RowsMap rowsMap =rows.toRowsMap("itemno");
+        RowsMap rowsMap = rows.toRowsMap("itemno");
 
-        SQLFactory sqlFactory1 =new SQLFactory(this,"商品发货数量汇总");
+        SQLFactory sqlFactory1 = new SQLFactory(this, "商品发货数量汇总");
         sqlFactory1.addParameter("siteid", siteid);
         Rows sumQtyRows = dbConnect.runSqlQuery(sqlFactory1);
-        RowsMap sumQtyRowsMap= sumQtyRows.toRowsMap("itemno");
+        RowsMap sumQtyRowsMap = sumQtyRows.toRowsMap("itemno");
 
-        ERPDocking erpDocking =new ERPDocking();
-        JSONArray jsonArray =new JSONArray();
-        if(rows.toJsonArray("itemno").size()!=0){
+        ERPDocking erpDocking = new ERPDocking();
+        JSONArray jsonArray = new JSONArray();
+        if (rows.toJsonArray("itemno").size() != 0) {
             if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true")) {
-                jsonArray=erpDocking.getErpIcinvbalRows(200000, 1,rows.toJsonArray("itemno"));
+                jsonArray = erpDocking.getErpIcinvbalRows(200000, 1, rows.toJsonArray("itemno"));
             }
         }
 
-        if(!jsonArray.isEmpty()){
-            for (Object object:jsonArray) {
-                JSONObject jsonObject =(JSONObject)object;
-                if(rowsMap.containsKey(jsonObject.getString("fitemno"))){
-                    if(rowsMap.get(jsonObject.getString("fitemno")).isNotEmpty()){
+        if (!jsonArray.isEmpty()) {
+            for (Object object : jsonArray) {
+                JSONObject jsonObject = (JSONObject) object;
+                if (rowsMap.containsKey(jsonObject.getString("fitemno"))) {
+                    if (rowsMap.get(jsonObject.getString("fitemno")).isNotEmpty()) {
                         rowsMap.get(jsonObject.getString("fitemno")).get(0).put("invbalqty", jsonObject.getBigDecimalValue("fqty"));
                     }
                 }
@@ -554,29 +556,41 @@ public class OrderItems extends Controller {
         //查询附件
         RowsMap attinfoRowsMap = getAttachmentUrl("plm_item", ids);
         for (Row row : rows) {
-            if(sumQtyRowsMap.get(row.getString("itemno")).isNotEmpty()){
+            if (sumQtyRowsMap.get(row.getString("itemno")).isNotEmpty()) {
                 row.put("unsoldqty", sumQtyRowsMap.get(row.getString("itemno")).get(0).getBigDecimal("qty"));
-            }else {
+            } else {
                 row.put("unsoldqty", BigDecimal.ZERO);
             }
-            if(!row.containsKey("invbalqty")){
-                row.put("invbalqty",BigDecimal.ZERO);
+            if (!row.containsKey("invbalqty")) {
+                row.put("invbalqty", BigDecimal.ZERO);
             }
             row.put("attinfos", attinfoRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
             row.put("contractprice", 0);
         }
 
         if (isExport) {
-            //去除不需要导出项
-            String[] removeFieldList = {"sa_orderitemsid", "itemid", "sa_orderid", "candispatchqty", "cansaleqty",
-                    "totalaty", "orderminqty_auxunit", "orderminqty", "orderaddqty_auxunit", "orderaddqty",
-                    "spec", "delivery", "erpitemno", "erpitemname", "material", "standards", "stockstatus"};
-            for (String key : removeFieldList) {
-                rows.getFieldList().remove(key);
-            }
+            ExcelFactory excelFactory = new ExcelFactory("订单明细查询");
 
-            Rows uploadRows = uploadExcelToObs("order", "订单商品明细_所有列表", rows, getTitleMap());
-            return getSucReturnObject().setData(uploadRows).toString();
+            XSSFSheet sheet = excelFactory.getXssfWorkbook().createSheet("Sheet1");
+            XSSFWorkbook xssfFWorkbook = excelFactory.getXssfWorkbook();
+
+            CellStyle style = xssfFWorkbook.createCellStyle();
+            // 设置为文本格式,防止身份证号变成科学计数法
+            DataFormat format = xssfFWorkbook.createDataFormat();
+            style.setDataFormat(format.getFormat("@"));
+            // 对单独某一列进行样式赋值,第一个参数为列数,第二个参数为样式
+            sheet.setDefaultColumnStyle(0, style);
+            ExportDown.setBatchDetailSheetColumn1(sheet);// 设置工作薄列宽
+            XSSFCellStyle titleCellStyle2 = ExportDown.createTitleCellStyle2(xssfFWorkbook);
+            XSSFCellStyle titleCellStyle3 = ExportDown.createBodyCellStyle(xssfFWorkbook);
+            ExportDown.batchDetail(sheet, titleCellStyle2, titleCellStyle3, rows);// 写入标题
+
+            Rows uploadRows = uploadExcelToObs(excelFactory);
+            String url = "";
+            if (!uploadRows.isEmpty()) {
+                url = uploadRows.get(0).getString("url");
+            }
+            return getSucReturnObject().setData(url).toString();
         }
 
 
@@ -657,7 +671,7 @@ public class OrderItems extends Controller {
             case "特殊订单":
                 sqlFactory = new SQLFactory(this, "查询可添加商品列表_特殊订单", pageSize, pageNumber, pageSorting);
                 sqlFactory.addParameter("tradefield", tradefield);
-                if(sys_enterpriseid1>0){
+                if (sys_enterpriseid1 > 0) {
                     where.append(" and t1.isonsale ='1' ");
                 }
                 break;
@@ -692,9 +706,9 @@ public class OrderItems extends Controller {
             row.put("attinfos", attinfoRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
             row.put("tradefield", tradefieldRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
             row.put("brand", brandRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
-            if( itemPriceRowsMap.containsKey(row.getLong("itemid"))){
+            if (itemPriceRowsMap.containsKey(row.getLong("itemid"))) {
                 row.put("price", itemPriceRowsMap.get(row.getLong("itemid")).getPrice());
-            }else {
+            } else {
                 row.put("price", 0);
             }
 

+ 0 - 1
src/custom/restcontroller/webmanage/sale/order/SQL/促销方案列表查询.sql

@@ -15,7 +15,6 @@ FROM sa_promotion t1
          LEFT JOIN sa_accountclass t3 ON t1.sa_accountclassid = t3.sa_accountclassid
     AND t1.siteid = t3.siteid
 where t1.siteid = $siteid$
-
   and t1.status = '发布'
   and t1.authmethod = 0
   and exists(select 1

+ 5 - 3
src/custom/restcontroller/webmanage/sale/order/SQL/订单商品明细_所有列表.sql

@@ -37,7 +37,7 @@ SELECT t1.sa_orderitemsid,
        t3.orderaddqty_auxunit,
        t3.orderaddqty,
        t3.spec,
-       ifnull(t3.packageqty,0) packageqty,
+       ifnull(t3.packageqty, 0)       packageqty,
        ifnull(t3.delivery, 0)         delivery,
        t4.erpitemno,
        t4.erpitemname,
@@ -50,6 +50,7 @@ SELECT t1.sa_orderitemsid,
        t5.billdate,
        t5.status,
        t5.sonum,
+       t5.tradefield,
        t6.agentnum,
        t7.enterprisename,
        (SELECT (case
@@ -62,6 +63,7 @@ from sa_orderitems t1
          LEFT JOIN plm_itemextend t4 on t4.itemid = t1.itemid and t4.siteid = t1.siteid
          LEFT JOIN sa_order t5 on t5.sa_orderid = t1.sa_orderid and t5.siteid = t1.siteid
          LEFT JOIN sa_agents t6 on t6.sys_enterpriseid = t5.sys_enterpriseid and t6.siteid = t5.siteid
-          LEFT JOIN sys_enterprise t7 on t7.sys_enterpriseid = t5.sys_enterpriseid and t7.siteid = t5.siteid
+         LEFT JOIN sys_enterprise t7 on t7.sys_enterpriseid = t5.sys_enterpriseid and t7.siteid = t5.siteid
 where t1.siteid = $siteid$
-  and $where$ and t5.status in ('审核','关闭')
+  and $where$
+  and t5.status in ('审核', '关闭')