ソースを参照

装运单列表查询组坯号去重

lingpeng.li 1 ヶ月 前
コミット
f7d1f575a1

+ 19 - 11
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/controller/StorageBillController.java

@@ -178,18 +178,28 @@ public class StorageBillController extends JeecgController<StorageBill, IStorage
 			));
 		}
 
-		// 7. 遍历当前页 StorageBill,计算 amountTotal 和 assemblyNumber
+		// 7. 遍历 StorageBill,填充 amountTotal 和 assemblyNumber
 		for (StorageBill bill : records) {
 			List<BilletAutoTmp> relatedBillets = tmpMap.getOrDefault(bill.getId(), Collections.emptyList());
 
-			// 计算 amountTotal
+			// ---- 计算 amountTotal ----
 			long count = relatedBillets.stream()
 					.mapToLong(tmp -> StringUtils.isNotBlank(tmp.getStackAddr()) ? 4L : 1L)
 					.sum();
 			bill.setAmountTotal(Optional.ofNullable(bill.getAmountTotal()).orElse(0) + (int) count);
 
-			// 拼接 assemblyNumber
-			String assemblyNumbers = relatedBillets.stream()
+			// ---- 拼接 assemblyNumber,确保无重复 ----
+			Set<String> assemblySet = new LinkedHashSet<>();
+
+			// 原始的 bill.getAssemblyNumber()
+			Optional.ofNullable(bill.getAssemblyNumber())
+					.ifPresent(old -> Arrays.stream(old.replaceAll(",", ",").split(","))
+							.map(String::trim)
+							.filter(StringUtils::isNotBlank)
+							.forEach(assemblySet::add));
+
+			// 新查询到的 assemblyNumbers
+			relatedBillets.stream()
 					.map(BilletAutoTmp::getBilletNo)
 					.filter(StringUtils::isNotBlank)
 					.flatMap(bn -> Arrays.stream(bn.split(",")))
@@ -197,16 +207,14 @@ public class StorageBillController extends JeecgController<StorageBill, IStorage
 					.filter(StringUtils::isNotBlank)
 					.map(billetToAssemblyMap::get)
 					.filter(Objects::nonNull)
-					.distinct()
-					.collect(Collectors.joining(","));
+					.forEach(assemblySet::add);
 
-			if (StringUtils.isNotBlank(assemblyNumbers)) {
-				bill.setAssemblyNumber(StringUtils.isNotBlank(bill.getAssemblyNumber())
-						? bill.getAssemblyNumber() + "," + assemblyNumbers
-						: assemblyNumbers);
-			}
+			// 拼接回 bill
+			String mergedAssemblyNumbers = String.join(",", assemblySet);
+			bill.setAssemblyNumber(mergedAssemblyNumbers);
 		}
 
+
 		// 8. 填充车次编号与交班记录信息
 		storageBillService.fillCarNumbersAndShiftInfo(records);