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..f66c8f0 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 @@ -28,12 +28,12 @@ import java.util.ArrayList; import java.util.List; /** - * 员工资产信息Controller + * 亲属资产信息Controller * * @author ruoyi * @date 2026-03-12 */ -@Tag(name = "员工资产信息管理") +@Tag(name = "亲属资产信息管理") @RestController @RequestMapping("/ccdi/assetInfo") public class CcdiAssetInfoController extends BaseController { @@ -44,18 +44,18 @@ public class CcdiAssetInfoController extends BaseController { /** * 下载导入模板 */ - @Operation(summary = "下载资产导入模板") + @Operation(summary = "下载亲属资产导入模板") @PostMapping("/importTemplate") public void importTemplate(HttpServletResponse response) { - EasyExcelUtil.importTemplateWithDictDropdown(response, CcdiAssetInfoExcel.class, "员工资产信息"); + EasyExcelUtil.importTemplateWithDictDropdown(response, CcdiAssetInfoExcel.class, "亲属资产信息"); } /** - * 导入员工资产信息 + * 导入亲属资产信息 */ - @Operation(summary = "导入员工资产信息") - @PreAuthorize("@ss.hasPermi('ccdi:baseStaff:import')") - @Log(title = "员工资产信息", businessType = BusinessType.IMPORT) + @Operation(summary = "导入亲属资产信息") + @PreAuthorize("@ss.hasPermi('ccdi:staffFmyRelation:import')") + @Log(title = "亲属资产信息", businessType = BusinessType.IMPORT) @PostMapping("/importData") public AjaxResult importData(MultipartFile file) throws Exception { List list = EasyExcelUtil.importExcel(file.getInputStream(), CcdiAssetInfoExcel.class); @@ -74,8 +74,8 @@ public class CcdiAssetInfoController extends BaseController { /** * 查询导入状态 */ - @Operation(summary = "查询员工资产导入状态") - @PreAuthorize("@ss.hasPermi('ccdi:baseStaff:import')") + @Operation(summary = "查询亲属资产导入状态") + @PreAuthorize("@ss.hasPermi('ccdi:staffFmyRelation:import')") @GetMapping("/importStatus/{taskId}") public AjaxResult getImportStatus(@PathVariable String taskId) { return success(assetInfoImportService.getImportStatus(taskId)); @@ -84,8 +84,8 @@ public class CcdiAssetInfoController extends BaseController { /** * 查询导入失败记录 */ - @Operation(summary = "查询员工资产导入失败记录") - @PreAuthorize("@ss.hasPermi('ccdi:baseStaff:import')") + @Operation(summary = "查询亲属资产导入失败记录") + @PreAuthorize("@ss.hasPermi('ccdi:staffFmyRelation:import')") @GetMapping("/importFailures/{taskId}") public TableDataInfo getImportFailures( @PathVariable String taskId, 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..3f20ad2 --- /dev/null +++ b/ccdi-info-collection/src/test/java/com/ruoyi/info/collection/controller/CcdiAssetInfoControllerTest.java @@ -0,0 +1,96 @@ +package com.ruoyi.info.collection.controller; + +import com.ruoyi.common.constant.HttpStatus; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.info.collection.domain.excel.CcdiAssetInfoExcel; +import com.ruoyi.info.collection.domain.vo.AssetImportFailureVO; +import com.ruoyi.info.collection.domain.vo.ImportResultVO; +import com.ruoyi.info.collection.domain.vo.ImportStatusVO; +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.io.ByteArrayInputStream; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class CcdiAssetInfoControllerTest { + + @InjectMocks + private CcdiAssetInfoController controller; + + @Mock + private ICcdiAssetInfoImportService assetInfoImportService; + + @Test + void importData_shouldSubmitRelativeAssetTask() throws Exception { + MockMultipartFile file = new MockMultipartFile("file", "asset.xlsx", + "application/vnd.ms-excel", new byte[]{1, 2, 3}); + CcdiAssetInfoExcel excel = new CcdiAssetInfoExcel(); + excel.setPersonId("A123456789"); + + try (MockedStatic mockedStatic = mockStatic(EasyExcelUtil.class)) { + mockedStatic.when(() -> EasyExcelUtil.importExcel(any(ByteArrayInputStream.class), eq(CcdiAssetInfoExcel.class))) + .thenReturn(List.of(excel)); + when(assetInfoImportService.importAssetInfo(List.of(excel))).thenReturn("task-1"); + + AjaxResult result = controller.importData(file); + + assertEquals(HttpStatus.SUCCESS, result.get(AjaxResult.CODE_TAG)); + assertEquals("导入任务已提交,正在后台处理", result.get(AjaxResult.MSG_TAG)); + ImportResultVO data = (ImportResultVO) result.get(AjaxResult.DATA_TAG); + assertEquals("task-1", data.getTaskId()); + } + } + + @Test + void getImportStatus_shouldDelegateToImportService() { + ImportStatusVO statusVO = new ImportStatusVO(); + statusVO.setTaskId("task-2"); + when(assetInfoImportService.getImportStatus("task-2")).thenReturn(statusVO); + + AjaxResult result = controller.getImportStatus("task-2"); + + assertEquals(HttpStatus.SUCCESS, result.get(AjaxResult.CODE_TAG)); + assertEquals(statusVO, result.get(AjaxResult.DATA_TAG)); + } + + @Test + void getImportFailures_shouldReturnPagedRows() { + AssetImportFailureVO failure1 = new AssetImportFailureVO(); + failure1.setPersonId("A1"); + AssetImportFailureVO failure2 = new AssetImportFailureVO(); + failure2.setPersonId("A2"); + when(assetInfoImportService.getImportFailures("task-3")).thenReturn(List.of(failure1, failure2)); + + TableDataInfo result = controller.getImportFailures("task-3", 2, 1); + + assertEquals(2, result.getTotal()); + assertEquals(1, result.getRows().size()); + assertEquals("A2", ((AssetImportFailureVO) result.getRows().get(0)).getPersonId()); + } + + @Test + void importTemplate_shouldUseRelativeAssetTemplateName() { + try (MockedStatic mockedStatic = mockStatic(EasyExcelUtil.class)) { + controller.importTemplate(null); + + mockedStatic.verify(() -> EasyExcelUtil.importTemplateWithDictDropdown(null, CcdiAssetInfoExcel.class, "亲属资产信息")); + } + } +}