From d4dceed9ed67d5e2b7ab73f860f2ac894f8e2ed1 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期二, 04 八月 2026 11:14:15 +0800
Subject: [PATCH] perf: reduce battery statistics order queries

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |   34 ++++++++++++----------------------
 1 files changed, 12 insertions(+), 22 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index f31b54e..02c93a4 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -7159,34 +7159,24 @@
                     .in(TChargingOrder::getChargingGunId, gunIds));//符合条件的充电枪
         }
         vo.setTotal(total.intValue());
-        //2.折线图
-	/*	// 计算日期范围:前七天(不含今日)直接查找数据量太大,内存报错
-		LocalDate today = LocalDate.now();
-		LocalDateTime startDate = today.minusDays(7).atStartOfDay();
-		LocalDateTime endDate = today.minusDays(1).atTime(LocalTime.MAX);
-		// 查询数据库
-		List<OrderCountByDate> orderCounts = this.baseMapper.countOrdersByDate(startDate, endDate, gunIds);*/
-
-
         List<LocalDate> dates = new ArrayList<>();
         List<Integer> counts = new ArrayList<>();
         LocalDate today = LocalDate.now();
-        // 直接查找数据量太大,内存报错,分每天查找
+        LocalDateTime startDate = today.minusDays(7).atStartOfDay();
+        LocalDateTime endDate = today.minusDays(1).atTime(LocalTime.MAX);
+        Map<LocalDate, Long> countByDate = new HashMap<>();
+        if (gunIds != null && !gunIds.isEmpty()) {
+            List<OrderCountByDate> orderCounts = this.baseMapper.countOrdersByDate(startDate, endDate, gunIds);
+            if (orderCounts != null) {
+                for (OrderCountByDate orderCount : orderCounts) {
+                    countByDate.put(orderCount.getDate(), orderCount.getCount());
+                }
+            }
+        }
         for (int i = 7; i >= 1; i--) {//升序
             LocalDate day = today.minusDays(i);
-            LocalDateTime startOfDay = day.atStartOfDay();
-            LocalDateTime endOfDay = day.atTime(LocalTime.MAX);
-            //统计
-            Long count = 0L;
-            if (gunIds != null && !gunIds.isEmpty()) {
-                count = this.baseMapper.selectCount(new LambdaQueryWrapper<TChargingOrder>()
-                        .eq(TChargingOrder::getDelFlag, 0)//未删除
-                        .in(TChargingOrder::getStatus, Arrays.asList(3, 5))//充电中、已结束
-                        .in(TChargingOrder::getChargingGunId, gunIds)//符合条件的充电枪 站点 超充快充
-                        .between(TChargingOrder::getCreateTime, startOfDay, endOfDay));//每天
-            }
             dates.add(day);
-            counts.add(count.intValue());
+            counts.add(countByDate.getOrDefault(day, 0L).intValue());
         }
         vo.setDates(dates);
         vo.setCounts(counts);

--
Gitblit v1.7.1