diff --git a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelTXServiceImpl.java b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelTXServiceImpl.java index 7095760b..58b56a61 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelTXServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelTXServiceImpl.java @@ -1285,95 +1285,77 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { ExcelTemplateTX template = ExcelTemplateTX.load(new ClassPathResource("templates/TX/declaration-all-template.xlsx").getInputStream()); ExcelTemplateAdapter templateAdapter = new TxExcelTemplateAdapter(template); - // 第一个sheet - 出口货物委托书 - extractedExportGoods(data, templateAdapter); + // 第1个sheet - 发票 + extractedInvoice(data, templateAdapter, notifyHeader); workbook = template.render(0); - // 第二个sheet - 发票 + // 第2个sheet - 箱单 templateAdapter.clearAll(); - extractedInvoice(data, templateAdapter, notifyHeader); + exportPackingList(data, template, notifyHeader, 0); template.render(1); - // 第三个sheet - 箱单 + // 第3个sheet - 报关单 templateAdapter.clearAll(); - exportPackingList(data, template, notifyHeader, 0); + extractedDeclaration(data, templateAdapter); template.render(2); - // 第四个sheet - 报关单 + // 第4个sheet - 申报要素 templateAdapter.clearAll(); - extractedDeclaration(data, templateAdapter); + extractedElements(data, templateAdapter); template.render(3); - // 第五个sheet - 申报要素 - templateAdapter.clearAll(); - extractedElements(data, templateAdapter); - template.render(4); - // 第六个sheet - 合同 - /*templateAdapter.clearAll(); - extractedContract(data, templateAdapter); - template.render(5);*/ } else if (isHardtag) { ExcelTemplateYB template = ExcelTemplateYB.load(new ClassPathResource("templates/YB/declaration-all-template.xlsx").getInputStream()); ExcelTemplateAdapter templateAdapter = new Yb2ExcelTemplateAdapter(template); - // 第一个sheet - 出口货物委托书 - extractedExportGoods(data, templateAdapter); + // 第1个sheet - 发票 + extractedInvoice(data, templateAdapter, notifyHeader); workbook = template.render(0); - // 第二个sheet - 发票 + // 第2个sheet - 箱单 templateAdapter.clearAll(); - extractedInvoice(data, templateAdapter, notifyHeader); + exportPackingListYB(data, template, notifyHeader, 0); template.render(1); - // 第三个sheet - 箱单 + // 第3个sheet - 报关单 templateAdapter.clearAll(); - exportPackingListYB(data, template, notifyHeader, 0); + extractedDeclaration(data, templateAdapter); template.render(2); - // 第四个sheet - 报关单 + // 第4个sheet - 申报要素 templateAdapter.clearAll(); - extractedDeclaration(data, templateAdapter); + extractedElements(data, templateAdapter); template.render(3); - - // 第五个sheet - 申报要素 + // 第5个sheet - 合同 templateAdapter.clearAll(); - extractedElements(data, templateAdapter); + extractedContract(data, templateAdapter); template.render(4); - // 第六个sheet - 合同 + // 第6个sheet - 出货通知 templateAdapter.clearAll(); - extractedContract(data, templateAdapter); + extractedShippingNotice(templateAdapter, notifyHeader); template.render(5); } else { ExcelTemplateALPHA template = ExcelTemplateALPHA.load(new ClassPathResource("templates/ALPHA/declaration-all-template.xlsx").getInputStream()); ExcelTemplateAdapter templateAdapter = new YbExcelTemplateAdapter(template); - // 第一个sheet - 出口货物委托书 - extractedExportGoods(data, templateAdapter); - workbook = template.render(0); - - // 第二个sheet - 发票 - templateAdapter.clearAll(); + // 第1个sheet - 发票 extractedInvoice(data, templateAdapter, notifyHeader); - template.render(1); + workbook = template.render(0); - // 第三个sheet - 箱单 + // 第2个sheet - 箱单 templateAdapter.clearAll(); exportPackingListAlpha(data, template, notifyHeader, 0); - template.render(2); + template.render(1); - // 第四个sheet - 报关单 + // 第3个sheet - 报关单 templateAdapter.clearAll(); extractedDeclaration(data, templateAdapter); - template.render(3); + template.render(2); - // 第五个sheet - 申报要素 + // 第4个sheet - 申报要素 templateAdapter.clearAll(); extractedElements(data, templateAdapter); - template.render(4); - // 第六个sheet - 合同 - /* templateAdapter.clearAll(); - extractedContract(data, templateAdapter); - template.render(5);*/ + template.render(3); } response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); @@ -1430,10 +1412,6 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { extractedElements(data, templateAdapter); template.render(3); - // 第五个sheet - 合同 - /* templateAdapter.clearAll(); - extractedContract(data, templateAdapter); - template.render(4);*/ } else if (isHardtag) { String xlsx = "templates/YB/declaration-all-template-pdf.xlsx"; ExcelTemplateYB template = ExcelTemplateYB.load(new ClassPathResource(xlsx).getInputStream()); @@ -1485,11 +1463,6 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { templateAdapter.clearAll(); extractedElements(data, templateAdapter); template.render(3); - - // 第五个sheet - 合同 - /*templateAdapter.clearAll(); - extractedContract(data, templateAdapter); - template.render(4);*/ } // 将Excel转换为PDF @@ -2008,7 +1981,8 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { // 构建artNo内容 String artNoContent = eorder.get("pn")+" " + eorder.get("part_description") + "\n" - + " PO#" + eorder.get("po_no")+" HS CODE#" + eorder.get("hsCode"); + + " PO#" + eorder.get("po_no") + + (data.getHsCodeFlag()!=null && data.getHsCodeFlag()?" HS CODE#" + eorder.get("hsCode"):""); eorder.put("artNo", artNoContent); // 计算artNo内容的行数,动态设置行高 int lineCount = calculateLineCount(artNoContent); @@ -2260,7 +2234,8 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { // 构建artNo内容 String artNoContent = eorder.get("pn")+" " + eorder.get("part_description") + "\n" - + " PO#" + eorder.get("po_no")+" HS CODE#" + eorder.get("hsCode"); + + " PO#" + eorder.get("po_no") + + (data.getHsCodeFlag()!=null && data.getHsCodeFlag()?" HS CODE#" + eorder.get("hsCode"):""); eorder.put("artNo", artNoContent); // 计算artNo内容的行数,动态设置行高 int lineCount = calculateLineCount(artNoContent); @@ -2347,9 +2322,9 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { if (data.getPackaging()!=null && data.getPackaging()) { template.addVar("packaging", "Non-Reusable plastic packaging:"); // 根据维护参数计算出KGS=总托数*plastic packaging维护参数 - BigDecimal totalKgs = data.getKgs()!=null?data.getKgs():BigDecimal.ZERO; + BigDecimal totalKgs = data.getKgs()!=null?data.getKgs():BigDecimal.valueOf(3); if (palletHeaderDataList.isEmpty()) { - totalKgs = BigDecimal.valueOf(0.1); + totalKgs = BigDecimal.valueOf(3); } template.addVar("KGS_qty", data.getKgs()!=null?(totalKgs.multiply(BigDecimal.valueOf(totalPlt))).setScale(2, RoundingMode.HALF_UP):""); template.addVar("KGS", "KGS"); @@ -2509,7 +2484,8 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { // 构建artNo内容 String artNoContent = eorder.get("pn")+" " + eorder.get("part_description") + "\n" - + " PO#" + eorder.get("po_no"); + + " PO#" + eorder.get("po_no") + + (data.getHsCodeFlag()!=null && data.getHsCodeFlag()?" HS CODE#" + eorder.get("hsCode"):""); eorder.put("artNo", artNoContent); // 计算artNo内容的行数,动态设置行高 int lineCount = calculateLineCount(artNoContent); @@ -2600,9 +2576,9 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { if (data.getPackaging()!=null && data.getPackaging()) { template.addVar("packaging", "Non-Reusable plastic packaging:"); // 根据维护参数计算出KGS=总托数*plastic packaging维护参数 - BigDecimal totalKgs = data.getKgs()!=null?data.getKgs():BigDecimal.ZERO; + BigDecimal totalKgs = data.getKgs()!=null?data.getKgs():BigDecimal.valueOf(5.4); if (palletHeaderDataList.isEmpty()) { - totalKgs = BigDecimal.valueOf(0.1); + totalKgs = BigDecimal.valueOf(5.4); } template.addVar("KGS_qty", data.getKgs()!=null?(totalKgs.multiply(BigDecimal.valueOf(totalPlt))).setScale(2, RoundingMode.HALF_UP):""); template.addVar("KGS", "KGS"); @@ -2688,15 +2664,15 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { template.addVar("made_area", stringInput(data.getMadeArea()));//货物产地 template.addVar("send_port", stringInput(data.getSendPort()));//发货港 template.addVar("shipper", stringInput(data.getShipper()));//发货人 - template.addVar("voyage", notifyHeader.getBuNo().equals("01-Label") || notifyHeader.getBuNo().equals("03-RFID") - ?stringInput(notifyHeader.getCmcInvoice()) :stringInput(data.getVoyage()));//航次 + /* template.addVar("voyage", notifyHeader.getBuNo().equals("01-Label") || notifyHeader.getBuNo().equals("03-RFID") + ?stringInput(notifyHeader.getCmcInvoice()) :stringInput(data.getVoyage()));//航次*/ template.addVar("delivery_goods_date", stringInput(data.getDeliveryGoodsDate()));//提货日期 template.addVar("shipping_date", stringInput(data.getShippingDate()));//船期 // 装箱数据 List palletHeaderDataList = coDelMapper.searchEcssCoDelPalletHeaderData(notifyHeader); // 最高的栈板 - /* Optional palletHeaderData = palletHeaderDataList.isEmpty()? Optional.empty() : - palletHeaderDataList.stream().max(Comparator.comparing(EcssCoDelPalletHeaderData::getHeight));*/ + Optional palletHeaderData = palletHeaderDataList.isEmpty()? Optional.empty() : + palletHeaderDataList.stream().max(Comparator.comparing(EcssCoDelPalletHeaderData::getVolume)); // 需要计算的 // 总托数 Integer totalPlt = palletHeaderDataList.stream() @@ -2743,10 +2719,7 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { } template.addVar("volume", notifyHeader.getWalMartOrderFlag()!=null && notifyHeader.getWalMartOrderFlag().equals("Y")? notifyHeader.getTotalVolume(): totalVolume); - /* template.addVar("highest", palletHeaderData.isPresent() ?palletHeaderData.map(ecssCoDelPalletHeaderData -> - ecssCoDelPalletHeaderData.getLength().setScale(2, RoundingMode.HALF_UP) - + "*" + ecssCoDelPalletHeaderData.getWidth().setScale(2, RoundingMode.HALF_UP) + "*" - + ecssCoDelPalletHeaderData.getHeight().setScale(2, RoundingMode.HALF_UP)).orElse(""):"");*/ + template.addVar("highest", palletHeaderData.isPresent() ?palletHeaderData.get().getVolume():""); template.addVar("pickup_date", notifyHeader.getNotifyDate() != null ? DateUtils.format(notifyHeader.getNotifyDate(), "yyyy-MM-dd") : ""); List ecssContacts = coDelMapper.getEcssContacts(notifyHeader.getBuNo()); @@ -2777,6 +2750,52 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { template.addListVarAll(notifyDetailGroup); } + /** + * 出货通知 + */ + private void extractedShippingNotice(ExcelTemplateAdapter template, EcssCoDelNotifyHeaderData notifyHeader) { + template.addVar("cmc_invoice", notifyHeader.getCmcInvoice()); + template.addVar("year", DateUtils.format(notifyHeader.getReadyDate(), "yyyy")); + template.addVar("month", DateUtils.format(notifyHeader.getReadyDate(), "M")); + template.addVar("day", DateUtils.format(notifyHeader.getReadyDate(), "d")); + template.addVar("today", DateUtils.format(new Date(), "yyyy年M月d日")); + List list = coDelMapper.selectBoxListTX(notifyHeader); + // 装箱数据 + List palletHeaderDataList = coDelMapper.searchEcssCoDelPalletHeaderData(notifyHeader); + // 总托数 + Integer totalPlt = palletHeaderDataList.stream() + .map(EcssCoDelPalletHeaderData::getPalletQty) + .filter(Objects::nonNull) // 防止空指针 + .reduce(0, Integer::sum); + BigDecimal totalCartons = BigDecimal.valueOf(0.0); + BigDecimal grossWeight = BigDecimal.valueOf(0.0); + for (int m = 0; m < list.size(); m++) { + totalCartons = totalCartons.add(list.get(m).get("box_qty") !=null? new BigDecimal(list.get(m).get("box_qty").toString()) : BigDecimal.valueOf(0.0)); + grossWeight = grossWeight.add(list.get(m).get("gross_weight") !=null?new BigDecimal(list.get(m).get("gross_weight").toString()):BigDecimal.valueOf(0.0)); + } + // 托盘重量=根据每个pallet的重量*数量累加 + BigDecimal palletWeight = BigDecimal.ZERO; + for (EcssCoDelPalletHeaderData palletHeader : palletHeaderDataList) { + if (palletHeader.getPallet() != null && !palletHeader.getPallet().isEmpty()) { + // 根据pallet编号查询EcssPallet信息 + List palletDataList = coDelMapper.getPallet(notifyHeader.getSite(), notifyHeader.getBuNo(), palletHeader.getPallet()); + if (!palletDataList.isEmpty()) { + EcssPalletData palletData = palletDataList.get(0); + if (palletData.getPalletWeight() != null && palletHeader.getPalletQty() != null) { + // 栈板重量 = 单个栈板重量 * 数量 + palletWeight = palletWeight.add(palletHeader.getVolume()); + } + } + } + } + + template.addVar("Gross_Weight", (grossWeight.add(palletWeight)).setScale(2, RoundingMode.HALF_UP)); + if (palletHeaderDataList.isEmpty()) { + totalPlt = totalCartons.setScale(0, RoundingMode.HALF_UP).intValue(); + } + template.addVar("total_plt", totalPlt); + } + /** * 根据装箱明细计算总体积 * diff --git a/src/main/resources/templates/ALPHA/declaration-all-template.xlsx b/src/main/resources/templates/ALPHA/declaration-all-template.xlsx index 9f772ad7..dca58513 100644 Binary files a/src/main/resources/templates/ALPHA/declaration-all-template.xlsx and b/src/main/resources/templates/ALPHA/declaration-all-template.xlsx differ diff --git a/src/main/resources/templates/ALPHA/declaration-contract-template.xlsx b/src/main/resources/templates/ALPHA/declaration-contract-template.xlsx deleted file mode 100644 index 42c8eb16..00000000 Binary files a/src/main/resources/templates/ALPHA/declaration-contract-template.xlsx and /dev/null differ diff --git a/src/main/resources/templates/ALPHA/declaration-elements-template.xlsx b/src/main/resources/templates/ALPHA/declaration-elements-template.xlsx deleted file mode 100644 index fdba7637..00000000 Binary files a/src/main/resources/templates/ALPHA/declaration-elements-template.xlsx and /dev/null differ diff --git a/src/main/resources/templates/ALPHA/declaration-invoice2-template.xlsx b/src/main/resources/templates/ALPHA/declaration-invoice2-template.xlsx deleted file mode 100644 index e6dd76b9..00000000 Binary files a/src/main/resources/templates/ALPHA/declaration-invoice2-template.xlsx and /dev/null differ diff --git a/src/main/resources/templates/ALPHA/declaration-template.xlsx b/src/main/resources/templates/ALPHA/declaration-template.xlsx deleted file mode 100644 index 46be807e..00000000 Binary files a/src/main/resources/templates/ALPHA/declaration-template.xlsx and /dev/null differ diff --git a/src/main/resources/templates/ALPHA/export-goods-template.xlsx b/src/main/resources/templates/ALPHA/export-goods-template.xlsx deleted file mode 100644 index 4377e387..00000000 Binary files a/src/main/resources/templates/ALPHA/export-goods-template.xlsx and /dev/null differ diff --git a/src/main/resources/templates/TX/declaration-all-template.xlsx b/src/main/resources/templates/TX/declaration-all-template.xlsx index d5664697..1f6a5302 100644 Binary files a/src/main/resources/templates/TX/declaration-all-template.xlsx and b/src/main/resources/templates/TX/declaration-all-template.xlsx differ diff --git a/src/main/resources/templates/TX/export-goods-template.xlsx b/src/main/resources/templates/TX/export-goods-template.xlsx index 4377e387..7711cc4e 100644 Binary files a/src/main/resources/templates/TX/export-goods-template.xlsx and b/src/main/resources/templates/TX/export-goods-template.xlsx differ diff --git a/src/main/resources/templates/YB/declaration-all-template.xlsx b/src/main/resources/templates/YB/declaration-all-template.xlsx index be4e7ca9..709d0a20 100644 Binary files a/src/main/resources/templates/YB/declaration-all-template.xlsx and b/src/main/resources/templates/YB/declaration-all-template.xlsx differ diff --git a/src/main/resources/templates/YB/declaration-contract-template.xlsx b/src/main/resources/templates/YB/declaration-contract-template.xlsx deleted file mode 100644 index 42c8eb16..00000000 Binary files a/src/main/resources/templates/YB/declaration-contract-template.xlsx and /dev/null differ diff --git a/src/main/resources/templates/YB/declaration-elements-template.xlsx b/src/main/resources/templates/YB/declaration-elements-template.xlsx deleted file mode 100644 index fdba7637..00000000 Binary files a/src/main/resources/templates/YB/declaration-elements-template.xlsx and /dev/null differ diff --git a/src/main/resources/templates/YB/declaration-invoice2-template.xlsx b/src/main/resources/templates/YB/declaration-invoice2-template.xlsx deleted file mode 100644 index e6dd76b9..00000000 Binary files a/src/main/resources/templates/YB/declaration-invoice2-template.xlsx and /dev/null differ diff --git a/src/main/resources/templates/YB/declaration-template.xlsx b/src/main/resources/templates/YB/declaration-template.xlsx deleted file mode 100644 index 46be807e..00000000 Binary files a/src/main/resources/templates/YB/declaration-template.xlsx and /dev/null differ diff --git a/src/main/resources/templates/YB/export-goods-template.xlsx b/src/main/resources/templates/YB/export-goods-template.xlsx deleted file mode 100644 index 4377e387..00000000 Binary files a/src/main/resources/templates/YB/export-goods-template.xlsx and /dev/null differ