From e8e21ea413c9e316a1a8c1408d68d821ac8ea39c Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Thu, 25 Sep 2025 21:57:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=BA=9F=E5=BC=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ecss/controller/CoDelController.java | 5 ++ .../sys/modules/ecss/mapper/CoDelMapper.java | 1 + .../modules/ecss/service/CoDelService.java | 2 + .../ecss/service/impl/CoDelServiceImpl.java | 47 ++++++++++++++----- .../resources/mapper/ecss/CoDelMapper.xml | 8 +++- 5 files changed, 50 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/xujie/sys/modules/ecss/controller/CoDelController.java b/src/main/java/com/xujie/sys/modules/ecss/controller/CoDelController.java index b140cb5d..aef54fbe 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/controller/CoDelController.java +++ b/src/main/java/com/xujie/sys/modules/ecss/controller/CoDelController.java @@ -99,6 +99,11 @@ public class CoDelController { return R.ok(); } + @PostMapping("/recoverEcssDelHeader") + public R recoverEcssDelHeader(@RequestBody EcssCoDelNotifyHeaderData data) { + coDelService.recoverEcssDelHeader(data); + return R.ok(); + } @PostMapping("/changeEcssDelStatus") public R changeEcssDelStatus(@RequestBody EcssCoDelNotifyHeaderData data) { diff --git a/src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java b/src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java index 6f6df54a..a75f8591 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java +++ b/src/main/java/com/xujie/sys/modules/ecss/mapper/CoDelMapper.java @@ -50,6 +50,7 @@ public interface CoDelMapper { void changeEcssDelStatus(EcssCoDelNotifyHeaderData data); void updateEcssDelDetailForModify(EcssCoDelNotifyHeaderData data); void updateEcssDelDetailStatus(EcssCoDelNotifyHeaderData data); + void recoverEcssDelDetailStatus(EcssCoDelNotifyHeaderData data); int getEcssDelDetailItemNo(EcssCoDelNotifyDetail data); void insertEcssDelDetail(EcssCoDelNotifyDetail data); diff --git a/src/main/java/com/xujie/sys/modules/ecss/service/CoDelService.java b/src/main/java/com/xujie/sys/modules/ecss/service/CoDelService.java index ea872678..5067d904 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/service/CoDelService.java +++ b/src/main/java/com/xujie/sys/modules/ecss/service/CoDelService.java @@ -32,6 +32,8 @@ public interface CoDelService { void cancelEcssDelHeader(EcssCoDelNotifyHeaderData data); + void recoverEcssDelHeader(EcssCoDelNotifyHeaderData data); + void changeEcssDelStatus(EcssCoDelNotifyHeaderData data); void updateEcssDelDetail(EcssCoDelNotifyDetailData data); diff --git a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java index 8f5211b3..55332d11 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java @@ -445,6 +445,26 @@ public class CoDelServiceImpl implements CoDelService { } } + @Override + @Transactional + public void recoverEcssDelHeader(EcssCoDelNotifyHeaderData data) { + data.setNotifyStatus("已计划"); + coDelMapper.changeEcssDelStatus(data); + // 恢复明细状态为正常 + coDelMapper.recoverEcssDelDetailStatus(data); + // 取消废弃 通知仓库和单证人员 + //设置邮件内容 + String text = "" + "
发货通知单" +data.getDelNo()+"【发票:"+ + data.getCmcInvoice()+"】取消废弃,恢复正常" + "
"; + String textHead = data.getCmcInvoice()+"【发票:"+ data.getCmcInvoice()+"】取消废弃"; + String[] mailAddress = coDelMapper.queryUsersByRoleName("关务仓库",data.getSite()).stream().map(SysUserEntity::getEmail).toArray(String[]::new); + String[] mailAddress2 = new String[]{coDelMapper.queryByUserName(data.getCreateBy()).getEmail()}; + String[] mailAddressAll = ArrayUtils.addAll(mailAddress, mailAddress2); + if (mailAddressAll.length>0) { + sendMailUtil(textHead, text,mailAddressAll, data); + } + } + private String getStringCellValue(XSSFRow row, int columnIndex) { Cell cell = row.getCell(columnIndex); if (cell == null || cell.getCellType() == CellType.BLANK) { @@ -660,11 +680,14 @@ public class CoDelServiceImpl implements CoDelService { } catch (Exception e) { throw new RuntimeException("导入失败:" + e.getMessage()); } - for (EcssCoDelNotifyData data:excelList) { - if (!inData.getCmcInvoice().equals(data.getCmcInvoice())) { - throw new RuntimeException("导入失败:Excel中存在与发货通知单["+inData.getCmcInvoice()+"]不一致的发票号"); - } + // 过滤掉发票号不一致的数据 + excelList.removeIf(data -> !inData.getCmcInvoice().equals(data.getCmcInvoice())); + + // 检查过滤后是否还有数据 + if (excelList.isEmpty()) { + throw new RuntimeException("导入失败:Excel中没有与发货通知单["+inData.getCmcInvoice()+"]一致的发票号数据"); } + List notifyHeader = coDelMapper.checkIfHasHeader(excelList.get(0).getCmcInvoice()); EcssCoDelNotifyHeaderData headerData; if (notifyHeader.isEmpty()) { @@ -1604,38 +1627,38 @@ public class CoDelServiceImpl implements CoDelService { XSSFWorkbook workbook = null; try { ExcelTemplate template = ExcelTemplate.load(new ClassPathResource(xlsx).getInputStream()); - + // 第一个sheet - 出口货物委托书 extractedExportGoods(data, template); workbook = template.render(0); - + // 第二个sheet - 发票 template.clearAll(); extractedInvoice(data, template, notifyHeader); template.render(1); - + // 第三个sheet - 箱单 template.clearAll(); exportPackingList(data, template, notifyHeader, 0); template.render(2); - + // 第四个sheet - 报关单 template.clearAll(); extractedDeclaration(data, template); template.render(3); - + // 第五个sheet - 申报要素 template.clearAll(); extractedElements(data, template); template.render(4); - + // 第六个sheet - 合同 (仅特定BU需要) if (notifyHeader.getBuNo().equals("04-MHM") || notifyHeader.getBuNo().equals("02-Hardtag")) { template.clearAll(); extractedContract(data, template); template.render(5); } - + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setHeader("Content-Disposition", "attachment; filename=\"单证信息.xlsx\""); workbook.write(response.getOutputStream()); @@ -2035,7 +2058,7 @@ public class CoDelServiceImpl implements CoDelService { if (!palletHeaderDataList.isEmpty()) { plt = "PLT"; } else { - totalPlt = totalQty; + totalPlt = totalCartons.setScale(0, RoundingMode.HALF_UP).intValue(); } template.addVar("total_plt", totalPlt+plt); template.addVar("total:", "total:"); diff --git a/src/main/resources/mapper/ecss/CoDelMapper.xml b/src/main/resources/mapper/ecss/CoDelMapper.xml index 57520e50..e6e3eb69 100644 --- a/src/main/resources/mapper/ecss/CoDelMapper.xml +++ b/src/main/resources/mapper/ecss/CoDelMapper.xml @@ -58,7 +58,7 @@ AND a.notify_status = #{query.notifyStatus} - AND a.notify_status != '已计划' AND a.notify_status != '订单取消' + AND a.notify_status != '已计划' AND a.ready_date>= #{query.startDate} @@ -232,6 +232,12 @@ where site=#{site} and delNo=#{delNo} + + update ecss_CoDelNotifyDetail + set status='正常' + where site=#{site} and delNo=#{delNo} + +