From cbf8f70fa9a443ed3502d36ae79ea72c1630d879 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Fri, 11 Jul 2025 09:01:08 +0800 Subject: [PATCH] =?UTF-8?q?demand:=20=E6=89=AB=E6=8F=8F=E6=BC=8F=E7=BB=84?= =?UTF-8?q?=E6=89=B9=E6=AC=A1supplierCode=E7=BA=BF=E7=A8=8B=E5=AE=89?= =?UTF-8?q?=E5=85=A8=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D=20committer:=20he?= =?UTF-8?q?yu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/emis/service/EmisBaseService.java | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java index a196e759a..49ec8a6ba 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java @@ -4501,7 +4501,7 @@ public class EmisBaseService { } public EmisBaseService.ProcessResult processWaybillBatch(List waybills, - Map> transPlanRulesByLineCode) { + Map> transPlanRulesByLineCode) { int successCount = 0; int failCount = 0; List failedBillCodes = new ArrayList<>(); @@ -4585,13 +4585,29 @@ public class EmisBaseService { String key = batch.getStartSiteCode() + "_" + batch.getNextSiteCode(); if (mergedBatches.containsKey(key)) { EmisTmsSiteBatch existingBatch = mergedBatches.get(key); - String existingSupplier = existingBatch.getSupplierCode(); - String newSupplier = batch.getSupplierCode(); - if (!existingSupplier.equals(newSupplier)) { - existingBatch.setSupplierCode(existingSupplier + "," + newSupplier); + // 合并supplierCode,去重、排序 + Set supplierSet = new TreeSet<>(); + if (StringUtils.isNotBlank(existingBatch.getSupplierCode())) { + supplierSet.addAll(Arrays.asList(existingBatch.getSupplierCode().split(","))); } + if (StringUtils.isNotBlank(batch.getSupplierCode())) { + supplierSet.addAll(Arrays.asList(batch.getSupplierCode().split(","))); + } + // 新建一个新的Batch对象,复制属性,保证线程安全 + EmisTmsSiteBatch newBatch = new EmisTmsSiteBatch(); + BeanUtils.copyProperties(existingBatch, newBatch); + newBatch.setSupplierCode(String.join(",", supplierSet)); + mergedBatches.put(key, newBatch); } else { - mergedBatches.put(key, batch); + // 新建对象,避免外部引用被修改 + EmisTmsSiteBatch newBatch = new EmisTmsSiteBatch(); + BeanUtils.copyProperties(batch, newBatch); + Set supplierSet = new TreeSet<>(); + if (StringUtils.isNotBlank(batch.getSupplierCode())) { + supplierSet.addAll(Arrays.asList(batch.getSupplierCode().split(","))); + } + newBatch.setSupplierCode(String.join(",", supplierSet)); + mergedBatches.put(key, newBatch); } } waybillBatches = new ArrayList<>(mergedBatches.values());