puzhibing
2026-09-29 a70433b2ee5bb37823ab73422a01251343cb5f58
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);