新增亲属资产导入控制器
This commit is contained in:
@@ -28,12 +28,12 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 员工资产信息Controller
|
* 亲属资产信息Controller
|
||||||
*
|
*
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
* @date 2026-03-12
|
* @date 2026-03-12
|
||||||
*/
|
*/
|
||||||
@Tag(name = "员工资产信息管理")
|
@Tag(name = "亲属资产信息管理")
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/ccdi/assetInfo")
|
@RequestMapping("/ccdi/assetInfo")
|
||||||
public class CcdiAssetInfoController extends BaseController {
|
public class CcdiAssetInfoController extends BaseController {
|
||||||
@@ -44,18 +44,18 @@ public class CcdiAssetInfoController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 下载导入模板
|
* 下载导入模板
|
||||||
*/
|
*/
|
||||||
@Operation(summary = "下载资产导入模板")
|
@Operation(summary = "下载亲属资产导入模板")
|
||||||
@PostMapping("/importTemplate")
|
@PostMapping("/importTemplate")
|
||||||
public void importTemplate(HttpServletResponse response) {
|
public void importTemplate(HttpServletResponse response) {
|
||||||
EasyExcelUtil.importTemplateWithDictDropdown(response, CcdiAssetInfoExcel.class, "员工资产信息");
|
EasyExcelUtil.importTemplateWithDictDropdown(response, CcdiAssetInfoExcel.class, "亲属资产信息");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入员工资产信息
|
* 导入亲属资产信息
|
||||||
*/
|
*/
|
||||||
@Operation(summary = "导入员工资产信息")
|
@Operation(summary = "导入亲属资产信息")
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:baseStaff:import')")
|
@PreAuthorize("@ss.hasPermi('ccdi:staffFmyRelation:import')")
|
||||||
@Log(title = "员工资产信息", businessType = BusinessType.IMPORT)
|
@Log(title = "亲属资产信息", businessType = BusinessType.IMPORT)
|
||||||
@PostMapping("/importData")
|
@PostMapping("/importData")
|
||||||
public AjaxResult importData(MultipartFile file) throws Exception {
|
public AjaxResult importData(MultipartFile file) throws Exception {
|
||||||
List<CcdiAssetInfoExcel> list = EasyExcelUtil.importExcel(file.getInputStream(), CcdiAssetInfoExcel.class);
|
List<CcdiAssetInfoExcel> list = EasyExcelUtil.importExcel(file.getInputStream(), CcdiAssetInfoExcel.class);
|
||||||
@@ -74,8 +74,8 @@ public class CcdiAssetInfoController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 查询导入状态
|
* 查询导入状态
|
||||||
*/
|
*/
|
||||||
@Operation(summary = "查询员工资产导入状态")
|
@Operation(summary = "查询亲属资产导入状态")
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:baseStaff:import')")
|
@PreAuthorize("@ss.hasPermi('ccdi:staffFmyRelation:import')")
|
||||||
@GetMapping("/importStatus/{taskId}")
|
@GetMapping("/importStatus/{taskId}")
|
||||||
public AjaxResult getImportStatus(@PathVariable String taskId) {
|
public AjaxResult getImportStatus(@PathVariable String taskId) {
|
||||||
return success(assetInfoImportService.getImportStatus(taskId));
|
return success(assetInfoImportService.getImportStatus(taskId));
|
||||||
@@ -84,8 +84,8 @@ public class CcdiAssetInfoController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 查询导入失败记录
|
* 查询导入失败记录
|
||||||
*/
|
*/
|
||||||
@Operation(summary = "查询员工资产导入失败记录")
|
@Operation(summary = "查询亲属资产导入失败记录")
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:baseStaff:import')")
|
@PreAuthorize("@ss.hasPermi('ccdi:staffFmyRelation:import')")
|
||||||
@GetMapping("/importFailures/{taskId}")
|
@GetMapping("/importFailures/{taskId}")
|
||||||
public TableDataInfo getImportFailures(
|
public TableDataInfo getImportFailures(
|
||||||
@PathVariable String taskId,
|
@PathVariable String taskId,
|
||||||
|
|||||||
@@ -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<EasyExcelUtil> 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<EasyExcelUtil> mockedStatic = mockStatic(EasyExcelUtil.class)) {
|
||||||
|
controller.importTemplate(null);
|
||||||
|
|
||||||
|
mockedStatic.verify(() -> EasyExcelUtil.importTemplateWithDictDropdown(null, CcdiAssetInfoExcel.class, "亲属资产信息"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user