|
@@ -991,8 +991,8 @@ public class WaybillOrderService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//查询运单关联数据
|
|
//查询运单关联数据
|
|
|
- List<WaybillOrderStatusResp> waybillOrdertDatas = getWaybillOrderRelevantData(param, records);
|
|
|
|
|
- waybillResp.setOrderStatusStatistics(calculateStatusStatistics(waybillOrdertDatas));
|
|
|
|
|
|
|
+// List<WaybillOrderStatusResp> waybillOrdertDatas = getWaybillOrderRelevantData(param, records);
|
|
|
|
|
+ waybillResp.setOrderStatusStatistics(calculateStatusStatistics(param, records));
|
|
|
return waybillResp;
|
|
return waybillResp;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1026,10 +1026,10 @@ public class WaybillOrderService {
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 计算运单状态统计
|
|
* 计算运单状态统计
|
|
|
- * @param waybillOrdertDatas
|
|
|
|
|
|
|
+ * @param records
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
- private static List<StatisticsWaybillResp.OrderBillStatusStatistics> calculateStatusStatistics(List<WaybillOrderStatusResp> waybillOrdertDatas) {
|
|
|
|
|
|
|
+ private static List<StatisticsWaybillResp.OrderBillStatusStatistics> calculateStatusStatistics(WaybillOrderQueryParam param, List<KwtWaybillOrder> records) {
|
|
|
// 定义状态码聚合规则
|
|
// 定义状态码聚合规则
|
|
|
Map<List<String>, String[]> aggregateRules = Map.of(
|
|
Map<List<String>, String[]> aggregateRules = Map.of(
|
|
|
Arrays.asList("1", "5", "10", "11", "12", "13", "14", "15", "16", "17", "18"), new String[]{"1", "进行中"},
|
|
Arrays.asList("1", "5", "10", "11", "12", "13", "14", "15", "16", "17", "18"), new String[]{"1", "进行中"},
|
|
@@ -1038,7 +1038,7 @@ public class WaybillOrderService {
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// 按原始状态统计数量
|
|
// 按原始状态统计数量
|
|
|
- Map<String, Long> statusCountMap = waybillOrdertDatas.stream()
|
|
|
|
|
|
|
+ Map<String, Long> statusCountMap = records.stream()
|
|
|
.collect(Collectors.groupingBy(va ->String.valueOf(va.getStatus()), Collectors.counting()));
|
|
.collect(Collectors.groupingBy(va ->String.valueOf(va.getStatus()), Collectors.counting()));
|
|
|
|
|
|
|
|
// 进行状态聚合
|
|
// 进行状态聚合
|
|
@@ -1046,15 +1046,29 @@ public class WaybillOrderService {
|
|
|
.map(rule -> {
|
|
.map(rule -> {
|
|
|
List<String> originalStatuses = rule.getKey();
|
|
List<String> originalStatuses = rule.getKey();
|
|
|
String[] aggregateInfo = rule.getValue();
|
|
String[] aggregateInfo = rule.getValue();
|
|
|
|
|
+ String aggStatus = aggregateInfo[0]; // 1/2/3
|
|
|
|
|
+ String aggDesc = aggregateInfo[1];
|
|
|
|
|
|
|
|
// 汇总对应状态的数量
|
|
// 汇总对应状态的数量
|
|
|
- long totalNum = originalStatuses.stream()
|
|
|
|
|
- .mapToLong(status -> statusCountMap.getOrDefault(status, 0L))
|
|
|
|
|
- .sum();
|
|
|
|
|
|
|
+ long totalNum;
|
|
|
|
|
+ // ===================== 你要的过滤逻辑 =====================
|
|
|
|
|
+ if ("1".equals(aggStatus)) {
|
|
|
|
|
+ // 状态1:按truckNo过滤
|
|
|
|
|
+ totalNum = records.stream()
|
|
|
|
|
+ .filter(va -> originalStatuses.contains(String.valueOf(va.getStatus())))
|
|
|
|
|
+ .filter(va -> Objects.equals(va.getTruckNo(), param.getTruckNo()))
|
|
|
|
|
+ .count();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 状态2、3:按driverId过滤
|
|
|
|
|
+ totalNum = records.stream()
|
|
|
|
|
+ .filter(va -> originalStatuses.contains(String.valueOf(va.getStatus())))
|
|
|
|
|
+ .filter(va -> Objects.equals(va.getDriverId(), param.getDriverId()))
|
|
|
|
|
+ .count();
|
|
|
|
|
+ }
|
|
|
// 构建聚合结果对象
|
|
// 构建聚合结果对象
|
|
|
StatisticsWaybillResp.OrderBillStatusStatistics aggregateStat = new StatisticsWaybillResp.OrderBillStatusStatistics();
|
|
StatisticsWaybillResp.OrderBillStatusStatistics aggregateStat = new StatisticsWaybillResp.OrderBillStatusStatistics();
|
|
|
- aggregateStat.setOrderStatus(aggregateInfo[0]); // 聚合状态编码
|
|
|
|
|
- aggregateStat.setOrderStatusDesc(aggregateInfo[1]); // 聚合状态描述
|
|
|
|
|
|
|
+ aggregateStat.setOrderStatus(aggStatus); // 聚合状态编码
|
|
|
|
|
+ aggregateStat.setOrderStatusDesc(aggDesc); // 聚合状态描述
|
|
|
aggregateStat.setOrderNum(String.valueOf(totalNum)); // 汇总数量
|
|
aggregateStat.setOrderNum(String.valueOf(totalNum)); // 汇总数量
|
|
|
return aggregateStat;
|
|
return aggregateStat;
|
|
|
})
|
|
})
|