From 4dd7c273f24d8d5021b6fd902d958b75e6a4e4af Mon Sep 17 00:00:00 2001 From: wkc <978997012@qq.com> Date: Fri, 13 Mar 2026 10:02:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=91=98=E5=B7=A5=E8=B5=84?= =?UTF-8?q?=E4=BA=A7=E7=A9=BA=E5=AF=BC=E5=85=A5=E8=BF=94=E5=9B=9E500?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CcdiAssetInfoController.java | 2 +- .../CcdiAssetInfoControllerTest.java | 77 +++++++++++++++++++ ruoyi-ui/src/views/ccdiBaseStaff/index.vue | 2 + 3 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 ccdi-info-collection/src/test/java/com/ruoyi/info/collection/controller/CcdiAssetInfoControllerTest.java diff --git a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/controller/CcdiAssetInfoController.java b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/controller/CcdiAssetInfoController.java index 3f58e33..9e01fdd 100644 --- a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/controller/CcdiAssetInfoController.java +++ b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/controller/CcdiAssetInfoController.java @@ -60,7 +60,7 @@ public class CcdiAssetInfoController extends BaseController { public AjaxResult importData(MultipartFile file) throws Exception { List list = EasyExcelUtil.importExcel(file.getInputStream(), CcdiAssetInfoExcel.class); if (list == null || list.isEmpty()) { - return error("至少需要一条数据"); + return warn("至少需要一条数据"); } String taskId = assetInfoImportService.importAssetInfo(list); diff --git a/ccdi-info-collection/src/test/java/com/ruoyi/info/collection/controller/CcdiAssetInfoControllerTest.java b/ccdi-info-collection/src/test/java/com/ruoyi/info/collection/controller/CcdiAssetInfoControllerTest.java new file mode 100644 index 0000000..dd090ab --- /dev/null +++ b/ccdi-info-collection/src/test/java/com/ruoyi/info/collection/controller/CcdiAssetInfoControllerTest.java @@ -0,0 +1,77 @@ +package com.ruoyi.info.collection.controller; + +import com.ruoyi.common.constant.HttpStatus; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.info.collection.domain.excel.CcdiAssetInfoExcel; +import com.ruoyi.info.collection.service.ICcdiAssetInfoImportService; +import com.ruoyi.info.collection.utils.EasyExcelUtil; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockedStatic; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.mock.web.MockMultipartFile; + +import java.nio.charset.StandardCharsets; +import java.io.InputStream; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class CcdiAssetInfoControllerTest { + + @InjectMocks + private CcdiAssetInfoController controller; + + @Mock + private ICcdiAssetInfoImportService assetInfoImportService; + + @Test + void importData_shouldReturnWarnWhenExcelHasNoRows() throws Exception { + MockMultipartFile file = new MockMultipartFile( + "file", + "asset-empty.xlsx", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "empty".getBytes(StandardCharsets.UTF_8) + ); + + try (MockedStatic mocked = mockStatic(EasyExcelUtil.class)) { + mocked.when(() -> EasyExcelUtil.importExcel(any(InputStream.class), eq(CcdiAssetInfoExcel.class))) + .thenReturn(List.of()); + + AjaxResult result = controller.importData(file); + + assertEquals(HttpStatus.WARN, result.get(AjaxResult.CODE_TAG)); + assertEquals("至少需要一条数据", result.get(AjaxResult.MSG_TAG)); + } + } + + @Test + void importData_shouldReturnSuccessWhenTaskCreated() throws Exception { + MockMultipartFile file = new MockMultipartFile( + "file", + "asset.xlsx", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "asset".getBytes(StandardCharsets.UTF_8) + ); + CcdiAssetInfoExcel excel = new CcdiAssetInfoExcel(); + excel.setPersonId("320101199001010011"); + when(assetInfoImportService.importAssetInfo(List.of(excel))).thenReturn("task-1"); + + try (MockedStatic mocked = mockStatic(EasyExcelUtil.class)) { + mocked.when(() -> EasyExcelUtil.importExcel(any(InputStream.class), eq(CcdiAssetInfoExcel.class))) + .thenReturn(List.of(excel)); + + AjaxResult result = controller.importData(file); + + assertEquals(HttpStatus.SUCCESS, result.get(AjaxResult.CODE_TAG)); + assertEquals("导入任务已提交,正在后台处理", result.get(AjaxResult.MSG_TAG)); + } + } +} diff --git a/ruoyi-ui/src/views/ccdiBaseStaff/index.vue b/ruoyi-ui/src/views/ccdiBaseStaff/index.vue index 18b950a..24807dc 100644 --- a/ruoyi-ui/src/views/ccdiBaseStaff/index.vue +++ b/ruoyi-ui/src/views/ccdiBaseStaff/index.vue @@ -1279,6 +1279,8 @@ export default { }); this.startAssetImportStatusPolling(taskId); + } else if (response.code === 601) { + this.$modal.msgWarning(response.msg); } else { this.$modal.msgError(response.msg); }