소스 검색

装运明细对于明细数据去钢坯基础表重新拼接组坯号

lingpeng.li 2 달 전
부모
커밋
a3bd14ba6c
1개의 변경된 파일214개의 추가작업 그리고 0개의 파일을 삭제
  1. 214 0
      zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/service/impl/StorageBillServiceImpl.java

+ 214 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/service/impl/StorageBillServiceImpl.java

@@ -259,14 +259,23 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
             return result;
         }
         List<RollClubOneDetails> rollClubOneDetailsList = rollClubOneDetailsService.list(new LambdaQueryWrapper<RollClubOneDetails>().in(RollClubOneDetails::getStorageBillId, idList));
+        processRollClubOneDetails(rollClubOneDetailsList);
         result.setRollClubOneDetailsList(rollClubOneDetailsList);
+
         List<RollClubTwoDetails> rollClubTwoDetailsList = rollClubTwoDetailsService.list(new LambdaQueryWrapper<RollClubTwoDetails>().in(RollClubTwoDetails::getStorageBillId, idList));
+        processRollClubTwoDetails(rollClubTwoDetailsList);
         result.setRollClubTwoDetailsList(rollClubTwoDetailsList);
+
         List<RollClubThreeDetails> rollClubThreeDetailsList = rollClubThreeDetailsService.list(new LambdaQueryWrapper<RollClubThreeDetails>().in(RollClubThreeDetails::getStorageBillId, idList));
+        processRollClubThreeDetails(rollClubThreeDetailsList);
         result.setRollClubThreeDetailsList(rollClubThreeDetailsList);
+
         List<RollOutShippDetails> rollOutShippDetailsList = rollOutShippDetailsService.list(new LambdaQueryWrapper<RollOutShippDetails>().in(RollOutShippDetails::getStorageBillId, idList));
+        processRollOutShippDetails(rollOutShippDetailsList);
         result.setRollOutShippDetailsList(rollOutShippDetailsList);
+
         List<RollHeightDetails> rollHeightDetails = rollHeightDetailsService.list(new LambdaQueryWrapper<RollHeightDetails>().in(RollHeightDetails::getStorageBillId, idList));
+        processRollHeightDetails(rollHeightDetails);
         result.setRollHeightDetails(rollHeightDetails);
 
         //        List<StackingDownLogDetails> stackingDownLogDetailsList = new ArrayList<>();
@@ -3948,4 +3957,209 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
     }
 
 
+    public void processRollClubOneDetails(List<RollClubOneDetails> rollClubOneDetailsList) {
+        for (RollClubOneDetails details : rollClubOneDetailsList) {
+            // 1. 解析 billetNo 为 Set<String>,去重
+            Set<String> billetNoSet = Optional.ofNullable(details.getBilletNo())
+                    .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 并去重
+            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)
+                    .filter(StringUtils::isNotBlank)
+                    .forEach(assemblySet::add);
+
+            // 5. 拼接回 rollClubOneDetails 的 assemblyNumber
+            details.setAssemblyNumber(String.join(",", assemblySet));
+        }
+    }
+
+
+    public void processRollClubTwoDetails(List<RollClubTwoDetails> rollClubTwoDetailsList) {
+        for (RollClubTwoDetails details : rollClubTwoDetailsList) {
+            // 1. 解析 billetNo 为 Set<String>,去重
+            Set<String> billetNoSet = Optional.ofNullable(details.getBilletNo())
+                    .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 并去重
+            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)
+                    .filter(StringUtils::isNotBlank)
+                    .forEach(assemblySet::add);
+
+            // 5. 拼接回 rollClubOneDetails 的 assemblyNumber
+            details.setAssemblyNumber(String.join(",", assemblySet));
+        }
+    }
+
+
+
+    public void processRollClubThreeDetails(List<RollClubThreeDetails> rollClubThreeDetailsList) {
+        for (RollClubThreeDetails details : rollClubThreeDetailsList) {
+            // 1. 解析 billetNo 为 Set<String>,去重
+            Set<String> billetNoSet = Optional.ofNullable(details.getBilletNo())
+                    .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 并去重
+            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)
+                    .filter(StringUtils::isNotBlank)
+                    .forEach(assemblySet::add);
+
+            // 5. 拼接回 rollClubOneDetails 的 assemblyNumber
+            details.setAssemblyNumber(String.join(",", assemblySet));
+        }
+    }
+
+    public void processRollOutShippDetails(List<RollOutShippDetails> rollOutShippDetailsList) {
+        for (RollOutShippDetails details : rollOutShippDetailsList) {
+            // 1. 解析 billetNo 为 Set<String>,去重
+            Set<String> billetNoSet = Optional.ofNullable(details.getBilletNo())
+                    .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 并去重
+            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)
+                    .filter(StringUtils::isNotBlank)
+                    .forEach(assemblySet::add);
+
+            // 5. 拼接回 rollClubOneDetails 的 assemblyNumber
+            details.setAssemblyNumber(String.join(",", assemblySet));
+        }
+    }
+
+
+    public void processRollHeightDetails(List<RollHeightDetails> rollHeightDetailsList) {
+        for (RollHeightDetails details : rollHeightDetailsList) {
+            // 1. 解析 billetNo 为 Set<String>,去重
+            Set<String> billetNoSet = Optional.ofNullable(details.getBilletNo())
+                    .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 并去重
+            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)
+                    .filter(StringUtils::isNotBlank)
+                    .forEach(assemblySet::add);
+
+            // 5. 拼接回 rollClubOneDetails 的 assemblyNumber
+            details.setAssemblyNumber(String.join(",", assemblySet));
+        }
+    }
+
+
 }