From a2d49d61e3dab4a62883ee4c6a16c5f2975e02b9 Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Fri, 3 Jul 2026 09:22:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=85=A5Excel=E4=B8=AD=E6=89=80?= =?UTF-8?q?=E6=9C=89Sheet=E5=9D=87=E6=9C=AA=E5=8C=B9=E9=85=8D=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E9=80=89=E4=B8=AD=E5=8F=91=E7=A5=A8=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CoDelExcelTXServiceImpl.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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 5a579576..30376864 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 @@ -286,6 +286,9 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { List failList = new ArrayList<>(); TransactionTemplate sheetTxTemplate = new TransactionTemplate(transactionManager); sheetTxTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); + String selectedInvoice = data == null ? null : StringUtils.trimToEmpty(data.getCmcInvoice()); + boolean filterBySelectedInvoice = StringUtils.isNotBlank(selectedInvoice); + boolean hasMatchedSelectedInvoice = false; try (Workbook workbook = WorkbookFactory.create(file.getInputStream())) { for (int i = 0; i < workbook.getNumberOfSheets(); i++) { @@ -294,6 +297,14 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { continue; } String cmcInvoice = getInvoiceFromSheet(sheet); + if (filterBySelectedInvoice && !StringUtils.equals(selectedInvoice, StringUtils.trimToEmpty(cmcInvoice))) { + log.info("TX改单导入跳过sheet: sheetName={}, sheetInvoice={}, selectedInvoice={}", + sheet.getSheetName(), cmcInvoice, selectedInvoice); + continue; + } + if (filterBySelectedInvoice) { + hasMatchedSelectedInvoice = true; + } try { sheetTxTemplate.executeWithoutResult(status -> { try { @@ -317,6 +328,9 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { } } } + if (filterBySelectedInvoice && !hasMatchedSelectedInvoice) { + throw new RuntimeException("导入Excel中所有Sheet均未匹配当前选中发票号[" + selectedInvoice + "]"); + } Map> result = new HashMap<>(); result.put("success", successList); @@ -349,7 +363,7 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { } if (StringUtils.isNotBlank(requestData.getCmcInvoice()) - && !StringUtils.equals(requestData.getCmcInvoice(), sheetInvoice)) { + && !StringUtils.equals(StringUtils.trimToEmpty(requestData.getCmcInvoice()), StringUtils.trimToEmpty(sheetInvoice))) { throw new RuntimeException("导入发票号[" + sheetInvoice + "]与当前选中发票号[" + requestData.getCmcInvoice() + "]不一致"); } @@ -360,7 +374,7 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { throw new RuntimeException("未找到原发货通知单,site=" + requestData.getSite() + ",delNo=" + requestData.getDelNo()); } if (StringUtils.isNotBlank(sourceHeader.getCmcInvoice()) - && !StringUtils.equals(sourceHeader.getCmcInvoice(), sheetInvoice)) { + && !StringUtils.equals(StringUtils.trimToEmpty(sourceHeader.getCmcInvoice()), StringUtils.trimToEmpty(sheetInvoice))) { throw new RuntimeException("导入发票号[" + sheetInvoice + "]与原发货通知单发票号[" + sourceHeader.getCmcInvoice() + "]不一致"); } return sourceHeader;