From a70433b2ee5bb37823ab73422a01251343cb5f58 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 29 九月 2026 17:55:50 +0800
Subject: [PATCH] 修改订单业务流程和其他功能修改

---
 ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/TVinChargingOrderCompanyFleetTest.java |   34 +++++++++++++++++++++++++++++++++-
 1 files changed, 33 insertions(+), 1 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/TVinChargingOrderCompanyFleetTest.java b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/TVinChargingOrderCompanyFleetTest.java
index a9c64d1..11b9f1b 100644
--- a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/TVinChargingOrderCompanyFleetTest.java
+++ b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/TVinChargingOrderCompanyFleetTest.java
@@ -2,14 +2,22 @@
 
 import com.ruoyi.account.api.feignClient.VinManagementClient;
 import com.ruoyi.account.api.model.TVinManagement;
+import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyClient;
+import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient;
 import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
+import com.ruoyi.chargingPile.api.model.TAccountingStrategy;
+import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
 import com.ruoyi.chargingPile.api.model.TChargingGun;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.order.api.dto.DeviceStartChargingDTO;
+import com.ruoyi.order.api.model.TVinAccountingStrategyDetailOrder;
+import com.ruoyi.order.api.model.TVinAccountingStrategyOrder;
 import com.ruoyi.order.api.model.TVinChargingOrder;
 import com.ruoyi.order.api.vo.ChargingOrderVO;
 import com.ruoyi.order.api.vo.DeviceStartChargingVO;
 import com.ruoyi.order.mapper.TVinChargingOrderMapper;
+import com.ruoyi.order.service.TVinAccountingStrategyDetailOrderService;
+import com.ruoyi.order.service.TVinAccountingStrategyOrderService;
 import com.ruoyi.other.api.domain.TFleet;
 import com.ruoyi.other.api.domain.TGroupCompany;
 import com.ruoyi.other.api.feignClient.ChargeAuthorizationClient;
@@ -66,6 +74,14 @@
     @Mock
     private ChargeAuthorizationClient chargeAuthorizationClient;
     @Mock
+    private AccountingStrategyClient accountingStrategyClient;
+    @Mock
+    private AccountingStrategyDetailClient accountingStrategyDetailClient;
+    @Mock
+    private TVinAccountingStrategyOrderService vinAccountingStrategyOrderService;
+    @Mock
+    private TVinAccountingStrategyDetailOrderService vinAccountingStrategyDetailOrderService;
+    @Mock
     private org.redisson.api.RedissonClient redissonClient;
     @Mock
     private org.redisson.api.RLock lock;
@@ -80,12 +96,28 @@
         when(redissonClient.getLock(anyString())).thenReturn(lock);
         when(lock.tryLock(anyLong(), anyLong(), any(TimeUnit.class))).thenReturn(true);
         lenient().when(lock.isHeldByCurrentThread()).thenReturn(true);
-        when(mapper.insert(any(TVinChargingOrder.class))).thenReturn(1);
+        // 建单落库回填主键(策略快照按订单ID写入,严格模式下无ID会直接启动失败)
+        when(mapper.insert(any(TVinChargingOrder.class))).thenAnswer(invocation -> {
+            invocation.getArgument(0, TVinChargingOrder.class).setId(1001L);
+            return 1;
+        });
 
         TChargingGun gun = new TChargingGun();
         gun.setId(6);
+        gun.setAccountingStrategyId(77);
         when(chargingGunClient.getChargingGunByCode(any())).thenReturn(R.ok(gun));
 
+        // 严格模式:策略快照必须可查(枪策略优先),策略或明细缺失将终止启动
+        TAccountingStrategy strategy = new TAccountingStrategy();
+        strategy.setId(77);
+        when(accountingStrategyClient.getAccountingStrategyById(77)).thenReturn(R.ok(strategy));
+        TAccountingStrategyDetail detail = new TAccountingStrategyDetail();
+        detail.setAccountingStrategyId(77);
+        when(accountingStrategyDetailClient.getListByAccountingStrategyId(77))
+                .thenReturn(R.ok(Collections.singletonList(detail)));
+        when(vinAccountingStrategyOrderService.save(any(TVinAccountingStrategyOrder.class))).thenReturn(true);
+        when(vinAccountingStrategyDetailOrderService.saveBatch(anyList())).thenReturn(true);
+
         TVinManagement vinRecord = new TVinManagement();
         vinRecord.setId(1L);
         vinRecord.setVin(VIN);

--
Gitblit v1.7.1