Explorar el Código

钢坯热装单、棒二、棒三、上若-班统计以及钢坯热装实绩-分页列表去除堆垛的数据

lingpeng.li hace 2 meses
padre
commit
213dc58846

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

@@ -597,6 +597,7 @@ public class StorageBillController extends JeecgController<StorageBill, IStorage
 			rollClubTwoDetailsQueryWrapper.in("heat_no", hostNoList)
 					.groupBy("heat_no");
 		}
+
 		if (billetHotsendChangeShift != null && billetHotsendChangeShift.getCreateTime() != null) {
 			if (oConvertUtils.isNotEmpty(queryDTO.getChangeShiftId())) {
 				// 当 changeShiftId 不为空时,时间范围从 createTime 到 updateTime
@@ -619,6 +620,11 @@ public class StorageBillController extends JeecgController<StorageBill, IStorage
 			rollClubTwoDetailsQueryWrapper.eq("shift_group", queryDTO.getShiftGroup());
 		}
 
+		rollClubTwoDetailsQueryWrapper
+				.isNull("stack_addr")  // stackAddr 为 NULL
+				.or()
+				.eq("stack_addr", ""); // stackAddr 为空字符串
+
 		List<RollClubTwoDetails> list1 = rollClubTwoDetailsService.list(rollClubTwoDetailsQueryWrapper);
 		QueryWrapper<RollClubThreeDetails> rollClubThreeDetailsQueryWrapper = new QueryWrapper<>();
 		if (!hostNoList.isEmpty()) {
@@ -644,6 +650,12 @@ public class StorageBillController extends JeecgController<StorageBill, IStorage
 		if (queryDTO.getShiftGroup() != null) {
 			rollClubThreeDetailsQueryWrapper.eq("shift_group", queryDTO.getShiftGroup());
 		}
+
+		rollClubThreeDetailsQueryWrapper
+				.isNull("stack_addr")  // stackAddr 为 NULL
+				.or()
+				.eq("stack_addr", ""); // stackAddr 为空字符串
+
 		List<RollClubThreeDetails> list2 = rollClubThreeDetailsService.list(rollClubThreeDetailsQueryWrapper);
 		QueryWrapper<RollOutShippDetails> rollOutShippDetailsQueryWrapper = new QueryWrapper<>();
 		if (!hostNoList.isEmpty()) {
@@ -669,6 +681,12 @@ public class StorageBillController extends JeecgController<StorageBill, IStorage
 		if (queryDTO.getShiftGroup() != null) {
 			rollOutShippDetailsQueryWrapper.eq("shift_group", queryDTO.getShiftGroup());
 		}
+
+		rollOutShippDetailsQueryWrapper
+				.isNull("stack_addr")  // stackAddr 为 NULL
+				.or()
+				.eq("stack_addr", ""); // stackAddr 为空字符串
+
 		List<RollOutShippDetails> list3 = rollOutShippDetailsService.list(rollOutShippDetailsQueryWrapper);
 
 		// 使用 Set 存储唯一的 heat_no
@@ -734,6 +752,11 @@ public class StorageBillController extends JeecgController<StorageBill, IStorage
 				}
 			}
 
+			queryWrapper1
+					.isNull(RollClubTwoDetails::getStackAddr)  // stackAddr 为 NULL
+					.or()
+					.eq(RollClubTwoDetails::getStackAddr, ""); // stackAddr 为空字符串
+
 			List<RollClubTwoDetails> rollClubTwoDetailsList = rollClubTwoDetailsService.list(queryWrapper1);
 			// 使用 Stream API 统计 blankOutput 字段的总和
 			OptionalDouble totalBlankOutputOptional1 = rollClubTwoDetailsList != null ?
@@ -805,6 +828,11 @@ public class StorageBillController extends JeecgController<StorageBill, IStorage
 				}
 			}
 
+			queryWrapper2
+					.isNull(RollClubThreeDetails::getStackAddr)  // stackAddr 为 NULL
+					.or()
+					.eq(RollClubThreeDetails::getStackAddr, ""); // stackAddr 为空字符串
+
 			List<RollClubThreeDetails> rollClubThreeDetailsList = rollClubThreeDetailsService.list(queryWrapper2);
 			// 使用 Stream API 统计 blankOutput 字段的总和
 			OptionalDouble totalBlankOutputOptional2 = rollClubThreeDetailsList != null ?
@@ -876,6 +904,11 @@ public class StorageBillController extends JeecgController<StorageBill, IStorage
 				}
 			}
 
+			queryWrapper3
+					.isNull(RollOutShippDetails::getStackAddr)  // stackAddr 为 NULL
+					.or()
+					.eq(RollOutShippDetails::getStackAddr, ""); // stackAddr 为空字符串
+
 			List<RollOutShippDetails> rollOutShippDetailsList = rollOutShippDetailsService.list(queryWrapper3);
 			// 使用 Stream API 统计 blankOutput 字段的总和
 			OptionalDouble totalBlankOutputOptional = rollOutShippDetailsList != null ?

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

@@ -761,33 +761,43 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
 
 
         List<RollClubTwoDetails> rollClubTwoDetailsList = rollClubTwoDetailsService.list(queryWrapper);
-        if (oConvertUtils.listIsNotEmpty(rollClubTwoDetailsList)){
+        if (oConvertUtils.listIsNotEmpty(rollClubTwoDetailsList)) {
             statisticsDetailsList1 = rollClubTwoDetailsList.stream()
+                    // 过滤掉 stackAddr 不为空的记录
+                    .filter(detail -> detail.getStackAddr() == null || detail.getStackAddr().isEmpty())
                     .collect(Collectors.groupingBy(RollClubTwoDetails::getSize, Collectors.toList()))
                     .entrySet().stream()
                     .map(entry -> {
                         String size = entry.getKey();
                         List<RollClubTwoDetails> group = entry.getValue();
-                        // 统计总支数,如果 stackAddr 不为空,则乘以 4
-                        int nums = group.stream()
-                                .mapToInt(detail -> (detail.getStackAddr() != null && !detail.getStackAddr().isEmpty()) ? 4 : 1)
-                                .sum();
+
+                        // 统计总支数,过滤后 stackAddr 均为空,直接按 1 计算
+                        int nums = group.size();
+
                         Double totalBlankOutput = group.stream().mapToDouble(RollClubTwoDetails::getBlankOutput).sum();
                         BigDecimal bd = BigDecimal.valueOf(totalBlankOutput).setScale(4, BigDecimal.ROUND_HALF_UP);
                         double finalBlankOutput = bd.doubleValue();
+
                         String ccmNos = group.isEmpty() ? null : group.get(0).getCcmNo();
                         return new DestinationStatisticsDetails(size, nums, finalBlankOutput, ccmNos);
                     }).collect(Collectors.toList());
+
+            // 计算总数时,同样过滤 stackAddr 不为空的记录
             int totalNums = statisticsDetailsList1.stream()
                     .mapToInt(DestinationStatisticsDetails::getNums)
                     .sum();
 
-            double totalBlankOutputs = rollClubTwoDetailsList.stream().mapToDouble(RollClubTwoDetails::getBlankOutput).sum();
+            double totalBlankOutputs = rollClubTwoDetailsList.stream()
+                    .filter(detail -> detail.getStackAddr() == null || detail.getStackAddr().isEmpty()) // 过滤
+                    .mapToDouble(RollClubTwoDetails::getBlankOutput)
+                    .sum();
+
             BigDecimal bd = BigDecimal.valueOf(totalBlankOutputs).setScale(4, BigDecimal.ROUND_HALF_UP);
             totalNumsAll += totalNums;
             totalBlankOutputsAll = totalBlankOutputsAll.add(bd);
         }
 
+
         LambdaQueryWrapper<RollClubThreeDetails> queryWrapper1 = new LambdaQueryWrapper<>();
         queryWrapper1.eq(RollClubThreeDetails::getCcmNo, ccmNo);
         queryWrapper1.eq(RollClubThreeDetails::getShiftGroup, shiftGroup);
@@ -804,34 +814,43 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
         }
 
         List<RollClubThreeDetails> rollClubThreeDetailsList = rollClubThreeDetailsService.list(queryWrapper1);
-        if (oConvertUtils.listIsNotEmpty(rollClubThreeDetailsList)){
+        if (oConvertUtils.listIsNotEmpty(rollClubThreeDetailsList)) {
             statisticsDetailsList2 = rollClubThreeDetailsList.stream()
+                    // 过滤掉 stackAddr 不为空的记录
+                    .filter(detail -> detail.getStackAddr() == null || detail.getStackAddr().isEmpty())
                     .collect(Collectors.groupingBy(RollClubThreeDetails::getSize, Collectors.toList()))
                     .entrySet().stream()
                     .map(entry -> {
                         String size = entry.getKey();
                         List<RollClubThreeDetails> group = entry.getValue();
-                        // 统计总支数,如果 stackAddr 不为空,则乘以 4
-                        int nums = group.stream()
-                                .mapToInt(detail -> (detail.getStackAddr() != null && !detail.getStackAddr().isEmpty()) ? 4 : 1)
-                                .sum();
+
+                        // 统计总支数,过滤后 stackAddr 均为空,直接按 1 计算
+                        int nums = group.size();
+
                         Double totalBlankOutput = group.stream().mapToDouble(RollClubThreeDetails::getBlankOutput).sum();
                         BigDecimal bd = BigDecimal.valueOf(totalBlankOutput).setScale(4, BigDecimal.ROUND_HALF_UP);
                         double finalBlankOutput = bd.doubleValue();
+
                         String ccmNos = group.isEmpty() ? null : group.get(0).getCcmNo();
                         return new DestinationStatisticsDetails(size, nums, finalBlankOutput, ccmNos);
                     }).collect(Collectors.toList());
+
+            // 计算总数时,同样过滤 stackAddr 不为空的记录
             int totalNums = statisticsDetailsList2.stream()
                     .mapToInt(DestinationStatisticsDetails::getNums)
                     .sum();
 
-            double totalBlankOutputs = rollClubThreeDetailsList.stream().mapToDouble(RollClubThreeDetails::getBlankOutput).sum();
-            BigDecimal bd = BigDecimal.valueOf(totalBlankOutputs).setScale(4, BigDecimal.ROUND_HALF_UP);
+            double totalBlankOutputs = rollClubThreeDetailsList.stream()
+                    .filter(detail -> detail.getStackAddr() == null || detail.getStackAddr().isEmpty()) // 过滤
+                    .mapToDouble(RollClubThreeDetails::getBlankOutput)
+                    .sum();
 
+            BigDecimal bd = BigDecimal.valueOf(totalBlankOutputs).setScale(4, BigDecimal.ROUND_HALF_UP);
             totalNumsAll += totalNums;
             totalBlankOutputsAll = totalBlankOutputsAll.add(bd);
         }
 
+
         LambdaQueryWrapper<RollOutShippDetails> queryWrapper2 = new LambdaQueryWrapper<>();
         queryWrapper2.eq(RollOutShippDetails::getCcmNo, ccmNo);
         queryWrapper2.eq(RollOutShippDetails::getShiftGroup, shiftGroup);
@@ -847,34 +866,43 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
             }
         }
         List<RollOutShippDetails> rollOutShippDetailsList = rollOutShippDetailsService.list(queryWrapper2);
-        if (oConvertUtils.listIsNotEmpty(rollOutShippDetailsList)){
+        if (oConvertUtils.listIsNotEmpty(rollOutShippDetailsList)) {
             statisticsDetailsList3 = rollOutShippDetailsList.stream()
+                    // 过滤掉 stackAddr 不为空的记录
+                    .filter(detail -> detail.getStackAddr() == null || detail.getStackAddr().isEmpty())
                     .collect(Collectors.groupingBy(RollOutShippDetails::getSize, Collectors.toList()))
                     .entrySet().stream()
                     .map(entry -> {
                         String size = entry.getKey();
                         List<RollOutShippDetails> group = entry.getValue();
-                        // 统计总支数,如果 stackAddr 不为空,则乘以 4
-                        int nums = group.stream()
-                                .mapToInt(detail -> (detail.getStackAddr() != null && !detail.getStackAddr().isEmpty()) ? 4 : 1)
-                                .sum();
+
+                        // 统计总支数,过滤后 stackAddr 均为空,直接按 1 计算
+                        int nums = group.size();
+
                         Double totalBlankOutput = group.stream().mapToDouble(RollOutShippDetails::getBlankOutput).sum();
                         BigDecimal bd = BigDecimal.valueOf(totalBlankOutput).setScale(4, BigDecimal.ROUND_HALF_UP);
                         double finalBlankOutput = bd.doubleValue();
+
                         String ccmNos = group.isEmpty() ? null : group.get(0).getCcmNo();
                         return new DestinationStatisticsDetails(size, nums, finalBlankOutput, ccmNos);
                     }).collect(Collectors.toList());
+
+            // 计算总数时,同样过滤 stackAddr 不为空的记录
             int totalNums = statisticsDetailsList3.stream()
                     .mapToInt(DestinationStatisticsDetails::getNums)
                     .sum();
 
-            double totalBlankOutputs = rollOutShippDetailsList.stream().mapToDouble(RollOutShippDetails::getBlankOutput).sum();
-            BigDecimal bd = BigDecimal.valueOf(totalBlankOutputs).setScale(4, BigDecimal.ROUND_HALF_UP);
+            double totalBlankOutputs = rollOutShippDetailsList.stream()
+                    .filter(detail -> detail.getStackAddr() == null || detail.getStackAddr().isEmpty()) // 过滤
+                    .mapToDouble(RollOutShippDetails::getBlankOutput)
+                    .sum();
 
+            BigDecimal bd = BigDecimal.valueOf(totalBlankOutputs).setScale(4, BigDecimal.ROUND_HALF_UP);
             totalNumsAll += totalNums;
             totalBlankOutputsAll = totalBlankOutputsAll.add(bd);
         }
 
+
         // 合并三个列表并根据 size 分组统计
         List<DestinationStatisticsDetails> mergedList = Stream.of(statisticsDetailsList1, statisticsDetailsList2, statisticsDetailsList3)
                 .flatMap(Collection::stream) // 将所有列表合并成一个流
@@ -2715,28 +2743,37 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
             }
         }
         List<RollClubTwoDetails> rollClubTwoDetailsList = rollClubTwoDetailsService.list(queryWrapper);
-        if (oConvertUtils.listIsNotEmpty(rollClubTwoDetailsList)){
+        if (oConvertUtils.listIsNotEmpty(rollClubTwoDetailsList)) {
             statisticsDetailsList1 = rollClubTwoDetailsList.stream()
+                    // 过滤掉 stackAddr 不为空的记录
+                    .filter(detail -> detail.getStackAddr() == null || detail.getStackAddr().isEmpty())
                     .collect(Collectors.groupingBy(RollClubTwoDetails::getSize, Collectors.toList()))
                     .entrySet().stream()
                     .map(entry -> {
                         String size = entry.getKey();
                         List<RollClubTwoDetails> group = entry.getValue();
-                        // 统计总支数,如果 stackAddr 不为空,则乘以 4
-                        int nums = group.stream()
-                                .mapToInt(detail -> (detail.getStackAddr() != null && !detail.getStackAddr().isEmpty()) ? 4 : 1)
-                                .sum();
+
+                        // 统计总支数,过滤后 stackAddr 均为空,直接按 1 计算
+                        int nums = group.size();
+
                         Double totalBlankOutput = group.stream().mapToDouble(RollClubTwoDetails::getBlankOutput).sum();
                         BigDecimal bd = BigDecimal.valueOf(totalBlankOutput).setScale(4, BigDecimal.ROUND_HALF_UP);
                         double finalBlankOutput = bd.doubleValue();
+
                         String ccmNos = group.isEmpty() ? null : group.get(0).getCcmNo();
                         return new DestinationStatisticsDetails(size, nums, finalBlankOutput, ccmNos);
                     }).collect(Collectors.toList());
+
+            // 计算总数时,同样过滤 stackAddr 不为空的记录
             int totalNums = statisticsDetailsList1.stream()
                     .mapToInt(DestinationStatisticsDetails::getNums)
                     .sum();
 
-            double totalBlankOutputs = rollClubTwoDetailsList.stream().mapToDouble(RollClubTwoDetails::getBlankOutput).sum();
+            double totalBlankOutputs = rollClubTwoDetailsList.stream()
+                    .filter(detail -> detail.getStackAddr() == null || detail.getStackAddr().isEmpty()) // 过滤
+                    .mapToDouble(RollClubTwoDetails::getBlankOutput)
+                    .sum();
+
             BigDecimal bd = BigDecimal.valueOf(totalBlankOutputs).setScale(4, BigDecimal.ROUND_HALF_UP);
             totalNumsAll += totalNums;
             totalBlankOutputsAll = totalBlankOutputsAll.add(bd);
@@ -2824,35 +2861,44 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
             }
         }
         List<RollClubThreeDetails> rollClubThreeDetailsList = rollClubThreeDetailsService.list(queryWrapper1);
-        if (oConvertUtils.listIsNotEmpty(rollClubThreeDetailsList)){
+        if (oConvertUtils.listIsNotEmpty(rollClubThreeDetailsList)) {
             statisticsDetailsList2 = rollClubThreeDetailsList.stream()
+                    // 过滤掉 stackAddr 不为空的记录
+                    .filter(detail -> detail.getStackAddr() == null || detail.getStackAddr().isEmpty())
                     .collect(Collectors.groupingBy(RollClubThreeDetails::getSize, Collectors.toList()))
                     .entrySet().stream()
                     .map(entry -> {
                         String size = entry.getKey();
                         List<RollClubThreeDetails> group = entry.getValue();
-                        // 统计总支数,如果 stackAddr 不为空,则乘以 4
-                        int nums = group.stream()
-                                .mapToInt(detail -> (detail.getStackAddr() != null && !detail.getStackAddr().isEmpty()) ? 4 : 1)
-                                .sum();
+
+                        // 统计总支数,过滤后 stackAddr 均为空,直接按 1 计算
+                        int nums = group.size();
+
                         Double totalBlankOutput = group.stream().mapToDouble(RollClubThreeDetails::getBlankOutput).sum();
                         BigDecimal bd = BigDecimal.valueOf(totalBlankOutput).setScale(4, BigDecimal.ROUND_HALF_UP);
                         double finalBlankOutput = bd.doubleValue();
+
                         String ccmNos = group.isEmpty() ? null : group.get(0).getCcmNo();
                         return new DestinationStatisticsDetails(size, nums, finalBlankOutput, ccmNos);
                     }).collect(Collectors.toList());
+
+            // 计算总数时,同样过滤 stackAddr 不为空的记录
             int totalNums = statisticsDetailsList2.stream()
                     .mapToInt(DestinationStatisticsDetails::getNums)
                     .sum();
 
-            double totalBlankOutputs = rollClubThreeDetailsList.stream().mapToDouble(RollClubThreeDetails::getBlankOutput).sum();
-            BigDecimal bd = BigDecimal.valueOf(totalBlankOutputs).setScale(4, BigDecimal.ROUND_HALF_UP);
+            double totalBlankOutputs = rollClubThreeDetailsList.stream()
+                    .filter(detail -> detail.getStackAddr() == null || detail.getStackAddr().isEmpty()) // 过滤
+                    .mapToDouble(RollClubThreeDetails::getBlankOutput)
+                    .sum();
 
+            BigDecimal bd = BigDecimal.valueOf(totalBlankOutputs).setScale(4, BigDecimal.ROUND_HALF_UP);
             totalNumsAll += totalNums;
             totalBlankOutputsAll = totalBlankOutputsAll.add(bd);
         }
 
 
+
         // 合并列表并根据 size 分组统计
         List<DestinationStatisticsDetails> mergedList = Stream.of(statisticsDetailsList2)
                 .flatMap(Collection::stream) // 将所有列表合并成一个流
@@ -2934,34 +2980,43 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
             }
         }
         List<RollOutShippDetails> rollOutShippDetailsList = rollOutShippDetailsService.list(queryWrapper2);
-        if (oConvertUtils.listIsNotEmpty(rollOutShippDetailsList)){
+        if (oConvertUtils.listIsNotEmpty(rollOutShippDetailsList)) {
             statisticsDetailsList3 = rollOutShippDetailsList.stream()
+                    // 过滤掉 stackAddr 不为空的记录
+                    .filter(detail -> detail.getStackAddr() == null || detail.getStackAddr().isEmpty())
                     .collect(Collectors.groupingBy(RollOutShippDetails::getSize, Collectors.toList()))
                     .entrySet().stream()
                     .map(entry -> {
                         String size = entry.getKey();
                         List<RollOutShippDetails> group = entry.getValue();
-                        // 统计总支数,如果 stackAddr 不为空,则乘以 4
-                        int nums = group.stream()
-                                .mapToInt(detail -> (detail.getStackAddr() != null && !detail.getStackAddr().isEmpty()) ? 4 : 1)
-                                .sum();
+
+                        // 统计总支数,过滤后 stackAddr 均为空,直接按 1 计算
+                        int nums = group.size();
+
                         Double totalBlankOutput = group.stream().mapToDouble(RollOutShippDetails::getBlankOutput).sum();
                         BigDecimal bd = BigDecimal.valueOf(totalBlankOutput).setScale(4, BigDecimal.ROUND_HALF_UP);
                         double finalBlankOutput = bd.doubleValue();
+
                         String ccmNos = group.isEmpty() ? null : group.get(0).getCcmNo();
                         return new DestinationStatisticsDetails(size, nums, finalBlankOutput, ccmNos);
                     }).collect(Collectors.toList());
+
+            // 计算总数时,同样过滤 stackAddr 不为空的记录
             int totalNums = statisticsDetailsList3.stream()
                     .mapToInt(DestinationStatisticsDetails::getNums)
                     .sum();
 
-            double totalBlankOutputs = rollOutShippDetailsList.stream().mapToDouble(RollOutShippDetails::getBlankOutput).sum();
-            BigDecimal bd = BigDecimal.valueOf(totalBlankOutputs).setScale(4, BigDecimal.ROUND_HALF_UP);
+            double totalBlankOutputs = rollOutShippDetailsList.stream()
+                    .filter(detail -> detail.getStackAddr() == null || detail.getStackAddr().isEmpty()) // 过滤
+                    .mapToDouble(RollOutShippDetails::getBlankOutput)
+                    .sum();
 
+            BigDecimal bd = BigDecimal.valueOf(totalBlankOutputs).setScale(4, BigDecimal.ROUND_HALF_UP);
             totalNumsAll += totalNums;
             totalBlankOutputsAll = totalBlankOutputsAll.add(bd);
         }
 
+
         // 合并三个列表并根据 size 分组统计
         List<DestinationStatisticsDetails> mergedList = Stream.of(statisticsDetailsList3)
                 .flatMap(Collection::stream) // 将所有列表合并成一个流