| | |
| | | |
| | | 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; |
| | |
| | | @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; |
| | |
| | | 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); |