From 4954fc2c96b5e05bae8c39d5e707a77b7ffdb339 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期一, 03 八月 2026 16:17:00 +0800
Subject: [PATCH] fix: count franchisee vehicle statistics by order
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 21 +++++++++++++++++++--
1 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index 24aa7ba..c6b18cc 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -296,8 +296,8 @@
result.put("goodTags", evaluation.get("goodTags"));
result.put("badTags", evaluation.get("badTags"));
result.put("traffic", franchiseeTraffic(orders));
- result.put("vehicleClass", franchiseeCarGroup(cars, TAppUserCar::getVehicleUse, "未知用途", 5));
- result.put("vehicleBrand", franchiseeCarGroup(cars, TAppUserCar::getVehicleBrand, "其他", 5));
+ result.put("vehicleClass", franchiseeOrderCarGroup(orders, cars, TAppUserCar::getVehicleUse, "未知用途", 5));
+ result.put("vehicleBrand", franchiseeOrderCarGroup(orders, cars, TAppUserCar::getVehicleBrand, "其他", 5));
return R.ok(result);
}
@@ -466,6 +466,23 @@
.map(entry -> namedCount(entry.getKey(), entry.getValue())).collect(Collectors.toList());
}
+ private List<Map<String, Object>> franchiseeOrderCarGroup(List<TChargingOrder> orders,
+ List<TAppUserCar> cars,
+ java.util.function.Function<TAppUserCar, String> getter,
+ String emptyName,
+ int limit) {
+ Map<Long, TAppUserCar> carsById = cars.stream()
+ .filter(car -> car.getId() != null)
+ .collect(Collectors.toMap(TAppUserCar::getId, car -> car, (left, right) -> left));
+ Map<String, Long> counts = orders.stream().collect(Collectors.groupingBy(order -> {
+ TAppUserCar car = carsById.get(order.getAppUserCarId());
+ String value = car == null ? null : getter.apply(car);
+ return value == null || value.trim().isEmpty() ? emptyName : value;
+ }, Collectors.counting()));
+ return counts.entrySet().stream().sorted(Map.Entry.<String, Long>comparingByValue().reversed()).limit(limit)
+ .map(entry -> namedCount(entry.getKey(), entry.getValue())).collect(Collectors.toList());
+ }
+
private List<Map<String, Object>> namedCounts(String[] names, long[] values) {
List<Map<String, Object>> result = new ArrayList<>();
for (int i = 0; i < names.length; i++) if (values[i] > 0) result.add(namedCount(names[i], values[i]));
--
Gitblit v1.7.1