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());