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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�HeRk}Y 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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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 E0eJtkt^fc4 literal 0 HcmV?d00001 diff --git a/win-admin/src/main/resources/guowai2.xlsx b/win-admin/src/main/resources/guowai2.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..48aa2ff9d547e690f40bdc1ca8b493a42a6a3021 GIT binary patch literal 12583 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 YASVg+x{`nCgpdGMug*|N_v`Ba0p+s(ivR!s literal 0 HcmV?d00001 diff --git a/win-framework/src/main/java/com/win/framework/config/SecurityConfig.java b/win-framework/src/main/java/com/win/framework/config/SecurityConfig.java index 903bafa..8842c99 100644 --- a/win-framework/src/main/java/com/win/framework/config/SecurityConfig.java +++ b/win-framework/src/main/java/com/win/framework/config/SecurityConfig.java @@ -112,7 +112,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { // 静态资源,可匿名访问 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() //.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs").permitAll() - .antMatchers("/command/**", "/shell/**").permitAll() + .antMatchers("/command/**", "/shell/**", "/excel/**").permitAll() // 除上面外的所有请求全部需要鉴权认证 .anyRequest().authenticated() .and()