From bf82d9f70479a5ea99ff2ea00b35cb3b6b7d500f Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 02 九月 2026 15:40:38 +0800
Subject: [PATCH] 修改刷卡充电订单查询报错

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderServiceImpl.java |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderServiceImpl.java
index 97e9a87..e83d8f3 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderServiceImpl.java
@@ -316,10 +316,38 @@
         query.setSiteIds(siteIds);
     }
 
+    private void fillElectronicProportion(List<ChargingOrderVO> list) {
+        List<Long> orderIds = list.stream().map(ChargingOrderVO::getId).filter(Objects::nonNull).collect(Collectors.toList());
+        if (orderIds.isEmpty()) {
+            return;
+        }
+        List<Map<String, Object>> capacityRows = new ArrayList<>();
+        int batchSize = 500;
+        for (int i = 0; i < orderIds.size(); i += batchSize) {
+            List<Long> batchIds = orderIds.subList(i, Math.min(i + batchSize, orderIds.size()));
+            capacityRows.addAll(Optional.ofNullable(baseMapper.capacitySummaryByOrderIds(batchIds))
+                    .orElse(Collections.emptyList()));
+        }
+        Map<Long, Map<String, Object>> capacityByOrderId = capacityRows.stream()
+                .filter(item -> item.get("orderId") != null)
+                .collect(Collectors.toMap(item -> Long.valueOf(item.get("orderId").toString()), item -> item, (a, b) -> a));
+        for (ChargingOrderVO order : list) {
+            Map<String, Object> capacity = capacityByOrderId.get(order.getId());
+            Map<String, BigDecimal> summary = emptyAccountingSummary();
+            if (capacity != null) {
+                for (String key : new String[]{"capacityTotal", "capacity1", "capacity2", "capacity3", "capacity4"}) {
+                    summary.put(key, summaryDecimal(capacity, key));
+                }
+            }
+            order.setElectronicProportion(buildProportion(summary, "capacity"));
+        }
+    }
+
     private void fillPageExtra(List<ChargingOrderVO> list) {
         if (list == null || list.isEmpty()) {
             return;
         }
+        fillElectronicProportion(list);
         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());
         List<Long> carIds = list.stream().map(ChargingOrderVO::getAppUserCarId).filter(Objects::nonNull).distinct().collect(Collectors.toList());

--
Gitblit v1.7.1