ソースを参照

C端自动化轧钢外运保存时对组坯号去重

lingpeng.li 1 ヶ月 前
コミット
96535fe2de

+ 27 - 10
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/billetActual/service/impl/BilletHotsendBaseServiceImpl.java

@@ -1064,18 +1064,35 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 			storageBillInfo.setSize(finalSizeString);
 		}
 
-		List<String> stringList = billetBasicInfoList.stream().map(BilletBasicInfo::getAssemblyNumber).filter(assemblyNumber -> oConvertUtils.isNotEmpty(assemblyNumber)).collect(Collectors.toList());
-		if(oConvertUtils.listIsNotEmpty(stringList)) {
-			String distinctAssemblyNumber = billetBasicInfoList.stream()
-					.map(BilletBasicInfo::getAssemblyNumber)
-					.filter(assemblyNumber -> oConvertUtils.isNotEmpty(assemblyNumber))
-					.distinct().collect(Collectors.joining(","));
-			String finalAssemblyNumber = Optional.ofNullable(storageBillInfo.getAssemblyNumber())
+		List<String> stringList = billetBasicInfoList.stream()
+				.map(BilletBasicInfo::getAssemblyNumber)
+				.filter(oConvertUtils::isNotEmpty)
+				.collect(Collectors.toList());
+
+		if (oConvertUtils.listIsNotEmpty(stringList)) {
+			Set<String> assemblyNumberSet = new LinkedHashSet<>();
+
+			// 处理旧的 assemblyNumber(直接按照英文逗号 , 拆分)
+			String oldAssemblyNumber = storageBillInfo.getAssemblyNumber();
+			if (oConvertUtils.isNotEmpty(oldAssemblyNumber)) {
+				Arrays.stream(oldAssemblyNumber.split(","))
+						.map(String::trim)
+						.filter(oConvertUtils::isNotEmpty)
+						.forEach(assemblyNumberSet::add);
+			}
+
+			// 处理新的 assemblyNumber(也是英文逗号)
+			stringList.stream()
+					.flatMap(s -> Arrays.stream(s.split(",")))
+					.map(String::trim)
 					.filter(oConvertUtils::isNotEmpty)
-					.map(s -> s + "," + distinctAssemblyNumber)
-					.orElse(distinctAssemblyNumber);
-			storageBillInfo.setAssemblyNumber(finalAssemblyNumber);
+					.forEach(assemblyNumberSet::add);
+
+			// 最后重新赋值
+			storageBillInfo.setAssemblyNumber(String.join(",", assemblyNumberSet));
 		}
+
+
 		storageBillInfo.setBtype("0");
 		storageBillService.updateById(storageBillInfo);