From 17ef61529e64c4a878e3a8d71377d10d7c52ea6e Mon Sep 17 00:00:00 2001
From: liuchen864 <23082234@qq.com>
Date: Tue, 14 May 2024 13:55:00 +0800
Subject: [PATCH] =?UTF-8?q?excel=E6=A8=A1=E6=9D=BF=E5=AF=BC=E5=87=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 7 +
win-admin/pom.xml | 6 +
.../web/controller/base/ExcelController.java | 820 ++++++++++++++++++
win-admin/src/main/resources/application.yml | 2 +-
win-admin/src/main/resources/changchun.xls | Bin 0 -> 63488 bytes
.../src/main/resources/foshan_qingdao.xls | Bin 0 -> 42496 bytes
win-admin/src/main/resources/guowai1.xls | Bin 0 -> 41984 bytes
win-admin/src/main/resources/guowai2.xlsx | Bin 0 -> 12583 bytes
.../win/framework/config/SecurityConfig.java | 2 +-
9 files changed, 835 insertions(+), 2 deletions(-)
create mode 100644 win-admin/src/main/java/com/win/web/controller/base/ExcelController.java
create mode 100644 win-admin/src/main/resources/changchun.xls
create mode 100644 win-admin/src/main/resources/foshan_qingdao.xls
create mode 100644 win-admin/src/main/resources/guowai1.xls
create mode 100644 win-admin/src/main/resources/guowai2.xlsx
diff --git a/pom.xml b/pom.xml
index b47b826..f18cbd7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -220,6 +220,13 @@
${win.version}
+
+
+ com.alibaba
+ easyexcel
+ 3.3.4
+
+
diff --git a/win-admin/pom.xml b/win-admin/pom.xml
index ba8a1d4..fe3abf4 100644
--- a/win-admin/pom.xml
+++ b/win-admin/pom.xml
@@ -47,6 +47,12 @@
com.win
win-generator
+
+ com.alibaba
+ easyexcel-core
+ 3.3.4
+ compile
+
diff --git a/win-admin/src/main/java/com/win/web/controller/base/ExcelController.java b/win-admin/src/main/java/com/win/web/controller/base/ExcelController.java
new file mode 100644
index 0000000..67b14ce
--- /dev/null
+++ b/win-admin/src/main/java/com/win/web/controller/base/ExcelController.java
@@ -0,0 +1,820 @@
+package com.win.web.controller.base;
+
+import com.alibaba.excel.EasyExcelFactory;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.support.ExcelTypeEnum;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.metadata.fill.FillConfig;
+import com.alibaba.excel.write.metadata.fill.FillWrapper;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.win.common.annotation.Log;
+import com.win.common.config.WinConfig;
+import com.win.common.core.domain.AjaxResult;
+import com.win.common.enums.BusinessType;
+import com.win.system.service.LinuxAccessService;
+import com.win.system.service.QadAccessService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.TreeMap;
+
+@Slf4j
+@RestController
+@RequestMapping("/excel")
+public class ExcelController {
+
+ private static final Logger logger = LoggerFactory.getLogger("sys-user");
+
+ @Autowired
+ private LinuxAccessService linuxAccessService;
+ @Autowired
+ private QadAccessService qadAccessService;
+
+ /**
+ * 导出长春模板。
+ *
+ * @param body 请求主体
+ * @return 结果
+ */
+ @PostMapping("export")
+ @Log(title = "导出订单",businessType = BusinessType.EXPORT,isManager = false)
+ public AjaxResult export(@RequestBody String body) throws IOException {
+ JSONObject jsonObject = JSONObject.parseObject(body);
+ String orderNo = jsonObject.getString("orderNo");
+ String type = jsonObject.getString("type");
+// String key = "";
+// for(String keyTemp : jsonObject.keySet()) {
+// jsonObject = JSONObject.parseObject(jsonObject.getString(keyTemp));
+// key = keyTemp;
+// }
+// String companyCode = "LEARPROD-CCJV";
+// String interfaceName = "supplierrsexport";
+// String domain = "CCJV";
+// QueryWrapper linuxAccessQueryWrapper = new QueryWrapper<>();
+// linuxAccessQueryWrapper.eq("company_code",companyCode);
+// linuxAccessQueryWrapper.eq("uri",interfaceName);
+// LinuxAccess linuxAccess = linuxAccessService.getOne(linuxAccessQueryWrapper);
+// if(linuxAccess == null) {
+// return AjaxResult.error(HttpStatus.LINUX_ACCESS_ERROR,"linux访问控制不存在");
+// }
+// QueryWrapper qadAccessQueryWrapper = new QueryWrapper<>();
+// qadAccessQueryWrapper.eq("company_code",companyCode);
+// qadAccessQueryWrapper.eq("domain",domain);
+// QadAccess qadAccess = qadAccessService.getOne(qadAccessQueryWrapper);
+// if(qadAccess == null) {
+// return AjaxResult.error(HttpStatus.QAD_ACCESS_ERROR,"QAD_ACCESS_ERROR");
+// }
+// //生成traceid
+// String traceid = jsonObject.getString("traceid");
+// jsonObject.remove("traceid");
+// jsonObject.remove("dataid");
+// jsonObject.remove("company_code");
+// jsonObject.remove("domain");
+// String inJson = "{\"" + key + "\":"+ jsonObject+"}";
+// log.info("inJson: {}",inJson);
+// AjaxResult ajaxResult = linuxAccessService.executeCommand(linuxAccess,qadAccess,traceid,inJson,domain);
+// jsonObject = JSONObject.parseObject(ajaxResult.get("msg").toString());
+ jsonObject = JSONObject.parseObject("{\"dssupplierrs\":{\"ttsupplierrsheader\":[{\"schm_header_site\":\"30G1\",\"schm_header_order\":\"BES0003\",\"schm_header_vend\":\"JVRM0003\",\"schm_header_vendname\":\"Lear Besigheim\",\"schm_header_vendaddr\":\"ferdinand-porsche-strabe 274354 besigheim\",\"schm_header_vendphone\":\"\",\"schm_header_vendfax\":\"\",\"schm_header_vendcontact\":\"Lear Besigheim\",\"schm_header_cust\":\"30G1\",\"schm_header_custname\":\"ChangChun JV\",\"schm_header_custaddr\":\"\",\"schm_header_custphone\":\"\",\"schm_header_custfax\":\"\",\"schm_header_custcontact\":\"\",\"schm_header_lastrec\":\"J02709T*4681694\",\"schm_header_title\":\"SUPPLIER SCHEDULE 订单/ MATERIAL RELEASE 供应商发货日程\",\"schm_header_buyer\":\"P2\",\"schm_header_arrive_ch\":\"\",\"schm_header_arrive_us\":\"\",\"schm_header_shipto\":\"30G1\",\"schm_header_dock\":\"\",\"schm_header_rlse_id\":\"20240511-002\",\"schm_header_cr_date\":\"2024-05-11\",\"schm_header_cr_time\":\"17:34:09\",\"schm_header_eff_start\":\"2024-05-11\",\"schm_header_eff_end\":null,\"schm_header_status\":\"Success\"}],\"ttsupplierrsline\":[{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":1,\"schd_line_part\":\"2100223N\",\"schd_line_part_desc\":\"前座安全带锁扣固定螺钉\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1972000,\"schd_line_cum_qty\":1972000,\"schd_line_req_qty\":11,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-06-24\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":48000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":1,\"schd_line_part\":\"2100223N\",\"schd_line_part_desc\":\"前座安全带锁扣固定螺钉\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1972000,\"schd_line_cum_qty\":1972000,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-08-19\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":48000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":1,\"schd_line_part\":\"2100223N\",\"schd_line_part_desc\":\"前座安全带锁扣固定螺钉\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1972000,\"schd_line_cum_qty\":1972000,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-09-30\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":48000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":1,\"schd_line_part\":\"2100223N\",\"schd_line_part_desc\":\"前座安全带锁扣固定螺钉\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1972000,\"schd_line_cum_qty\":1972000,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-01-06\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":48000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":1,\"schd_line_part\":\"2100223N\",\"schd_line_part_desc\":\"前座安全带锁扣固定螺钉\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1972000,\"schd_line_cum_qty\":1972000,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-02-24\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":48000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":2,\"schd_line_part\":\"2100237N\",\"schd_line_part_desc\":\"后靠背安全带总成固定螺母\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":947158,\"schd_line_cum_qty\":947158,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-07-15\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":60000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":2,\"schd_line_part\":\"2100237N\",\"schd_line_part_desc\":\"后靠背安全带总成固定螺母\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":947158,\"schd_line_cum_qty\":947158,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-12-23\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":60000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":3,\"schd_line_part\":\"2200153N\",\"schd_line_part_desc\":\"波纹管D3\\\\/18\",\"schd_line_pcr_date\":null,\"schd_line_pcr_qty\":0,\"schd_line_cum_qty\":0,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":null,\"schd_line_fc_qual\":\"\",\"schd_line_qty\":0,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":5,\"schd_line_part\":\"4H0 972 081\",\"schd_line_part_desc\":\"D18波形管带子卡\",\"schd_line_pcr_date\":null,\"schd_line_pcr_qty\":0,\"schd_line_cum_qty\":0,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":null,\"schd_line_fc_qual\":\"\",\"schd_line_qty\":0,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":11,\"schd_line_part\":\"8T0 972 847 B\",\"schd_line_part_desc\":\"线束管夹D24\",\"schd_line_pcr_date\":null,\"schd_line_pcr_qty\":0,\"schd_line_cum_qty\":0,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":null,\"schd_line_fc_qual\":\"\",\"schd_line_qty\":0,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":14,\"schd_line_part\":\"N 900 880 01\",\"schd_line_part_desc\":\"螺母 M16\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":881140,\"schd_line_cum_qty\":881140,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-05-11\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":60000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-001\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":35,\"schd_line_part\":\"8W0 881 775 F\",\"schd_line_part_desc\":\"通风前靠背发泡左\",\"schd_line_pcr_date\":null,\"schd_line_pcr_qty\":0,\"schd_line_cum_qty\":0,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":null,\"schd_line_fc_qual\":\"\",\"schd_line_qty\":0,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":36,\"schd_line_part\":\"8W0 881 776 F\",\"schd_line_part_desc\":\"通风前靠背发泡右\",\"schd_line_pcr_date\":null,\"schd_line_pcr_qty\":0,\"schd_line_cum_qty\":0,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":null,\"schd_line_fc_qual\":\"\",\"schd_line_qty\":0,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":40,\"schd_line_part\":\"8W0 881 361 D\",\"schd_line_part_desc\":\"通风座椅前座发泡\",\"schd_line_pcr_date\":null,\"schd_line_pcr_qty\":0,\"schd_line_cum_qty\":0,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":null,\"schd_line_fc_qual\":\"\",\"schd_line_qty\":0,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":45,\"schd_line_part\":\"8W0 881 969 T QAU\",\"schd_line_part_desc\":\"前靠背护板带通风\",\"schd_line_pcr_date\":null,\"schd_line_pcr_qty\":0,\"schd_line_cum_qty\":0,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":null,\"schd_line_fc_qual\":\"\",\"schd_line_qty\":0,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-05-13\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-05-20\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-05-27\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-06-03\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-06-10\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-06-17\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-06-24\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-07-01\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-07-15\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":12096,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-07-22\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-07-29\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-08-05\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":6720,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-08-12\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":6720,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-08-19\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":6720,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-08-26\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":6720,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-09-02\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-09-09\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":6720,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-09-16\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":5376,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-09-23\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":6720,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-09-30\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":15456,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-11-18\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":4032,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-11-25\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":5376,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-12-02\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":6720,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-12-09\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":5376,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-12-16\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-12-23\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-12-30\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":5376,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-01-06\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":5376,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-01-13\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":5376,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-01-20\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":5376,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-01-27\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":6720,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-02-03\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":4032,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-02-10\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":5376,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-02-17\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":6720,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-02-24\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":6720,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-03-03\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":6720,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-03-17\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":6720,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-03-24\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":6720,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-03-31\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":6720,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-04-07\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":6720,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-04-14\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":6720,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":54,\"schd_line_part\":\"4M0 881 590 4PK\",\"schd_line_part_desc\":\"靠背上端盖板\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1066478,\"schd_line_cum_qty\":1066478,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-04-21\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":2688,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":59,\"schd_line_part\":\"8W0 881 367\",\"schd_line_part_desc\":\"风扇保护帽\",\"schd_line_pcr_date\":null,\"schd_line_pcr_qty\":0,\"schd_line_cum_qty\":0,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":null,\"schd_line_fc_qual\":\"\",\"schd_line_qty\":0,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":60,\"schd_line_part\":\"4H0 941 117\",\"schd_line_part_desc\":\"胶皮钉\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":193700,\"schd_line_cum_qty\":193700,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-05-20\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":2000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":60,\"schd_line_part\":\"4H0 941 117\",\"schd_line_part_desc\":\"胶皮钉\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":193700,\"schd_line_cum_qty\":193700,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-06-03\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":3000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":60,\"schd_line_part\":\"4H0 941 117\",\"schd_line_part_desc\":\"胶皮钉\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":193700,\"schd_line_cum_qty\":193700,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-07-15\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":3000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":60,\"schd_line_part\":\"4H0 941 117\",\"schd_line_part_desc\":\"胶皮钉\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":193700,\"schd_line_cum_qty\":193700,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-08-05\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":2000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":60,\"schd_line_part\":\"4H0 941 117\",\"schd_line_part_desc\":\"胶皮钉\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":193700,\"schd_line_cum_qty\":193700,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-08-26\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":2000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":60,\"schd_line_part\":\"4H0 941 117\",\"schd_line_part_desc\":\"胶皮钉\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":193700,\"schd_line_cum_qty\":193700,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-09-16\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":3000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":60,\"schd_line_part\":\"4H0 941 117\",\"schd_line_part_desc\":\"胶皮钉\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":193700,\"schd_line_cum_qty\":193700,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-11-18\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":3000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":60,\"schd_line_part\":\"4H0 941 117\",\"schd_line_part_desc\":\"胶皮钉\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":193700,\"schd_line_cum_qty\":193700,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-12-30\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":3000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":60,\"schd_line_part\":\"4H0 941 117\",\"schd_line_part_desc\":\"胶皮钉\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":193700,\"schd_line_cum_qty\":193700,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2025-02-24\",\"schd_line_fc_qual\":\"P\",\"schd_line_qty\":3000,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-002\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":62,\"schd_line_part\":\"8W0 881 627\",\"schd_line_part_desc\":\"靠背支撑塑料\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1067400,\"schd_line_cum_qty\":1067400,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-05-13\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-001\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":62,\"schd_line_part\":\"8W0 881 627\",\"schd_line_part_desc\":\"靠背支撑塑料\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1067400,\"schd_line_cum_qty\":1067400,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-05-20\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-001\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":62,\"schd_line_part\":\"8W0 881 627\",\"schd_line_part_desc\":\"靠背支撑塑料\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1067400,\"schd_line_cum_qty\":1067400,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-05-27\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-001\"},{\"schd_line_site\":\"30G1\",\"schd_line_order\":\"BES0003\",\"schd_line_line\":62,\"schd_line_part\":\"8W0 881 627\",\"schd_line_part_desc\":\"靠背支撑塑料\",\"schd_line_pcr_date\":\"2024-05-10\",\"schd_line_pcr_qty\":1067400,\"schd_line_cum_qty\":1067400,\"schd_line_req_qty\":0,\"schd_line_vpart\":\"\",\"schd_line_date\":\"2024-06-03\",\"schd_line_fc_qual\":\"F\",\"schd_line_qty\":8064,\"schd_line_interval\":\"\",\"schd_line_time\":\"\",\"schd_line_reference\":\"\",\"schd_line_um\":\"EA\",\"schd_line_ord_mult\":1,\"schd_line_pkg_code\":\"\",\"schd_line_rlse_id\":\"20240511-001\"}]}}");
+ jsonObject = JSONObject.parseObject(jsonObject.getString("dssupplierrs"));
+ JSONArray headerJsonArray = JSONArray.parse(jsonObject.getString("ttsupplierrsheader"));
+ JSONArray lineJsonArray = JSONArray.parse(jsonObject.getString("ttsupplierrsline"));
+ List fileNames = new ArrayList<>();
+ for(int i = 0; i < headerJsonArray.size(); i++) {
+ JSONObject jsonObjectHeader = headerJsonArray.getJSONObject(i);
+ String schmHeaderSite = jsonObjectHeader.getString("schm_header_site");
+ String schmHeaderOrder = jsonObjectHeader.getString("schm_header_order");
+ TreeMap mainMap = new TreeMap<>();
+ TreeMap firmMap = new TreeMap<>();
+ TreeMap forecastMap = new TreeMap<>();
+ JSONArray orderArray = new JSONArray();
+ JSONArray firmArray = new JSONArray();
+ JSONArray forecastArray = new JSONArray();
+ for(int j = 0; j < lineJsonArray.size(); j++) {
+ JSONObject jsonObjectLine = lineJsonArray.getJSONObject(j);
+ String schdLineOrder = jsonObjectLine.getString("schd_line_order");
+ int schdLineLine = jsonObjectLine.getIntValue("schd_line_line");
+ if(schmHeaderOrder.equals(schdLineOrder)) {
+ JSONObject main = mainMap.get(schdLineLine);
+ if(main == null) {
+ main = new JSONObject();
+ main.put("schd_line_line", schdLineLine);
+ main.put("schd_line_part", jsonObjectLine.getString("schd_line_part"));
+ main.put("schd_line_um", jsonObjectLine.getString("schd_line_um"));
+ main.put("schd_line_part_desc", jsonObjectLine.getString("schd_line_part_desc"));
+ }
+ main.put("schd_line_req_qty", main.getIntValue("schd_line_req_qty") + jsonObjectLine.getIntValue("schd_line_req_qty"));
+ main.put("schd_line_cum_qty", main.getIntValue("schd_line_cum_qty") + jsonObjectLine.getIntValue("schd_line_cum_qty"));
+ main.put("schd_line_pcr_qty", main.getIntValue("schd_line_pcr_qty") + jsonObjectLine.getIntValue("schd_line_pcr_qty"));
+ mainMap.put(schdLineLine, main);
+ String schdLineDate = jsonObjectLine.getString("schd_line_date");
+ if(schdLineDate != null) {
+ String schdLineFcQual = jsonObjectLine.getString("schd_line_fc_qual");
+ if("F".equals(schdLineFcQual)) {
+ JSONObject firm = firmMap.get(schdLineDate);
+ if (firm == null) {
+ firm = new JSONObject();
+ firm.put("schd_line_date", schdLineDate);
+ }
+ JSONObject order = new JSONObject();
+ order.put("schd_line_qty", jsonObjectLine.getString("schd_line_qty"));
+ firm.put(String.valueOf(schdLineLine), order);
+ firmMap.put(schdLineDate, firm);
+ } else {
+ JSONObject forecast = forecastMap.get(schdLineDate);
+ if (forecast == null) {
+ forecast = new JSONObject();
+ forecast.put("schd_line_date", schdLineDate);
+ }
+ JSONObject order = new JSONObject();
+ order.put("schd_line_qty", jsonObjectLine.getString("schd_line_qty"));
+ forecast.put(String.valueOf(schdLineLine), order);
+ forecastMap.put(schdLineDate, forecast);
+ }
+ }
+ }
+ }
+ for(Integer mainKey : mainMap.keySet()) {
+ orderArray.add(mainMap.get(mainKey));
+ }
+ for(String firmKey : firmMap.keySet()) {
+ firmArray.add(firmMap.get(firmKey));
+ }
+ for(String forecastKey : forecastMap.keySet()) {
+ forecastArray.add(forecastMap.get(forecastKey));
+ }
+ if("changchun".equals(type)) {//长春模板
+ fileNames.add(fillChangchun(orderNo, jsonObjectHeader, orderArray, firmArray, forecastArray));
+ } else if("foshan".equals(type)) {
+ fileNames.add(fillFoshanQingdao(orderNo, jsonObjectHeader, orderArray, firmArray, forecastArray));
+ } else if("guowai1".equals(type)) {
+ fileNames.add(fillGuowai1(orderNo, jsonObjectHeader, orderArray, firmArray, forecastArray));
+ } else if("guowai2".equals(type)) {
+ fileNames.add(fillGuowai2(orderNo, jsonObjectHeader, orderArray, firmArray, forecastArray));
+ }
+ }
+ return AjaxResult.success(fileNames);
+ }
+
+ /**
+ * 横财changchun格式excel
+ * @param orderNo 订单号
+ * @param jsonObjectHeader 头部信息
+ * @param orderArray 订单数据
+ * @param firmArray firm数据
+ * @param forecastArray forecast数据
+ * @return 生成文件的路径
+ * @throws IOException io异常
+ */
+ private String fillChangchun(String orderNo, JSONObject jsonObjectHeader, JSONArray orderArray, JSONArray firmArray, JSONArray forecastArray) throws IOException {
+ ClassPathResource templateFile = new ClassPathResource("changchun.xls");
+ String filePath = WinConfig.getUploadPath();
+ String fileName = orderNo + ".xls";
+ File file = new File(filePath);
+ if (!file.exists()) {
+ file.mkdirs();
+ }
+ file = new File(filePath + "/" + fileName);
+ if (file.exists()) {
+ file.delete();
+ }
+ final ExcelWriter excelWriter = EasyExcelFactory.write(filePath + "/" + fileName).excelType(ExcelTypeEnum.XLS).withTemplate(templateFile.getInputStream()).build();
+ try {
+ final WriteSheet writeSheet = EasyExcelFactory.writerSheet().build();
+ //横向添加数据
+ //默认纵向添加数据
+ FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
+ //基础数据
+ excelWriter.fill(jsonObjectHeader, writeSheet);
+ //order数据
+ excelWriter.fill(new FillWrapper("order", orderArray), fillConfig, writeSheet);
+ //final FillConfig fillConfig2 = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).forceNewRow(Boolean.TRUE).build();
+ //firm数据
+ //excelWriter.fill(new FillWrapper("firm", firmArray), fillConfig2, writeSheet);
+ //forecast数据
+ //excelWriter.fill(new FillWrapper("forecast", forecastArray), fillConfig2, writeSheet);
+ } finally {
+ if (excelWriter != null) {
+ excelWriter.finish();
+ }
+ }
+ FileInputStream inputStream = new FileInputStream(filePath + "/" + fileName);
+ Workbook workbook = new HSSFWorkbook(inputStream);
+ Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表
+ CellStyle cellStyle1 = getCellStyle(sheet, 13, 4);//Firm订单标题样式
+ CellStyle cellStyle2 = getCellStyle(sheet, 13, 5);//forecast 预测
+ CellStyle cellStyle3 = getCellStyle(sheet, 14, 4);//Firm数据样式
+ CellStyle cellStyle4 = getCellStyle(sheet, 14, 5);//Forecast左侧样式
+ CellStyle cellStyle5 = getCellStyle(sheet, 14, 6);//Forecast数据样式
+ Row row13 = sheet.getRow(13);
+ Row row14 = sheet.getRow(14);
+ for(int i = 0; i < firmArray.size(); i++) {
+ int cellIndex = 4 + i;
+ JSONObject firm = firmArray.getJSONObject(i);
+ Cell cell13 = row13.getCell(cellIndex);
+ if (cell13 == null) {
+ cell13 = row13.createCell(cellIndex);
+ }
+ cell13.setCellValue("Firm订单");
+ cell13.setCellStyle(cellStyle1);
+ Cell cell = row14.getCell(cellIndex);
+ if (cell == null) {
+ cell = row14.createCell(cellIndex);
+ }
+ cell.setCellValue(firm.getString("schd_line_date"));
+ cell.setCellStyle(cellStyle3);
+ //设置每个订单数据
+ for(int count = 0; count < orderArray.size(); count++) {
+ String cellValue = "";
+ JSONObject object = orderArray.getJSONObject(count);
+ JSONObject order = firm.getJSONObject(object.getString("schd_line_line"));
+ Row nextRow = sheet.getRow(15 + count);
+ Cell nextCell = nextRow.getCell(cellIndex);
+ if (nextCell == null) {
+ nextCell = nextRow.createCell(cellIndex);
+ }
+ if(order != null) {
+ cellValue = order.getString("schd_line_qty");
+ }
+ if(cellValue.equals("0")) {
+ cellValue = "";
+ }
+ nextCell.setCellValue(cellValue);
+ nextCell.setCellStyle(cellStyle3);
+ }
+ }
+ for(int count = 0; count < orderArray.size() + 2; count++) {
+ int cellIndex = 4 + firmArray.size();
+ Row nextRow = sheet.getRow(13 + count);
+ Cell nextCell = nextRow.getCell(cellIndex);
+ if (nextCell == null) {
+ nextCell = nextRow.createCell(cellIndex);
+ }
+ nextCell.setCellValue("");
+ nextCell.setCellStyle(cellStyle4);
+ if(count == 0) {
+ nextCell.setCellValue("forecast 预测");
+ nextCell.setCellStyle(cellStyle2);
+ } else if(count == 1) {
+ nextCell.setCellValue("Arrive " + jsonObjectHeader.getString("schm_header_arrive_us") + " date\n到达李尔" + jsonObjectHeader.getString("schm_header_arrive_ch") + "时间");
+ nextCell.setCellStyle(cellStyle4);
+ }
+ }
+ for(int i = 0; i < forecastArray.size(); i++) {
+ int cellIndex = 5 + firmArray.size() + i;
+ JSONObject forecast = forecastArray.getJSONObject(i);
+ Cell cell = row14.getCell(cellIndex);
+ if (cell == null) {
+ cell = row14.createCell(cellIndex);
+ }
+ cell.setCellValue(forecast.getString("schd_line_date"));
+ cell.setCellStyle(cellStyle5);
+ Cell cell2 = row13.getCell(cellIndex);
+ if (cell2 == null) {
+ cell2 = row13.createCell(cellIndex);
+ }
+ cell2.setCellValue("");
+ cell2.setCellStyle(cellStyle2);
+ //设置每个订单数据
+ for(int count = 0; count < orderArray.size(); count++) {
+ String cellValue = "";
+ JSONObject object = orderArray.getJSONObject(count);
+ JSONObject order = forecast.getJSONObject(object.getString("schd_line_line"));
+ Row nextRow = sheet.getRow(15 + count);
+ Cell nextCell = nextRow.getCell(cellIndex);
+ if (nextCell == null) {
+ nextCell = nextRow.createCell(cellIndex);
+ }
+ if(order != null) {
+ cellValue = order.getString("schd_line_qty");
+ }
+ if(cellValue.equals("0")) {
+ cellValue = "";
+ }
+ nextCell.setCellValue(cellValue);
+ nextCell.setCellStyle(cellStyle5);
+ }
+ }
+ // 合并单元格
+ CellRangeAddress cellRangeAddress2 = new CellRangeAddress(13, 13, firmArray.size() + 4, firmArray.size() + forecastArray.size() + 4);
+ sheet.addMergedRegion(cellRangeAddress2);
+ inputStream.close();
+ FileOutputStream outputStream = new FileOutputStream(filePath + "/" + fileName);
+ workbook.write(outputStream);
+ workbook.close();
+ outputStream.close();
+ return fileName;
+ }
+
+ /**
+ * 横财佛山青岛格式excel
+ * @param orderNo 订单号
+ * @param jsonObjectHeader 头部信息
+ * @param orderArray 订单数据
+ * @param firmArray firm数据
+ * @param forecastArray forecast数据
+ * @return 生成文件的路径
+ * @throws IOException io异常
+ */
+ private String fillFoshanQingdao(String orderNo, JSONObject jsonObjectHeader, JSONArray orderArray, JSONArray firmArray, JSONArray forecastArray) throws IOException {
+ ClassPathResource templateFile = new ClassPathResource("foshan_qingdao.xls");
+ String filePath = WinConfig.getUploadPath();
+ String fileName = orderNo + ".xls";
+ File file = new File(filePath);
+ if (!file.exists()) {
+ file.mkdirs();
+ }
+ file = new File(filePath + "/" + fileName);
+ if (file.exists()) {
+ file.delete();
+ }
+ final ExcelWriter excelWriter = EasyExcelFactory.write(filePath + "/" + fileName).excelType(ExcelTypeEnum.XLS).withTemplate(templateFile.getInputStream()).build();
+ try {
+ final WriteSheet writeSheet = EasyExcelFactory.writerSheet().build();
+ //横向添加数据
+ //默认纵向添加数据
+ FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
+ //基础数据
+ excelWriter.fill(jsonObjectHeader, writeSheet);
+ //order数据
+ excelWriter.fill(new FillWrapper("order", orderArray), fillConfig, writeSheet);
+ } finally {
+ if (excelWriter != null) {
+ excelWriter.finish();
+ }
+ }
+ FileInputStream inputStream = new FileInputStream(filePath + "/" + fileName);
+ Workbook workbook = new HSSFWorkbook(inputStream);
+ Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表
+ CellStyle cellStyle1 = getCellStyle(sheet, 13, 8);//Firm订单标题样式
+ CellStyle cellStyle2 = getCellStyle(sheet, 13, 9);//Pick Up Date 提货时间
+ CellStyle cellStyle3 = getCellStyle(sheet, 13, 10);//forecast 预测
+ CellStyle cellStyle4 = getCellStyle(sheet, 14, 8);//Firm数据样式
+ CellStyle cellStyle5 = getCellStyle(sheet, 14, 9);//Forecast左侧样式
+ CellStyle cellStyle6 = getCellStyle(sheet, 14, 10);//Forecast数据样式
+ Row row13 = sheet.getRow(13);
+ Row row14 = sheet.getRow(14);
+ Row row15 = sheet.getRow(15);
+ for(int i = 0; i < firmArray.size(); i++) {
+ int cellIndex = 8 + i;
+ JSONObject firm = firmArray.getJSONObject(i);
+ Cell cell13 = row13.getCell(cellIndex);
+ if (cell13 == null) {
+ cell13 = row13.createCell(cellIndex);
+ }
+ cell13.setCellValue("Firm订单");
+ cell13.setCellStyle(cellStyle1);
+ Cell cell14 = row14.getCell(cellIndex);
+ if (cell14 == null) {
+ cell14 = row14.createCell(cellIndex);
+ }
+ cell14.setCellValue("");
+ cell14.setCellStyle(cellStyle4);
+ Cell cell = row15.getCell(cellIndex);
+ if (cell == null) {
+ cell = row15.createCell(cellIndex);
+ }
+ cell.setCellValue(firm.getString("schd_line_date"));
+ cell.setCellStyle(cellStyle4);
+ //设置每个firm订单数据
+ for(int count = 0; count < orderArray.size(); count++) {
+ String cellValue = "";
+ JSONObject object = orderArray.getJSONObject(count);
+ JSONObject order = firm.getJSONObject(object.getString("schd_line_line"));
+ Row nextRow = sheet.getRow(16 + count);
+ Cell nextCell = nextRow.getCell(cellIndex);
+ if (nextCell == null) {
+ nextCell = nextRow.createCell(cellIndex);
+ }
+ if(order != null) {
+ cellValue = order.getString("schd_line_qty");
+ }
+ if(cellValue.equals("0")) {
+ cellValue = "";
+ }
+ nextCell.setCellValue(cellValue);
+ nextCell.setCellStyle(cellStyle4);
+ }
+ }
+ //设置firm前的Pick Up Date 提货日期列
+ for(int count = 0; count < orderArray.size(); count++) {
+ Row beforeRow = sheet.getRow(16 + count);
+ Cell beforeCell = beforeRow.getCell(7);
+ if (beforeCell == null) {
+ beforeCell = beforeRow.createCell(7);
+ }
+ beforeCell.setCellValue("");
+ beforeCell.setCellStyle(cellStyle1);
+ }
+ //设置forecast前的Pick Up Date 提货日期列
+ for(int count = 0; count < orderArray.size() + 3; count++) {
+ int cellIndex = 8 + firmArray.size();
+ Row nextRow = sheet.getRow(13 + count);
+ Cell nextCell = nextRow.getCell(cellIndex);
+ if (nextCell == null) {
+ nextCell = nextRow.createCell(cellIndex);
+ }
+ nextCell.setCellValue("");
+ nextCell.setCellStyle(cellStyle5);
+ if(count == 0) {
+ nextCell.setCellValue("Pick Up Date 提货日期");
+ nextCell.setCellStyle(cellStyle2);
+ } else if(count == 2) {
+ nextCell.setCellValue("ETA " + jsonObjectHeader.getString("schm_header_arrive_us") + " \n到达" + jsonObjectHeader.getString("schm_header_arrive_ch") + " 时间");
+ } else {
+ nextCell.setCellValue("");
+ }
+ }
+ //合并单元格
+ CellRangeAddress cellRangeAddress2 = new CellRangeAddress(13, 14, 8 + firmArray.size(), 8 + firmArray.size());
+ sheet.addMergedRegion(cellRangeAddress2);
+ for(int i = 0; i < forecastArray.size(); i++) {
+ int cellIndex = 9 + firmArray.size() + i;
+ //设置forecast日期
+ JSONObject forecast = forecastArray.getJSONObject(i);
+ Cell cell = row15.getCell(cellIndex);
+ if (cell == null) {
+ cell = row15.createCell(cellIndex);
+ }
+ cell.setCellValue(forecast.getString("schd_line_date"));
+ cell.setCellStyle(cellStyle6);
+ Cell cell2 = row13.getCell(cellIndex);
+ if (cell2 == null) {
+ cell2 = row13.createCell(cellIndex);
+ }
+ if(i == 0) {
+ cell2.setCellValue("forecast 预测");
+ } else {
+ cell2.setCellValue("");
+ }
+ cell2.setCellStyle(cellStyle3);
+ Cell cell3 = row14.getCell(cellIndex);
+ if (cell3 == null) {
+ cell3 = row14.createCell(cellIndex);
+ }
+ cell3.setCellValue("");
+ cell3.setCellStyle(cellStyle6);
+ //设置forecast每个订单数据
+ for(int count = 0; count < orderArray.size(); count++) {
+ String cellValue = "";
+ JSONObject object = orderArray.getJSONObject(count);
+ JSONObject order = forecast.getJSONObject(object.getString("schd_line_line"));
+ Row nextRow = sheet.getRow(16 + count);
+ if(order != null) {
+ cellValue = order.getString("schd_line_qty");
+ }
+ if(cellValue.equals("0")) {
+ cellValue = "";
+ }
+ Cell nextCell = nextRow.getCell(cellIndex);
+ if (nextCell == null) {
+ nextCell = nextRow.createCell(cellIndex);
+ }
+ nextCell.setCellValue(cellValue);
+ nextCell.setCellStyle(cellStyle6);
+ }
+ }
+ // 合并单元格
+ CellRangeAddress cellRangeAddress3 = new CellRangeAddress(13, 13, firmArray.size() + 9, firmArray.size() + forecastArray.size() + 8);
+ sheet.addMergedRegion(cellRangeAddress3);
+ inputStream.close();
+ FileOutputStream outputStream = new FileOutputStream(filePath + "/" + fileName);
+ workbook.write(outputStream);
+ workbook.close();
+ outputStream.close();
+ return fileName;
+ }
+
+ /**
+ * 横财国外格式excel
+ * @param orderNo 订单号
+ * @param jsonObjectHeader 头部信息
+ * @param orderArray 订单数据
+ * @param firmArray firm数据
+ * @param forecastArray forecast数据
+ * @return 生成文件的路径
+ * @throws IOException io异常
+ */
+ private String fillGuowai1(String orderNo, JSONObject jsonObjectHeader, JSONArray orderArray, JSONArray firmArray, JSONArray forecastArray) throws IOException {
+ ClassPathResource templateFile = new ClassPathResource("guowai1.xls");
+ String filePath = WinConfig.getUploadPath();
+ String fileName = orderNo + ".xls";
+ File file = new File(filePath);
+ if (!file.exists()) {
+ file.mkdirs();
+ }
+ file = new File(filePath + "/" + fileName);
+ if (file.exists()) {
+ file.delete();
+ }
+ final ExcelWriter excelWriter = EasyExcelFactory.write(filePath + "/" + fileName).excelType(ExcelTypeEnum.XLS).withTemplate(templateFile.getInputStream()).build();
+ try {
+ final WriteSheet writeSheet = EasyExcelFactory.writerSheet().build();
+ //默认纵向添加数据
+ FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
+ //基础数据
+ excelWriter.fill(jsonObjectHeader, writeSheet);
+ //order数据
+ excelWriter.fill(new FillWrapper("order", orderArray), fillConfig, writeSheet);
+ } finally {
+ if (excelWriter != null) {
+ excelWriter.finish();
+ }
+ }
+ FileInputStream inputStream = new FileInputStream(filePath + "/" + fileName);
+ Workbook workbook = new HSSFWorkbook(inputStream);
+ Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表
+ CellStyle cellStyle1 = getCellStyle(sheet, 14, 4);//日期格式
+ CellStyle cellStyle2 = getCellStyle(sheet, 15, 4);//firm订单格式
+ CellStyle cellStyle3 = getCellStyle(sheet, 16, 4);//数据格式
+ Row row13 = sheet.getRow(13);
+ Row row14 = sheet.getRow(14);
+ Row row15 = sheet.getRow(15);
+ for(int i = 0; i < firmArray.size(); i++) {
+ int cellIndex = 4 + i;
+ JSONObject firm = firmArray.getJSONObject(i);
+ Cell pickupCell = row13.getCell(cellIndex);
+ if (pickupCell == null) {
+ pickupCell = row13.createCell(cellIndex);
+ }
+ pickupCell.setCellValue(firm.getString("schd_line_date"));
+ pickupCell.setCellStyle(cellStyle1);
+ Cell arriveCell = row14.getCell(cellIndex);
+ if (arriveCell == null) {
+ arriveCell = row14.createCell(cellIndex);
+ }
+ arriveCell.setCellValue(firm.getString("schd_line_date"));
+ arriveCell.setCellStyle(cellStyle1);
+ Cell firmCell = row15.getCell(cellIndex);
+ if (firmCell == null) {
+ firmCell = row15.createCell(cellIndex);
+ }
+ firmCell.setCellValue("Firm订单");
+ firmCell.setCellStyle(cellStyle2);
+ //设置每个firm订单数据
+ for(int count = 0; count < orderArray.size(); count++) {
+ String cellValue = "";
+ JSONObject object = orderArray.getJSONObject(count);
+ JSONObject order = firm.getJSONObject(object.getString("schd_line_line"));
+ Row nextRow = sheet.getRow(16 + count);
+ Cell nextCell = nextRow.getCell(cellIndex);
+ if (nextCell == null) {
+ nextCell = nextRow.createCell(cellIndex);
+ }
+ if(order != null) {
+ cellValue = order.getString("schd_line_qty");
+ }
+ if(cellValue.equals("0")) {
+ cellValue = "";
+ }
+ nextCell.setCellValue(cellValue);
+ nextCell.setCellStyle(cellStyle3);
+ }
+ }
+ //设置分隔列
+ for(int count = 0; count < orderArray.size() + 3; count++) {
+ int cellIndex = 4 + firmArray.size();
+ Row sepratorRow = sheet.getRow(13 + count);
+ Cell sepratorCell = sepratorRow.getCell(cellIndex);
+ if (sepratorCell == null) {
+ sepratorCell = sepratorRow.createCell(cellIndex);
+ }
+ sepratorCell.setCellValue("");
+ sepratorCell.setCellStyle(cellStyle2);
+ }
+ //合并单元格
+ CellRangeAddress cellRangeAddress2 = new CellRangeAddress(13, 14, 4 + firmArray.size(), 4 + firmArray.size());
+ sheet.addMergedRegion(cellRangeAddress2);
+ //设置forecast数据
+ for(int i = 0; i < forecastArray.size(); i++) {
+ int cellIndex = 5 + firmArray.size() + i;
+ //设置forecast日期
+ JSONObject forecast = forecastArray.getJSONObject(i);
+ Cell pickupCell = row13.getCell(cellIndex);
+ if (pickupCell == null) {
+ pickupCell = row13.createCell(cellIndex);
+ }
+ pickupCell.setCellValue(forecast.getString("schd_line_date"));
+ pickupCell.setCellStyle(cellStyle1);
+ Cell arriveCell = row14.getCell(cellIndex);
+ if (arriveCell == null) {
+ arriveCell = row14.createCell(cellIndex);
+ }
+ arriveCell.setCellValue(forecast.getString("schd_line_date"));
+ arriveCell.setCellStyle(cellStyle1);
+ Cell forecstCell = row15.getCell(cellIndex);
+ if (forecstCell == null) {
+ forecstCell = row15.createCell(cellIndex);
+ }
+ forecstCell.setCellValue("forecast");
+ forecstCell.setCellStyle(cellStyle3);
+ //设置forecast每个订单数据
+ for(int count = 0; count < orderArray.size(); count++) {
+ String cellValue = "";
+ JSONObject object = orderArray.getJSONObject(count);
+ JSONObject order = forecast.getJSONObject(object.getString("schd_line_line"));
+ Row nextRow = sheet.getRow(16 + count);
+ if(order != null) {
+ cellValue = order.getString("schd_line_qty");
+ }
+ if(cellValue.equals("0")) {
+ cellValue = "";
+ }
+ Cell nextCell = nextRow.getCell(cellIndex);
+ if (nextCell == null) {
+ nextCell = nextRow.createCell(cellIndex);
+ }
+ nextCell.setCellValue(cellValue);
+ nextCell.setCellStyle(cellStyle3);
+ }
+ }
+ inputStream.close();
+ FileOutputStream outputStream = new FileOutputStream(filePath + "/" + fileName);
+ workbook.write(outputStream);
+ workbook.close();
+ outputStream.close();
+ return fileName;
+ }
+
+ /**
+ * 横财国外格式excel
+ * @param orderNo 订单号
+ * @param jsonObjectHeader 头部信息
+ * @param orderArray 订单数据
+ * @param firmArray firm数据
+ * @param forecastArray forecast数据
+ * @return 生成文件的路径
+ * @throws IOException io异常
+ */
+ private String fillGuowai2(String orderNo, JSONObject jsonObjectHeader, JSONArray orderArray, JSONArray firmArray, JSONArray forecastArray) throws IOException {
+ ClassPathResource templateFile = new ClassPathResource("guowai2.xlsx");
+ String filePath = WinConfig.getUploadPath();
+ String fileName = orderNo + ".xlsx";
+ File file = new File(filePath);
+ if (!file.exists()) {
+ file.mkdirs();
+ }
+ file = new File(filePath + "/" + fileName);
+ if (file.exists()) {
+ file.delete();
+ }
+ final ExcelWriter excelWriter = EasyExcelFactory.write(filePath + "/" + fileName).excelType(ExcelTypeEnum.XLSX).withTemplate(templateFile.getInputStream()).build();
+ try {
+ final WriteSheet writeSheet = EasyExcelFactory.writerSheet().build();
+ //默认纵向添加数据
+ FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
+ //基础数据
+ excelWriter.fill(jsonObjectHeader, writeSheet);
+ //order数据
+ excelWriter.fill(new FillWrapper("order", orderArray), fillConfig, writeSheet);
+ } finally {
+ if (excelWriter != null) {
+ excelWriter.finish();
+ }
+ }
+ FileInputStream inputStream = new FileInputStream(filePath + "/" + fileName);
+ Workbook workbook = new XSSFWorkbook(inputStream);
+ Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表
+ CellStyle cellStyle1 = getCellStyle(sheet, 14, 4);//日期格式
+ CellStyle cellStyle2 = getCellStyle(sheet, 15, 4);//firm订单格式
+ CellStyle cellStyle3 = getCellStyle(sheet, 16, 4);//数据格式
+ Row row13 = sheet.getRow(13);
+ Row row14 = sheet.getRow(14);
+ Row row15 = sheet.getRow(15);
+ for(int i = 0; i < firmArray.size(); i++) {
+ int cellIndex = 4 + i;
+ JSONObject firm = firmArray.getJSONObject(i);
+ Cell pickupCell = row13.getCell(cellIndex);
+ if (pickupCell == null) {
+ pickupCell = row13.createCell(cellIndex);
+ }
+ pickupCell.setCellValue(firm.getString("schd_line_date"));
+ pickupCell.setCellStyle(cellStyle1);
+ Cell arriveCell = row14.getCell(cellIndex);
+ if (arriveCell == null) {
+ arriveCell = row14.createCell(cellIndex);
+ }
+ arriveCell.setCellValue(firm.getString("schd_line_date"));
+ arriveCell.setCellStyle(cellStyle1);
+ Cell firmCell = row15.getCell(cellIndex);
+ if (firmCell == null) {
+ firmCell = row15.createCell(cellIndex);
+ }
+ firmCell.setCellValue("Firm订单");
+ firmCell.setCellStyle(cellStyle2);
+ //设置每个firm订单数据
+ for(int count = 0; count < orderArray.size(); count++) {
+ String cellValue = "";
+ JSONObject object = orderArray.getJSONObject(count);
+ JSONObject order = firm.getJSONObject(object.getString("schd_line_line"));
+ Row nextRow = sheet.getRow(16 + count);
+ Cell nextCell = nextRow.getCell(cellIndex);
+ if (nextCell == null) {
+ nextCell = nextRow.createCell(cellIndex);
+ }
+ if(order != null) {
+ cellValue = order.getString("schd_line_qty");
+ }
+ if(cellValue.equals("0")) {
+ cellValue = "";
+ }
+ nextCell.setCellValue(cellValue);
+ nextCell.setCellStyle(cellStyle3);
+ }
+ }
+ //设置分隔列
+ for(int count = 0; count < orderArray.size() + 3; count++) {
+ int cellIndex = 4 + firmArray.size();
+ Row sepratorRow = sheet.getRow(13 + count);
+ Cell sepratorCell = sepratorRow.getCell(cellIndex);
+ if (sepratorCell == null) {
+ sepratorCell = sepratorRow.createCell(cellIndex);
+ }
+ sepratorCell.setCellValue("");
+ sepratorCell.setCellStyle(cellStyle2);
+ }
+ //合并单元格
+ CellRangeAddress cellRangeAddress2 = new CellRangeAddress(13, 14, 4 + firmArray.size(), 4 + firmArray.size());
+ sheet.addMergedRegion(cellRangeAddress2);
+ //设置forecast数据
+ for(int i = 0; i < forecastArray.size(); i++) {
+ int cellIndex = 5 + firmArray.size() + i;
+ //设置forecast日期
+ JSONObject forecast = forecastArray.getJSONObject(i);
+ Cell pickupCell = row13.getCell(cellIndex);
+ if (pickupCell == null) {
+ pickupCell = row13.createCell(cellIndex);
+ }
+ pickupCell.setCellValue(forecast.getString("schd_line_date"));
+ pickupCell.setCellStyle(cellStyle1);
+ Cell arriveCell = row14.getCell(cellIndex);
+ if (arriveCell == null) {
+ arriveCell = row14.createCell(cellIndex);
+ }
+ arriveCell.setCellValue(forecast.getString("schd_line_date"));
+ arriveCell.setCellStyle(cellStyle1);
+ Cell forecstCell = row15.getCell(cellIndex);
+ if (forecstCell == null) {
+ forecstCell = row15.createCell(cellIndex);
+ }
+ forecstCell.setCellValue("forecast");
+ forecstCell.setCellStyle(cellStyle3);
+ //设置forecast每个订单数据
+ for(int count = 0; count < orderArray.size(); count++) {
+ String cellValue = "";
+ JSONObject object = orderArray.getJSONObject(count);
+ JSONObject order = forecast.getJSONObject(object.getString("schd_line_line"));
+ Row nextRow = sheet.getRow(16 + count);
+ if(order != null) {
+ cellValue = order.getString("schd_line_qty");
+ }
+ if(cellValue.equals("0")) {
+ cellValue = "";
+ }
+ Cell nextCell = nextRow.getCell(cellIndex);
+ if (nextCell == null) {
+ nextCell = nextRow.createCell(cellIndex);
+ }
+ nextCell.setCellValue(cellValue);
+ nextCell.setCellStyle(cellStyle3);
+ }
+ }
+ inputStream.close();
+ FileOutputStream outputStream = new FileOutputStream(filePath + "/" + fileName);
+ workbook.write(outputStream);
+ workbook.close();
+ outputStream.close();
+ return fileName;
+ }
+
+ /**
+ * 获取单元格样式
+ * @param sheet sheet
+ * @param rowIndex 行号
+ * @param cellIndex 列号
+ * @return 结果
+ */
+ private CellStyle getCellStyle(Sheet sheet, int rowIndex, int cellIndex) {
+ Row row = sheet.getRow(rowIndex);
+ Cell cell = row.getCell(cellIndex);
+ return cell.getCellStyle();
+ }
+
+}
diff --git a/win-admin/src/main/resources/application.yml b/win-admin/src/main/resources/application.yml
index d0d3c05..d65707e 100644
--- a/win-admin/src/main/resources/application.yml
+++ b/win-admin/src/main/resources/application.yml
@@ -25,7 +25,7 @@ win:
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/win/uploadPath,Linux配置 /home/win/uploadPath)
- profile: /opt/uploadPath
+ profile: D:/win/uploadPath
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数组计算 char 字符验证
diff --git a/win-admin/src/main/resources/changchun.xls b/win-admin/src/main/resources/changchun.xls
new file mode 100644
index 0000000000000000000000000000000000000000..4e1144ab10cf067ecf614c67f5064d286cced1ed
GIT binary patch
literal 63488
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
JpZ!Vx{{s*Mg)smC
literal 0
HcmV?d00001
diff --git a/win-admin/src/main/resources/foshan_qingdao.xls b/win-admin/src/main/resources/foshan_qingdao.xls
new file mode 100644
index 0000000000000000000000000000000000000000..e674024daff24e3252adadc368117c91a37ad042
GIT binary patch
literal 42496
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