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); } 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); } 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, 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 ")); }