From 2190401551e7eed22a17777b8733d0e7092d7c3e Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 01 九月 2026 18:40:46 +0800
Subject: [PATCH] 修改VIN码管理和卡片管理两个模块测试bug

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVinChargingOrderServiceImpl.java |   71 ++++++++++++++++++++++++++++++++++-
 1 files changed, 69 insertions(+), 2 deletions(-)

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 ab59f2e..683000b 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
@@ -3,11 +3,16 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
 import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
+import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
 import com.ruoyi.chargingPile.api.feignClient.SiteClient;
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.chargingPile.api.model.TChargingGun;
+import com.ruoyi.chargingPile.api.model.TChargingPile;
+import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.integration.api.feignClient.SendMessageClient;
+import com.ruoyi.integration.api.model.PlatformStopCharging;
 import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
 import com.ruoyi.order.api.model.TVinChargingOrder;
 import com.ruoyi.order.api.query.VinChargingOrderQuery;
@@ -19,6 +24,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -39,6 +45,10 @@
     private SiteClient siteClient;
     @Resource
     private ChargingGunClient chargingGunClient;
+    @Resource
+    private ChargingPileClient chargingPileClient;
+    @Resource
+    private SendMessageClient sendMessageClient;
     @Resource
     private UploadRealTimeMonitoringDataService monitoringDataService;
 
@@ -87,7 +97,7 @@
             return Collections.emptyMap();
         }
         Map<String, Object> result = new HashMap<>();
-        result.put("id", order.getId());
+        result.put("id", order.getId() == null ? null : String.valueOf(order.getId()));
         result.put("code", order.getCode());
         result.put("vin", order.getVin());
         result.put("actualVin", order.getActualVin());
@@ -104,13 +114,70 @@
         result.put("paymentAmount", order.getPaymentAmount());
         result.put("electrovalence", order.getElectrovalence());
         result.put("serviceCharge", order.getServiceCharge());
+        if (order.getStartTime() != null && order.getEndTime() != null) {
+            result.put("chargingSecond", ChronoUnit.SECONDS.between(order.getStartTime(), order.getEndTime()));
+        }
+        List<Site> sites = order.getSiteId() == null ? Collections.emptyList()
+                : Optional.ofNullable(siteClient.getSiteByIds(Collections.singletonList(order.getSiteId())).getData()).orElse(Collections.emptyList());
+        Site site = sites.stream().findFirst().orElse(null);
+        result.put("siteName", site == null ? null : site.getName());
+        List<TChargingGun> guns = order.getChargingGunId() == null ? Collections.emptyList()
+                : Optional.ofNullable(chargingGunClient.getChargingGunByIds(Collections.singletonList(order.getChargingGunId())).getData()).orElse(Collections.emptyList());
+        TChargingGun gun = guns.stream().findFirst().orElse(null);
+        result.put("terminalName", gun == null ? null : gun.getName());
         List<UploadRealTimeMonitoringData> monitoring = monitoringDataService.getDataByOrderCodeAsc(order.getCode());
-        result.put("list", monitoring == null ? Collections.emptyList() : monitoring);
+        if (monitoring == null) {
+            monitoring = Collections.emptyList();
+        }
+        for (UploadRealTimeMonitoringData data : monitoring) {
+            if (data.getOutput_current() != null && data.getOutput_voltage() != null) {
+                data.setPower(data.getOutput_voltage().multiply(data.getOutput_current()).divide(new BigDecimal(1000), 2, BigDecimal.ROUND_HALF_UP));
+            }
+        }
+        result.put("list", monitoring);
         result.put("list1", baseMapper.accountingStrategyList(order.getId()));
         return result;
     }
 
     @Override
+    public AjaxResult stopCharging(String chargingOrderId, Integer chargingGunId) {
+        Long orderId;
+        try {
+            orderId = Long.valueOf(chargingOrderId);
+        } catch (NumberFormatException e) {
+            return AjaxResult.error("VIN码充电订单ID无效");
+        }
+        TVinChargingOrder order = getAuthorizedOrder(orderId);
+        if (order == null) {
+            return AjaxResult.error("VIN码充电订单不存在或无权操作");
+        }
+        if (order.getChargingGunId() == null || !order.getChargingGunId().equals(chargingGunId)) {
+            return AjaxResult.error("充电枪与订单不匹配");
+        }
+        Integer status = order.getStatus();
+        if (status == null || !status.equals(3)) {
+            return AjaxResult.error(status != null && (status.equals(4) || status.equals(5)) ? "不能重复操作" : "还未开始充电");
+        }
+        TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingGunId).getData();
+        TChargingPile chargingPile = order.getChargingPileId() == null ? null
+                : chargingPileClient.getChargingPileById(order.getChargingPileId()).getData();
+        if (chargingGun == null || chargingPile == null) {
+            return AjaxResult.error("未找到订单对应的充电设备");
+        }
+        order.setStatus(4);
+        order.setEndMode(1);
+        order.setEndTime(LocalDateTime.now());
+        if (!updateById(order)) {
+            return AjaxResult.error("更新VIN码充电订单状态失败");
+        }
+        PlatformStopCharging command = new PlatformStopCharging();
+        command.setCharging_pile_code(chargingPile.getCode());
+        command.setCharging_gun_code(chargingGun.getCode());
+        sendMessageClient.platformStopCharging(command);
+        return AjaxResult.success();
+    }
+
+    @Override
     public List<Map<String, Object>> accountingStrategyList(Long chargingOrderId) {
         TVinChargingOrder order = getAuthorizedOrder(chargingOrderId);
         return order == null ? Collections.emptyList() : baseMapper.accountingStrategyList(chargingOrderId);

--
Gitblit v1.7.1