Procházet zdrojové kódy

当班装运明细

qiangxuan před 3 měsíci
rodič
revize
4fde747d73

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

@@ -1533,30 +1533,43 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
             log.info("{}{}", "查询当班装运单信息为空!", ccmNo);
             return onDutyStorageBillStatistics;
         }
+        Integer allCarNum = storageBillList.stream()
+                .map(StorageBill::getCarNum)
+                .reduce(0, Integer::sum);
+        Integer amountTotal = storageBillList.stream()
+                .map(StorageBill::getAmountTotal)
+                .reduce(0, Integer::sum);
         List<DestinationStatisticsDetails> statisticsDetailsList1 = new ArrayList<>();
         List<DestinationStatisticsDetails> statisticsDetailsList2 = new ArrayList<>();
         List<DestinationStatisticsDetails> statisticsDetailsList3 = new ArrayList<>();
-        for (StorageBill storageBill : storageBillList) {
 
-            if ("棒二".equals(storageBill.getDestination())){
+        for (StorageBill storageBill : storageBillList) {
+            if ("棒二".equals(storageBill.getDestination())) {
                 LambdaQueryWrapper<RollClubTwoDetails> queryWrapper3 = new LambdaQueryWrapper<>();
                 queryWrapper3.eq(RollClubTwoDetails::getCcmNo, ccmNo).eq(RollClubTwoDetails::getStorageBillId, storageBill.getId());
                 List<RollClubTwoDetails> rollClubTwoDetailsList = rollClubTwoDetailsService.list(queryWrapper3);
-                if (oConvertUtils.listIsNotEmpty(rollClubTwoDetailsList)){
-                    statisticsDetailsList1 = rollClubTwoDetailsList.stream()
+                if (oConvertUtils.listIsNotEmpty(rollClubTwoDetailsList)) {
+                    List<DestinationStatisticsDetails> currentList1 = rollClubTwoDetailsList.stream()
                             .collect(Collectors.groupingBy(RollClubTwoDetails::getSize, Collectors.toList()))
                             .entrySet().stream()
                             .map(entry -> {
                                 String size = entry.getKey();
                                 List<RollClubTwoDetails> group = entry.getValue();
                                 Integer nums = group.size();
+                                boolean shouldMultiply = group.stream().anyMatch(detail -> detail.getStackAddr() != null);
+                                if (shouldMultiply) {
+                                    nums = nums * 4;
+                                }
                                 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());
-                    int totalNums = statisticsDetailsList1.stream()
+                            })
+                            .collect(Collectors.toList());
+                    statisticsDetailsList1.addAll(currentList1);
+
+                    int totalNums = currentList1.stream()
                             .mapToInt(DestinationStatisticsDetails::getNums)
                             .sum();
                     onDutyStorageBillStatistics.setCounts(totalNums);
@@ -1567,25 +1580,32 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
                 }
             }
 
-            if ("棒三".equals(storageBill.getDestination())){
+            if ("棒三".equals(storageBill.getDestination())) {
                 LambdaQueryWrapper<RollClubThreeDetails> queryWrapper3 = new LambdaQueryWrapper<>();
                 queryWrapper3.eq(RollClubThreeDetails::getCcmNo, ccmNo).eq(RollClubThreeDetails::getStorageBillId, storageBill.getId());
                 List<RollClubThreeDetails> rollClubThreeDetailsList = rollClubThreeDetailsService.list(queryWrapper3);
-                if (oConvertUtils.listIsNotEmpty(rollClubThreeDetailsList)){
-                    statisticsDetailsList2 = rollClubThreeDetailsList.stream()
+                if (oConvertUtils.listIsNotEmpty(rollClubThreeDetailsList)) {
+                    List<DestinationStatisticsDetails> currentList2 = rollClubThreeDetailsList.stream()
                             .collect(Collectors.groupingBy(RollClubThreeDetails::getSize, Collectors.toList()))
                             .entrySet().stream()
                             .map(entry -> {
                                 String size = entry.getKey();
                                 List<RollClubThreeDetails> group = entry.getValue();
                                 Integer nums = group.size();
+                                boolean shouldMultiply = group.stream().anyMatch(detail -> detail.getStackAddr() != null);
+                                if (shouldMultiply) {
+                                    nums = nums * 4;
+                                }
                                 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());
-                    int totalNums = statisticsDetailsList2.stream()
+                            })
+                            .collect(Collectors.toList());
+                    statisticsDetailsList2.addAll(currentList2);
+
+                    int totalNums = currentList2.stream()
                             .mapToInt(DestinationStatisticsDetails::getNums)
                             .sum();
                     onDutyStorageBillStatistics.setCounts(totalNums);
@@ -1596,25 +1616,32 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
                 }
             }
 
-            if ("上若".equals(storageBill.getDestination())){
+            if ("上若".equals(storageBill.getDestination())) {
                 LambdaQueryWrapper<RollOutShippDetails> queryWrapper3 = new LambdaQueryWrapper<>();
                 queryWrapper3.eq(RollOutShippDetails::getCcmNo, ccmNo).eq(RollOutShippDetails::getStorageBillId, storageBill.getId());
                 List<RollOutShippDetails> rollOutShippDetailsList = rollOutShippDetailsService.list(queryWrapper3);
-                if (oConvertUtils.listIsNotEmpty(rollOutShippDetailsList)){
-                    statisticsDetailsList3 = rollOutShippDetailsList.stream()
+                if (oConvertUtils.listIsNotEmpty(rollOutShippDetailsList)) {
+                    List<DestinationStatisticsDetails> currentList3 = rollOutShippDetailsList.stream()
                             .collect(Collectors.groupingBy(RollOutShippDetails::getSize, Collectors.toList()))
                             .entrySet().stream()
                             .map(entry -> {
                                 String size = entry.getKey();
                                 List<RollOutShippDetails> group = entry.getValue();
                                 Integer nums = group.size();
+                                boolean shouldMultiply = group.stream().anyMatch(detail -> detail.getStackAddr() != null);
+                                if (shouldMultiply) {
+                                    nums = nums * 4;
+                                }
                                 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());
-                    int totalNums = statisticsDetailsList3.stream()
+                            })
+                            .collect(Collectors.toList());
+                    statisticsDetailsList3.addAll(currentList3);
+
+                    int totalNums = currentList3.stream()
                             .mapToInt(DestinationStatisticsDetails::getNums)
                             .sum();
                     onDutyStorageBillStatistics.setCounts(totalNums);
@@ -1624,10 +1651,40 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
                     onDutyStorageBillStatistics.setBlankOutputs(bd);
                 }
             }
+        }
 
+        // 合并三个列表并根据 size 分组统计
+        List<DestinationStatisticsDetails> mergedList = Stream.concat(
+                        Stream.concat(statisticsDetailsList1.stream(), statisticsDetailsList2.stream()),
+                        statisticsDetailsList3.stream()
+                )
+                .collect(Collectors.groupingBy(DestinationStatisticsDetails::getSize))
+                .entrySet().stream()
+                .map(entry -> {
+                    String size = entry.getKey();
+                    List<DestinationStatisticsDetails> group = entry.getValue();
+                    int totalNums = group.stream().mapToInt(DestinationStatisticsDetails::getNums).sum();
+                    double totalBlankOutput = group.stream().mapToDouble(DestinationStatisticsDetails::getBlankOutput).sum();
+                    BigDecimal bd = BigDecimal.valueOf(totalBlankOutput).setScale(4, BigDecimal.ROUND_HALF_UP);
+                    double finalBlankOutput = bd.doubleValue();
+                    String ccmNoForGroup = group.isEmpty() ? null : group.get(0).getCcmNo();
+                    return new DestinationStatisticsDetails(size, totalNums, finalBlankOutput, ccmNoForGroup);
+                })
+                .collect(Collectors.toList());
+        // 遍历mergedList获取nums总和
+        int finalAmountTotal = mergedList.stream().mapToInt(DestinationStatisticsDetails::getNums).sum();
+        // 遍历mergedList获取blankOutput总和
+        double finalBlankOutputs = mergedList.stream().mapToDouble(DestinationStatisticsDetails::getBlankOutput).sum();
+        BigDecimal bd = BigDecimal.valueOf(finalBlankOutputs).setScale(4, BigDecimal.ROUND_HALF_UP);
 
-        }
 
+        log.info("{}{}", "钢坯热送单班统计查询结果:", JSON.toJSON(mergedList));
+        onDutyStorageBillStatistics.setAllCarNum(allCarNum);
+        onDutyStorageBillStatistics.setCounts(finalAmountTotal);
+        onDutyStorageBillStatistics.setBlankOutputs(bd);
+        onDutyStorageBillStatistics.setShift(shift);
+        onDutyStorageBillStatistics.setShiftGroup(shiftGroup);
+        onDutyStorageBillStatistics.setStatisticsDetailsList(mergedList);
         return onDutyStorageBillStatistics;
     }