| | |
| | | import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; |
| | | import com.ruoyi.chargingPile.api.model.TChargingGun; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; |
| | | import com.ruoyi.order.api.model.TCardAccountingStrategyDetailOrder; |
| | | import com.ruoyi.order.api.model.TCardChargingOrder; |
| | | import com.ruoyi.order.api.model.TCardChargingOrderAccountingStrategy; |
| | |
| | | import com.ruoyi.order.service.TCardChargingOrderAccountingStrategyService; |
| | | import com.ruoyi.order.service.TVinAccountingStrategyDetailOrderService; |
| | | import com.ruoyi.order.service.TVinChargingOrderAccountingStrategyService; |
| | | import com.ruoyi.order.util.mongodb.service.UploadRealTimeMonitoringDataService; |
| | | import org.apache.ibatis.builder.MapperBuilderAssistant; |
| | | import org.junit.jupiter.api.BeforeAll; |
| | | import org.junit.jupiter.api.Test; |
| | |
| | | |
| | | import static org.junit.jupiter.api.Assertions.assertEquals; |
| | | import static org.junit.jupiter.api.Assertions.assertNotNull; |
| | | import static org.junit.jupiter.api.Assertions.assertNull; |
| | | import static org.mockito.ArgumentMatchers.any; |
| | | import static org.mockito.ArgumentMatchers.anyLong; |
| | | import static org.mockito.ArgumentMatchers.anyString; |
| | |
| | | TVinChargingOrderServiceImpl service = new TVinChargingOrderServiceImpl(); |
| | | TVinChargingOrderMapper mapper = mock(TVinChargingOrderMapper.class); |
| | | ChargingGunClient gunClient = mock(ChargingGunClient.class); |
| | | UploadRealTimeMonitoringDataService monitoringDataService = mock(UploadRealTimeMonitoringDataService.class); |
| | | TVinAccountingStrategyDetailOrderService detailOrderService = mock(TVinAccountingStrategyDetailOrderService.class); |
| | | TVinChargingOrderAccountingStrategyService strategyService = mock(TVinChargingOrderAccountingStrategyService.class); |
| | | TransactionTemplate txTemplate = mock(TransactionTemplate.class); |
| | | ReflectionTestUtils.setField(service, "baseMapper", mapper); |
| | | ReflectionTestUtils.setField(service, "chargingGunClient", gunClient); |
| | | ReflectionTestUtils.setField(service, "monitoringDataService", monitoringDataService); |
| | | ReflectionTestUtils.setField(service, "vinAccountingStrategyDetailOrderService", detailOrderService); |
| | | ReflectionTestUtils.setField(service, "vinChargingOrderAccountingStrategyService", strategyService); |
| | | ReflectionTestUtils.setField(service, "transactionTemplate", txTemplate); |
| | |
| | | charging.setEndTime(LocalDateTime.of(2026, 9, 14, 21, 45, 0)); |
| | | when(mapper.selectOne(any())).thenReturn(charging); |
| | | when(mapper.updateById(any())).thenReturn(1); |
| | | UploadRealTimeMonitoringData firstMonitoring = new UploadRealTimeMonitoringData(); |
| | | firstMonitoring.setSoc(18); |
| | | UploadRealTimeMonitoringData lastMonitoring = new UploadRealTimeMonitoringData(); |
| | | lastMonitoring.setSoc(87); |
| | | when(monitoringDataService.getDataByOrderCode("VD1", "asc")).thenReturn(firstMonitoring); |
| | | when(monitoringDataService.getDataByOrderCode("VD1", "desc")).thenReturn(lastMonitoring); |
| | | |
| | | stubGunAndUpdate(gunClient, 7); |
| | | stubVinStrategyQuerySave(detailOrderService, strategyService, vinThreePeriodSnapshots()); |
| | |
| | | |
| | | R result = service.vinEndChargeBillingCharge(vo); |
| | | assertEquals(R.SUCCESS, result.getCode()); |
| | | |
| | | ArgumentCaptor<TVinChargingOrder> orderCaptor = ArgumentCaptor.forClass(TVinChargingOrder.class); |
| | | verify(mapper).updateById(orderCaptor.capture()); |
| | | assertEquals(0, new BigDecimal("18").compareTo(orderCaptor.getValue().getStartSoc())); |
| | | assertEquals(0, new BigDecimal("87").compareTo(orderCaptor.getValue().getEndSoc())); |
| | | verify(monitoringDataService).getDataByOrderCode("VD1", "asc"); |
| | | verify(monitoringDataService).getDataByOrderCode("VD1", "desc"); |
| | | |
| | | ArgumentCaptor<Collection<TVinChargingOrderAccountingStrategy>> captor = ArgumentCaptor.forClass(Collection.class); |
| | | verify(strategyService).saveBatch(captor.capture()); |
| | |
| | | TVinChargingOrderServiceImpl service = new TVinChargingOrderServiceImpl(); |
| | | TVinChargingOrderMapper mapper = mock(TVinChargingOrderMapper.class); |
| | | ChargingGunClient gunClient = mock(ChargingGunClient.class); |
| | | UploadRealTimeMonitoringDataService monitoringDataService = mock(UploadRealTimeMonitoringDataService.class); |
| | | TVinAccountingStrategyDetailOrderService detailOrderService = mock(TVinAccountingStrategyDetailOrderService.class); |
| | | TVinChargingOrderAccountingStrategyService strategyService = mock(TVinChargingOrderAccountingStrategyService.class); |
| | | TransactionTemplate txTemplate = mock(TransactionTemplate.class); |
| | | ReflectionTestUtils.setField(service, "baseMapper", mapper); |
| | | ReflectionTestUtils.setField(service, "chargingGunClient", gunClient); |
| | | ReflectionTestUtils.setField(service, "monitoringDataService", monitoringDataService); |
| | | ReflectionTestUtils.setField(service, "vinAccountingStrategyDetailOrderService", detailOrderService); |
| | | ReflectionTestUtils.setField(service, "vinChargingOrderAccountingStrategyService", strategyService); |
| | | ReflectionTestUtils.setField(service, "transactionTemplate", txTemplate); |
| | |
| | | charging.setCode("VD1"); |
| | | charging.setStatus(4); |
| | | charging.setChargingGunId(7); |
| | | // startTime/endTime 均为 null |
| | | // startTime/endTime 均为 null,Mongo 首末监控记录也不存在 |
| | | when(mapper.selectOne(any())).thenReturn(charging); |
| | | when(mapper.updateById(any())).thenReturn(1); |
| | | when(monitoringDataService.getDataByOrderCode("VD1", "asc")).thenReturn(null); |
| | | when(monitoringDataService.getDataByOrderCode("VD1", "desc")).thenReturn(null); |
| | | |
| | | stubGunAndUpdate(gunClient, 7); |
| | | stubVinStrategyQuerySave(detailOrderService, strategyService, vinThreePeriodSnapshots()); |
| | |
| | | R result = service.vinEndChargeBillingCharge(vo); |
| | | assertEquals(R.SUCCESS, result.getCode()); |
| | | |
| | | ArgumentCaptor<TVinChargingOrder> orderCaptor = ArgumentCaptor.forClass(TVinChargingOrder.class); |
| | | verify(mapper).updateById(orderCaptor.capture()); |
| | | assertNull(orderCaptor.getValue().getStartSoc()); |
| | | assertNull(orderCaptor.getValue().getEndSoc()); |
| | | verify(monitoringDataService).getDataByOrderCode("VD1", "asc"); |
| | | verify(monitoringDataService).getDataByOrderCode("VD1", "desc"); |
| | | |
| | | ArgumentCaptor<Collection<TVinChargingOrderAccountingStrategy>> captor = ArgumentCaptor.forClass(Collection.class); |
| | | verify(strategyService).saveBatch(captor.capture()); |
| | | List<TVinChargingOrderAccountingStrategy> saved = new ArrayList<>(captor.getValue()); |