|
@@ -61,20 +61,32 @@ public class RollClubOneServiceImpl extends ServiceImpl<RollClubOneMapper, RollC
|
|
|
return destinationStatistics;
|
|
|
}
|
|
|
// 根据size属性进行分组,并统计每组的总数和总重
|
|
|
- Map<String, Double> sumBySize = rollClubOneDetailsList.stream()
|
|
|
- .collect(Collectors.groupingBy(RollClubOneDetails::getSize,Collectors.summingDouble(RollClubOneDetails::getBlankOutput)));
|
|
|
- Map<String, Long> countBySize = rollClubOneDetailsList.stream().collect(Collectors.groupingBy(RollClubOneDetails::getSize, Collectors.counting()));
|
|
|
+// Map<String, Double> sumBySize = rollClubOneDetailsList.stream()
|
|
|
+// .collect(Collectors.groupingBy(RollClubOneDetails::getSize,Collectors.summingDouble(RollClubOneDetails::getBlankOutput)));
|
|
|
+// Map<String, Long> countBySize = rollClubOneDetailsList.stream().collect(Collectors.groupingBy(RollClubOneDetails::getSize, Collectors.counting()));
|
|
|
+
|
|
|
+
|
|
|
+ Map<String, Double> sumBySizeAndCcmNo = rollClubOneDetailsList.stream()
|
|
|
+ // 通过一个自定义的Function来组合size和ccmNo作为分组的键
|
|
|
+ .collect(Collectors.groupingBy(roll -> roll.getSize() + "_" + roll.getCcmNo(),
|
|
|
+ // 对每个分组内的元素,根据blankOutput进行求和统计
|
|
|
+ Collectors.summingDouble(RollClubOneDetails::getBlankOutput)
|
|
|
+ ));
|
|
|
+ Map<String, Long> countBySizeAndCcmNo = rollClubOneDetailsList.stream()
|
|
|
+ // 通过一个Function将size和ccmNo组合起来作为分组的键
|
|
|
+ .collect(Collectors.groupingBy(roll -> roll.getSize() + "_" + roll.getCcmNo(),
|
|
|
+ // 直接使用Collectors.counting()来统计每个分组内元素的个数
|
|
|
+ Collectors.counting()
|
|
|
+ ));
|
|
|
|
|
|
List<DestinationStatisticsDetails> rollClubOneDetailsStatisticsList = new ArrayList<>();
|
|
|
- sumBySize.forEach((size, totalWeight) -> {
|
|
|
- long count = countBySize.get(size);
|
|
|
+ sumBySizeAndCcmNo.forEach((size, totalWeight) -> {
|
|
|
+ String[] parts = size.split("_");
|
|
|
+ String sizeStr = parts[0];
|
|
|
+ String ccmNoStr = parts[1];
|
|
|
+ long count = countBySizeAndCcmNo.get(size);
|
|
|
// 找到第一个匹配size的RollClubOneDetails对象获取其ccmNo值(假设ccmNo在同一size分组内是相同的,如有不同需调整逻辑)
|
|
|
- String ccmNos = rollClubOneDetailsList.stream()
|
|
|
- .filter(detail -> detail.getSize().equals(size))
|
|
|
- .findFirst()
|
|
|
- .map(RollClubOneDetails::getCcmNo)
|
|
|
- .orElse(null);
|
|
|
- rollClubOneDetailsStatisticsList.add(new DestinationStatisticsDetails(size, (int) count, totalWeight, ccmNos));
|
|
|
+ rollClubOneDetailsStatisticsList.add(new DestinationStatisticsDetails(sizeStr, (int) count, totalWeight, ccmNoStr));
|
|
|
});
|
|
|
destinationStatistics.setStatisticsDetailsList(rollClubOneDetailsStatisticsList);
|
|
|
return destinationStatistics;
|