puzhibing
2026-09-29 e281e3710c5a0c3c7d7596f00cd1cc6945da7f0b
ruoyi-service/ruoyi-account/src/test/java/com/ruoyi/account/controller/TVinManagementControllerTest.java
@@ -12,6 +12,7 @@
import com.ruoyi.system.api.model.LoginUserApplet;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
@@ -19,7 +20,9 @@
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.test.util.ReflectionTestUtils;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -195,8 +198,70 @@
        assertEquals("川A12345", parsed.getPlateNumber());
        assertEquals("13800138000", parsed.getPhone());
        assertEquals("测试公司", parsed.getCompanyName());
        assertEquals("备注", parsed.getRemark());
        assertEquals("1", parsed.getStatus());
    }
    @Test
    void templateHeaderUsesRenamedColumnsWithoutRemark() throws Exception {
        TVinManagementService service = mock(TVinManagementService.class);
        TVinManagementController controller = buildController(service);
        MockHttpServletResponse response = new MockHttpServletResponse();
        controller.template(response);
        Row header = workbookHeader(response);
        assertEquals(5, header.getLastCellNum());
        assertEquals("VIN码", header.getCell(0).getStringCellValue());
        assertEquals("车牌号", header.getCell(1).getStringCellValue());
        assertEquals("联系人手机号", header.getCell(2).getStringCellValue());
        assertEquals("所属公司", header.getCell(3).getStringCellValue());
        assertEquals("启停状态", header.getCell(4).getStringCellValue());
    }
    @Test
    void exportHeaderAndAccountColumnsFollowListCaliber() throws Exception {
        TVinManagementService service = mock(TVinManagementService.class);
        VinManagementExcelDTO item = new VinManagementExcelDTO();
        item.setVin("LSVAM4187C2184842");
        item.setPlateNumber("川A12345");
        item.setPhone("13800138000");
        item.setCompanyName("测试公司");
        item.setFleetName("测试车队");
        item.setAccountMode(1);
        item.setAvailableBalance(new BigDecimal("10.50"));
        item.setOverrun(new BigDecimal("2.00"));
        item.setAccountStatus(2);
        item.setStatus("1");
        when(service.selectExportList(any())).thenReturn(Collections.singletonList(item));
        TVinManagementController controller = buildController(service);
        MockHttpServletResponse response = new MockHttpServletResponse();
        controller.export(response, new VinManagementQueryDTO());
        Workbook workbook = new XSSFWorkbook(new ByteArrayInputStream(response.getContentAsByteArray()));
        Row header = workbook.getSheetAt(0).getRow(0);
        assertEquals(10, header.getLastCellNum());
        assertEquals("VIN码", header.getCell(0).getStringCellValue());
        assertEquals("车牌号", header.getCell(1).getStringCellValue());
        assertEquals("联系人手机号", header.getCell(2).getStringCellValue());
        assertEquals("所属公司", header.getCell(3).getStringCellValue());
        assertEquals("所属车队", header.getCell(4).getStringCellValue());
        assertEquals("账户模式", header.getCell(5).getStringCellValue());
        assertEquals("可用余额", header.getCell(6).getStringCellValue());
        assertEquals("超额", header.getCell(7).getStringCellValue());
        assertEquals("账户状态", header.getCell(8).getStringCellValue());
        assertEquals("启停状态", header.getCell(9).getStringCellValue());
        Row data = workbook.getSheetAt(0).getRow(1);
        assertEquals("共享模式", data.getCell(5).getStringCellValue());
        assertEquals(10.5D, data.getCell(6).getNumericCellValue());
        assertEquals(2.0D, data.getCell(7).getNumericCellValue());
        assertEquals("欠款", data.getCell(8).getStringCellValue());
        assertEquals("启用", data.getCell(9).getStringCellValue());
    }
    private Row workbookHeader(MockHttpServletResponse response) throws Exception {
        Workbook workbook = new XSSFWorkbook(new ByteArrayInputStream(response.getContentAsByteArray()));
        return workbook.getSheetAt(0).getRow(0);
    }
    @Test
@@ -267,17 +332,15 @@
            Row header = sheet.createRow(0);
            header.createCell(0).setCellValue("VIN码");
            header.createCell(1).setCellValue("车牌号");
            header.createCell(2).setCellValue("手机号");
            header.createCell(2).setCellValue("联系人手机号");
            header.createCell(3).setCellValue("所属公司");
            header.createCell(4).setCellValue("备注");
            header.createCell(5).setCellValue("启用状态");
            header.createCell(4).setCellValue("启停状态");
            Row row = sheet.createRow(1);
            row.createCell(0).setCellValue("LSVAM4187C2184842");
            row.createCell(1).setCellValue("川A12345");
            row.createCell(2).setCellValue("13800138000");
            row.createCell(3).setCellValue("测试公司");
            row.createCell(4).setCellValue("备注");
            row.createCell(5).setCellValue("启用");
            row.createCell(4).setCellValue("启用");
            workbook.write(output);
            return new MockMultipartFile("file", "vin.xlsx",
                    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", output.toByteArray());