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;