longz
2026-07-21 b3bf3ffc39e813adc9aa4f533abb9edc4cee6e50
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package com.ruoyi.order.controller;
 
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.order.api.query.ChargingOrderQuery;
import com.ruoyi.order.api.vo.TCharingOrderVO;
import com.ruoyi.order.dto.SixChargingDto;
import com.ruoyi.order.dto.EnterpriseChargingDetailVO;
import com.ruoyi.order.export.EnterpriseChargingDetailExport;
import com.ruoyi.order.service.TChargingOrderService;
import org.junit.jupiter.api.Test;
import org.springframework.test.util.ReflectionTestUtils;
 
import java.time.LocalDate;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
 
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoInteractions;
import static org.mockito.Mockito.when;
 
class TChargingOrderControllerTest {
 
    @Test
    void enterpriseChargingDetailExportContainsVisibleDetailColumns() {
        EnterpriseChargingDetailVO detail = new EnterpriseChargingDetailVO();
        detail.setLicensePlate("川JD20960");
        detail.setChargingCapacity(new BigDecimal("40.693"));
        detail.setElectrovalence(new BigDecimal("43.0857"));
        detail.setServiceCharge(new BigDecimal("16.2772"));
        detail.setEndMode(0);
        detail.setPeriodCount(1);
 
        EnterpriseChargingDetailExport export = ReflectionTestUtils.invokeMethod(
                new TChargingOrderController(), "buildEnterpriseChargingDetailExport", detail);
 
        assertEquals("川JD20960", export.getLicensePlate());
        assertEquals(new BigDecimal("40.693"), export.getChargingCapacity());
        assertEquals(new BigDecimal("43.0857"), export.getElectrovalence());
        assertEquals(new BigDecimal("16.2772"), export.getServiceCharge());
        assertEquals("异常终止", export.getEndMode());
        assertEquals(1, export.getPeriodCount());
    }
 
    @Test
    void latestAdjacentMonthDataMovesTheSixMonthWindowForward() {
        SixChargingDto june = new SixChargingDto();
        june.setMonth("06");
        SixChargingDto july = new SixChargingDto();
        july.setMonth("07");
 
        LocalDate endMonth = TChargingOrderController.resolveStatisticsEndMonth(
                LocalDate.of(2026, 6, 30), Arrays.asList(june, july));
        List<SixChargingDto> months = TChargingOrderController.generateLastSixMonths(endMonth);
 
        assertEquals(LocalDate.of(2026, 7, 30), endMonth);
        assertEquals(Arrays.asList("02", "03", "04", "05", "06", "07"),
                months.stream().map(SixChargingDto::getMonth).collect(java.util.stream.Collectors.toList()));
    }
 
    @Test
    void blankPhoneDoesNotExpandQueryToAllUserIds() {
        TChargingOrderService chargingOrderService = mock(TChargingOrderService.class);
        AppUserClient appUserClient = mock(AppUserClient.class);
        TChargingOrderController controller = new TChargingOrderController();
        ReflectionTestUtils.setField(controller, "chargingOrderService", chargingOrderService);
        ReflectionTestUtils.setField(controller, "appUserClient", appUserClient);
 
        ChargingOrderQuery query = new ChargingOrderQuery();
        query.setPhone("");
        when(chargingOrderService.chargingOrder(same(query))).thenReturn(new TCharingOrderVO());
 
        controller.chargingOrder(query);
 
        assertNull(query.getUserIds());
        verify(chargingOrderService).chargingOrder(same(query));
        verifyNoInteractions(appUserClient);
    }
}