|
@@ -3958,82 +3958,125 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
|
|
|
|
|
|
|
|
|
public void processRollClubOneDetails(List<RollClubOneDetails> rollClubOneDetailsList) {
|
|
|
+ if (CollectionUtils.isEmpty(rollClubOneDetailsList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 1. 统一收集所有 billetNo,避免多次查询
|
|
|
+ Set<String> allBilletNos = rollClubOneDetailsList.stream()
|
|
|
+ .map(RollClubOneDetails::getBilletNo)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
+ .flatMap(billetNo -> Arrays.stream(billetNo.split(",")))
|
|
|
+ .map(String::trim)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+
|
|
|
+ // 2. 一次性查询 BilletBasicInfo,避免重复查询数据库
|
|
|
+ Map<String, String> billetToAssemblyMap = new HashMap<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(allBilletNos)) {
|
|
|
+ List<BilletBasicInfo> billetBasicInfoList = billetBasicInfoService.list(
|
|
|
+ new LambdaQueryWrapper<BilletBasicInfo>().in(BilletBasicInfo::getBilletNo, allBilletNos));
|
|
|
+
|
|
|
+ // 构建 billetNo -> assemblyNumber 映射
|
|
|
+ billetToAssemblyMap = billetBasicInfoList.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ BilletBasicInfo::getBilletNo,
|
|
|
+ BilletBasicInfo::getAssemblyNumber,
|
|
|
+ (existing, replacement) -> existing // 遇到重复 billetNo,保留第一个
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. 遍历 details 并更新 assemblyNumber
|
|
|
for (RollClubOneDetails details : rollClubOneDetailsList) {
|
|
|
- // 1. 解析 billetNo 为 Set<String>,去重
|
|
|
+ // 解析 billetNo
|
|
|
Set<String> billetNoSet = Optional.ofNullable(details.getBilletNo())
|
|
|
- .map(billetNo -> Arrays.stream(billetNo.split(",")) // 按逗号分割
|
|
|
- .map(String::trim) // 去除前后空格
|
|
|
- .filter(StringUtils::isNotBlank) // 过滤空值
|
|
|
+ .map(billetNo -> Arrays.stream(billetNo.split(","))
|
|
|
+ .map(String::trim)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
.collect(Collectors.toSet()))
|
|
|
.orElse(Collections.emptySet());
|
|
|
|
|
|
- // 2. 如果 billetNoSet 为空,则无需查询,跳过
|
|
|
if (billetNoSet.isEmpty()) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- // 3. 查询 BilletBasicInfo 获取 assemblyNumber
|
|
|
- List<BilletBasicInfo> billetBasicInfoList = billetBasicInfoService.list(
|
|
|
- new LambdaQueryWrapper<BilletBasicInfo>().in(BilletBasicInfo::getBilletNo, billetNoSet)
|
|
|
- );
|
|
|
-
|
|
|
- // 4. 提取 assemblyNumber 并去重
|
|
|
+ // 先加入 details 现有的 assemblyNumber
|
|
|
Set<String> assemblySet = new HashSet<>();
|
|
|
-
|
|
|
- // 先加入 details 现有的 assemblyNumber(确保不为 null 且不为空字符串)
|
|
|
String existingAssembly = details.getAssemblyNumber();
|
|
|
if (StringUtils.isNotBlank(existingAssembly)) {
|
|
|
Collections.addAll(assemblySet, existingAssembly.split(","));
|
|
|
}
|
|
|
|
|
|
- // 再加入从 BilletBasicInfo 查询到的 assemblyNumber
|
|
|
- billetBasicInfoList.stream()
|
|
|
- .map(BilletBasicInfo::getAssemblyNumber)
|
|
|
+ // 直接从 Map 获取 assemblyNumber,避免重复查询数据库
|
|
|
+ billetNoSet.stream()
|
|
|
+ .map(billetToAssemblyMap::get)
|
|
|
.filter(StringUtils::isNotBlank)
|
|
|
.forEach(assemblySet::add);
|
|
|
|
|
|
- // 5. 拼接回 rollClubOneDetails 的 assemblyNumber
|
|
|
+ // 更新 assemblyNumber
|
|
|
details.setAssemblyNumber(String.join(",", assemblySet));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
public void processRollClubTwoDetails(List<RollClubTwoDetails> rollClubTwoDetailsList) {
|
|
|
+ if (CollectionUtils.isEmpty(rollClubTwoDetailsList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 1. 统一收集所有 billetNo,避免多次查询
|
|
|
+ Set<String> allBilletNos = rollClubTwoDetailsList.stream()
|
|
|
+ .map(RollClubTwoDetails::getBilletNo)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
+ .flatMap(billetNo -> Arrays.stream(billetNo.split(",")))
|
|
|
+ .map(String::trim)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+
|
|
|
+ // 2. 一次性查询 BilletBasicInfo,避免重复查询数据库
|
|
|
+ Map<String, String> billetToAssemblyMap = new HashMap<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(allBilletNos)) {
|
|
|
+ List<BilletBasicInfo> billetBasicInfoList = billetBasicInfoService.list(
|
|
|
+ new LambdaQueryWrapper<BilletBasicInfo>().in(BilletBasicInfo::getBilletNo, allBilletNos));
|
|
|
+
|
|
|
+ // 构建 billetNo -> assemblyNumber 映射
|
|
|
+ billetToAssemblyMap = billetBasicInfoList.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ BilletBasicInfo::getBilletNo,
|
|
|
+ BilletBasicInfo::getAssemblyNumber,
|
|
|
+ (existing, replacement) -> existing // 遇到重复 billetNo,保留第一个
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. 遍历 details 并更新 assemblyNumber
|
|
|
for (RollClubTwoDetails details : rollClubTwoDetailsList) {
|
|
|
- // 1. 解析 billetNo 为 Set<String>,去重
|
|
|
+ // 解析 billetNo
|
|
|
Set<String> billetNoSet = Optional.ofNullable(details.getBilletNo())
|
|
|
- .map(billetNo -> Arrays.stream(billetNo.split(",")) // 按逗号分割
|
|
|
- .map(String::trim) // 去除前后空格
|
|
|
- .filter(StringUtils::isNotBlank) // 过滤空值
|
|
|
+ .map(billetNo -> Arrays.stream(billetNo.split(","))
|
|
|
+ .map(String::trim)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
.collect(Collectors.toSet()))
|
|
|
.orElse(Collections.emptySet());
|
|
|
|
|
|
- // 2. 如果 billetNoSet 为空,则无需查询,跳过
|
|
|
if (billetNoSet.isEmpty()) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- // 3. 查询 BilletBasicInfo 获取 assemblyNumber
|
|
|
- List<BilletBasicInfo> billetBasicInfoList = billetBasicInfoService.list(
|
|
|
- new LambdaQueryWrapper<BilletBasicInfo>().in(BilletBasicInfo::getBilletNo, billetNoSet)
|
|
|
- );
|
|
|
-
|
|
|
- // 4. 提取 assemblyNumber 并去重
|
|
|
+ // 先加入 details 现有的 assemblyNumber
|
|
|
Set<String> assemblySet = new HashSet<>();
|
|
|
-
|
|
|
- // 先加入 details 现有的 assemblyNumber(确保不为 null 且不为空字符串)
|
|
|
String existingAssembly = details.getAssemblyNumber();
|
|
|
if (StringUtils.isNotBlank(existingAssembly)) {
|
|
|
Collections.addAll(assemblySet, existingAssembly.split(","));
|
|
|
}
|
|
|
|
|
|
- // 再加入从 BilletBasicInfo 查询到的 assemblyNumber
|
|
|
- billetBasicInfoList.stream()
|
|
|
- .map(BilletBasicInfo::getAssemblyNumber)
|
|
|
+ // 直接从 Map 获取 assemblyNumber,避免重复查询数据库
|
|
|
+ billetNoSet.stream()
|
|
|
+ .map(billetToAssemblyMap::get)
|
|
|
.filter(StringUtils::isNotBlank)
|
|
|
.forEach(assemblySet::add);
|
|
|
|
|
|
- // 5. 拼接回 rollClubOneDetails 的 assemblyNumber
|
|
|
+ // 更新 assemblyNumber
|
|
|
details.setAssemblyNumber(String.join(",", assemblySet));
|
|
|
}
|
|
|
}
|
|
@@ -4041,125 +4084,189 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
|
|
|
|
|
|
|
|
|
public void processRollClubThreeDetails(List<RollClubThreeDetails> rollClubThreeDetailsList) {
|
|
|
+ if (CollectionUtils.isEmpty(rollClubThreeDetailsList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 1. 统一收集所有 billetNo,避免多次查询
|
|
|
+ Set<String> allBilletNos = rollClubThreeDetailsList.stream()
|
|
|
+ .map(RollClubThreeDetails::getBilletNo)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
+ .flatMap(billetNo -> Arrays.stream(billetNo.split(",")))
|
|
|
+ .map(String::trim)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+
|
|
|
+ // 2. 一次性查询 BilletBasicInfo,避免重复查询数据库
|
|
|
+ Map<String, String> billetToAssemblyMap = new HashMap<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(allBilletNos)) {
|
|
|
+ List<BilletBasicInfo> billetBasicInfoList = billetBasicInfoService.list(
|
|
|
+ new LambdaQueryWrapper<BilletBasicInfo>().in(BilletBasicInfo::getBilletNo, allBilletNos));
|
|
|
+
|
|
|
+ // 构建 billetNo -> assemblyNumber 映射
|
|
|
+ billetToAssemblyMap = billetBasicInfoList.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ BilletBasicInfo::getBilletNo,
|
|
|
+ BilletBasicInfo::getAssemblyNumber,
|
|
|
+ (existing, replacement) -> existing // 遇到重复 billetNo,保留第一个
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. 遍历 details 并更新 assemblyNumber
|
|
|
for (RollClubThreeDetails details : rollClubThreeDetailsList) {
|
|
|
- // 1. 解析 billetNo 为 Set<String>,去重
|
|
|
+ // 解析 billetNo
|
|
|
Set<String> billetNoSet = Optional.ofNullable(details.getBilletNo())
|
|
|
- .map(billetNo -> Arrays.stream(billetNo.split(",")) // 按逗号分割
|
|
|
- .map(String::trim) // 去除前后空格
|
|
|
- .filter(StringUtils::isNotBlank) // 过滤空值
|
|
|
+ .map(billetNo -> Arrays.stream(billetNo.split(","))
|
|
|
+ .map(String::trim)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
.collect(Collectors.toSet()))
|
|
|
.orElse(Collections.emptySet());
|
|
|
|
|
|
- // 2. 如果 billetNoSet 为空,则无需查询,跳过
|
|
|
if (billetNoSet.isEmpty()) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- // 3. 查询 BilletBasicInfo 获取 assemblyNumber
|
|
|
- List<BilletBasicInfo> billetBasicInfoList = billetBasicInfoService.list(
|
|
|
- new LambdaQueryWrapper<BilletBasicInfo>().in(BilletBasicInfo::getBilletNo, billetNoSet)
|
|
|
- );
|
|
|
-
|
|
|
- // 4. 提取 assemblyNumber 并去重
|
|
|
+ // 先加入 details 现有的 assemblyNumber
|
|
|
Set<String> assemblySet = new HashSet<>();
|
|
|
-
|
|
|
- // 先加入 details 现有的 assemblyNumber(确保不为 null 且不为空字符串)
|
|
|
String existingAssembly = details.getAssemblyNumber();
|
|
|
if (StringUtils.isNotBlank(existingAssembly)) {
|
|
|
Collections.addAll(assemblySet, existingAssembly.split(","));
|
|
|
}
|
|
|
|
|
|
- // 再加入从 BilletBasicInfo 查询到的 assemblyNumber
|
|
|
- billetBasicInfoList.stream()
|
|
|
- .map(BilletBasicInfo::getAssemblyNumber)
|
|
|
+ // 直接从 Map 获取 assemblyNumber,避免重复查询数据库
|
|
|
+ billetNoSet.stream()
|
|
|
+ .map(billetToAssemblyMap::get)
|
|
|
.filter(StringUtils::isNotBlank)
|
|
|
.forEach(assemblySet::add);
|
|
|
|
|
|
- // 5. 拼接回 rollClubOneDetails 的 assemblyNumber
|
|
|
+ // 更新 assemblyNumber
|
|
|
details.setAssemblyNumber(String.join(",", assemblySet));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
public void processRollOutShippDetails(List<RollOutShippDetails> rollOutShippDetailsList) {
|
|
|
+ if (CollectionUtils.isEmpty(rollOutShippDetailsList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 1. 统一收集所有 billetNo,避免多次查询
|
|
|
+ Set<String> allBilletNos = rollOutShippDetailsList.stream()
|
|
|
+ .map(RollOutShippDetails::getBilletNo)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
+ .flatMap(billetNo -> Arrays.stream(billetNo.split(",")))
|
|
|
+ .map(String::trim)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+
|
|
|
+ // 2. 一次性查询 BilletBasicInfo,避免重复查询数据库
|
|
|
+ Map<String, String> billetToAssemblyMap = new HashMap<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(allBilletNos)) {
|
|
|
+ List<BilletBasicInfo> billetBasicInfoList = billetBasicInfoService.list(
|
|
|
+ new LambdaQueryWrapper<BilletBasicInfo>().in(BilletBasicInfo::getBilletNo, allBilletNos));
|
|
|
+
|
|
|
+ // 构建 billetNo -> assemblyNumber 映射
|
|
|
+ billetToAssemblyMap = billetBasicInfoList.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ BilletBasicInfo::getBilletNo,
|
|
|
+ BilletBasicInfo::getAssemblyNumber,
|
|
|
+ (existing, replacement) -> existing // 遇到重复 billetNo,保留第一个
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. 遍历 details 并更新 assemblyNumber
|
|
|
for (RollOutShippDetails details : rollOutShippDetailsList) {
|
|
|
- // 1. 解析 billetNo 为 Set<String>,去重
|
|
|
+ // 解析 billetNo
|
|
|
Set<String> billetNoSet = Optional.ofNullable(details.getBilletNo())
|
|
|
- .map(billetNo -> Arrays.stream(billetNo.split(",")) // 按逗号分割
|
|
|
- .map(String::trim) // 去除前后空格
|
|
|
- .filter(StringUtils::isNotBlank) // 过滤空值
|
|
|
+ .map(billetNo -> Arrays.stream(billetNo.split(","))
|
|
|
+ .map(String::trim)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
.collect(Collectors.toSet()))
|
|
|
.orElse(Collections.emptySet());
|
|
|
|
|
|
- // 2. 如果 billetNoSet 为空,则无需查询,跳过
|
|
|
if (billetNoSet.isEmpty()) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- // 3. 查询 BilletBasicInfo 获取 assemblyNumber
|
|
|
- List<BilletBasicInfo> billetBasicInfoList = billetBasicInfoService.list(
|
|
|
- new LambdaQueryWrapper<BilletBasicInfo>().in(BilletBasicInfo::getBilletNo, billetNoSet)
|
|
|
- );
|
|
|
-
|
|
|
- // 4. 提取 assemblyNumber 并去重
|
|
|
+ // 先加入 details 现有的 assemblyNumber
|
|
|
Set<String> assemblySet = new HashSet<>();
|
|
|
-
|
|
|
- // 先加入 details 现有的 assemblyNumber(确保不为 null 且不为空字符串)
|
|
|
String existingAssembly = details.getAssemblyNumber();
|
|
|
if (StringUtils.isNotBlank(existingAssembly)) {
|
|
|
Collections.addAll(assemblySet, existingAssembly.split(","));
|
|
|
}
|
|
|
|
|
|
- // 再加入从 BilletBasicInfo 查询到的 assemblyNumber
|
|
|
- billetBasicInfoList.stream()
|
|
|
- .map(BilletBasicInfo::getAssemblyNumber)
|
|
|
+ // 直接从 Map 获取 assemblyNumber,避免重复查询数据库
|
|
|
+ billetNoSet.stream()
|
|
|
+ .map(billetToAssemblyMap::get)
|
|
|
.filter(StringUtils::isNotBlank)
|
|
|
.forEach(assemblySet::add);
|
|
|
|
|
|
- // 5. 拼接回 rollClubOneDetails 的 assemblyNumber
|
|
|
+ // 更新 assemblyNumber
|
|
|
details.setAssemblyNumber(String.join(",", assemblySet));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
public void processRollHeightDetails(List<RollHeightDetails> rollHeightDetailsList) {
|
|
|
+ if (CollectionUtils.isEmpty(rollHeightDetailsList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 1. 统一收集所有 billetNo,避免多次查询
|
|
|
+ Set<String> allBilletNos = rollHeightDetailsList.stream()
|
|
|
+ .map(RollHeightDetails::getBilletNo)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
+ .flatMap(billetNo -> Arrays.stream(billetNo.split(",")))
|
|
|
+ .map(String::trim)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+
|
|
|
+ // 2. 一次性查询 BilletBasicInfo,避免重复查询数据库
|
|
|
+ Map<String, String> billetToAssemblyMap = new HashMap<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(allBilletNos)) {
|
|
|
+ List<BilletBasicInfo> billetBasicInfoList = billetBasicInfoService.list(
|
|
|
+ new LambdaQueryWrapper<BilletBasicInfo>().in(BilletBasicInfo::getBilletNo, allBilletNos));
|
|
|
+
|
|
|
+ // 构建 billetNo -> assemblyNumber 映射
|
|
|
+ billetToAssemblyMap = billetBasicInfoList.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ BilletBasicInfo::getBilletNo,
|
|
|
+ BilletBasicInfo::getAssemblyNumber,
|
|
|
+ (existing, replacement) -> existing // 遇到重复 billetNo,保留第一个
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. 遍历 details 并更新 assemblyNumber
|
|
|
for (RollHeightDetails details : rollHeightDetailsList) {
|
|
|
- // 1. 解析 billetNo 为 Set<String>,去重
|
|
|
+ // 解析 billetNo
|
|
|
Set<String> billetNoSet = Optional.ofNullable(details.getBilletNo())
|
|
|
- .map(billetNo -> Arrays.stream(billetNo.split(",")) // 按逗号分割
|
|
|
- .map(String::trim) // 去除前后空格
|
|
|
- .filter(StringUtils::isNotBlank) // 过滤空值
|
|
|
+ .map(billetNo -> Arrays.stream(billetNo.split(","))
|
|
|
+ .map(String::trim)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
.collect(Collectors.toSet()))
|
|
|
.orElse(Collections.emptySet());
|
|
|
|
|
|
- // 2. 如果 billetNoSet 为空,则无需查询,跳过
|
|
|
if (billetNoSet.isEmpty()) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- // 3. 查询 BilletBasicInfo 获取 assemblyNumber
|
|
|
- List<BilletBasicInfo> billetBasicInfoList = billetBasicInfoService.list(
|
|
|
- new LambdaQueryWrapper<BilletBasicInfo>().in(BilletBasicInfo::getBilletNo, billetNoSet)
|
|
|
- );
|
|
|
-
|
|
|
- // 4. 提取 assemblyNumber 并去重
|
|
|
+ // 先加入 details 现有的 assemblyNumber
|
|
|
Set<String> assemblySet = new HashSet<>();
|
|
|
-
|
|
|
- // 先加入 details 现有的 assemblyNumber(确保不为 null 且不为空字符串)
|
|
|
String existingAssembly = details.getAssemblyNumber();
|
|
|
if (StringUtils.isNotBlank(existingAssembly)) {
|
|
|
Collections.addAll(assemblySet, existingAssembly.split(","));
|
|
|
}
|
|
|
|
|
|
- // 再加入从 BilletBasicInfo 查询到的 assemblyNumber
|
|
|
- billetBasicInfoList.stream()
|
|
|
- .map(BilletBasicInfo::getAssemblyNumber)
|
|
|
+ // 直接从 Map 获取 assemblyNumber,避免重复查询数据库
|
|
|
+ billetNoSet.stream()
|
|
|
+ .map(billetToAssemblyMap::get)
|
|
|
.filter(StringUtils::isNotBlank)
|
|
|
.forEach(assemblySet::add);
|
|
|
|
|
|
- // 5. 拼接回 rollClubOneDetails 的 assemblyNumber
|
|
|
+ // 更新 assemblyNumber
|
|
|
details.setAssemblyNumber(String.join(",", assemblySet));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
}
|