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