From 955ff3b528ed9e47efa9c1d9a3a7f61c80830695 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 01 九月 2026 15:04:49 +0800
Subject: [PATCH] feat: add VIN order period counts

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVinChargingOrderMapper.java             |    2 ++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVinChargingOrderServiceImpl.java  |   18 ++++++++++++------
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVinChargingOrderMapper.xml                   |   10 ++++++++++
 ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/mapper/VinChargingOrderMapperStructureTest.java |    2 ++
 4 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVinChargingOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVinChargingOrderMapper.java
index 79611e4..498575d 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVinChargingOrderMapper.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVinChargingOrderMapper.java
@@ -19,5 +19,7 @@
 
     Map<String, Object> summary(@Param("query") VinChargingOrderQuery query);
 
+    List<Map<String, Object>> countAccountingStrategies(@Param("chargingOrderIds") List<Long> chargingOrderIds);
+
     List<Map<String, Object>> accountingStrategyList(@Param("chargingOrderId") Long chargingOrderId);
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVinChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVinChargingOrderServiceImpl.java
index d118a24..ab59f2e 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVinChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVinChargingOrderServiceImpl.java
@@ -152,6 +152,17 @@
         if (list == null || list.isEmpty()) {
             return;
         }
+        List<Long> orderIds = list.stream().map(ChargingOrderVO::getId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+        Map<Long, Integer> periodCounts = new HashMap<>();
+        if (!orderIds.isEmpty()) {
+            for (Map<String, Object> item : baseMapper.countAccountingStrategies(orderIds)) {
+                Number chargingOrderId = (Number) item.get("chargingOrderId");
+                Number periodCount = (Number) item.get("periodCount");
+                if (chargingOrderId != null && periodCount != null) {
+                    periodCounts.put(chargingOrderId.longValue(), periodCount.intValue());
+                }
+            }
+        }
         List<Integer> siteIds = list.stream().map(ChargingOrderVO::getSiteId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
         List<Integer> gunIds = list.stream().map(ChargingOrderVO::getChargingGunId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
         Map<Integer, Site> sites = siteIds.isEmpty() ? Collections.emptyMap()
@@ -168,12 +179,7 @@
             if (item.getStartTime() != null && item.getEndTime() != null) {
                 item.setChargingSecond(ChronoUnit.SECONDS.between(item.getStartTime(), item.getEndTime()));
             }
-            UploadRealTimeMonitoringData data = monitoringDataService.getLastDataById(item.getCode());
-            if (data != null) {
-                item.setChargeCurrent(data.getOutput_current());
-                item.setChargeVoltage(data.getOutput_voltage());
-                item.setChargePower(data.getPower());
-            }
+            item.setCount(periodCounts.getOrDefault(item.getId(), 0));
             item.setPlatformIncome(BigDecimal.ZERO);
             item.setPartnerIncome(BigDecimal.ZERO);
         }
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVinChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVinChargingOrderMapper.xml
index dd54e80..eb08568 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVinChargingOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVinChargingOrderMapper.xml
@@ -47,6 +47,16 @@
         <include refid="queryCondition"/>
     </select>
 
+    <select id="countAccountingStrategies" resultType="java.util.LinkedHashMap">
+        SELECT charging_order_id AS chargingOrderId, COUNT(1) AS periodCount
+        FROM t_vin_charging_order_accounting_strategy
+        WHERE charging_order_id IN
+        <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")">
+            #{chargingOrderId}
+        </foreach>
+        GROUP BY charging_order_id
+    </select>
+
     <select id="accountingStrategyList" resultType="java.util.LinkedHashMap">
         SELECT id, charging_order_id AS chargingOrderId, accounting_strategy_detail_id AS accountingStrategyDetailId,
                start_time AS startTime, end_time AS endTime, type, electrovalence,
diff --git a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/mapper/VinChargingOrderMapperStructureTest.java b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/mapper/VinChargingOrderMapperStructureTest.java
index 4dab738..4da21c9 100644
--- a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/mapper/VinChargingOrderMapperStructureTest.java
+++ b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/mapper/VinChargingOrderMapperStructureTest.java
@@ -29,6 +29,8 @@
         assertTrue(mapper.contains("query.platenum"));
         assertTrue(mapper.contains("query.phone"));
         assertTrue(mapper.contains("query.siteids"));
+        assertTrue(mapper.contains("countaccountingstrategies"));
+        assertTrue(mapper.contains("group by charging_order_id"));
         assertFalse(mapper.contains("t_card_"));
         assertFalse(mapper.contains("from t_charging_order "));
     }

--
Gitblit v1.7.1