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 de6f572..bae9a0a 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:staffFmyRelation:import')") - @Log(title = "亲属资产信息", businessType = BusinessType.IMPORT) + @Operation(summary = "导入资产信息") + @PreAuthorize("@ss.hasAnyPermi('ccdi:employee:import,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:staffFmyRelation:import')") + @Operation(summary = "查询资产导入状态") + @PreAuthorize("@ss.hasAnyPermi('ccdi:employee:import,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:staffFmyRelation:import')") + @Operation(summary = "查询资产导入失败记录") + @PreAuthorize("@ss.hasAnyPermi('ccdi:employee:import,ccdi:staffFmyRelation:import')") @GetMapping("/importFailures/{taskId}") public TableDataInfo getImportFailures( @PathVariable String taskId, diff --git a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/excel/CcdiAssetInfoExcel.java b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/excel/CcdiAssetInfoExcel.java index 511be08..3ffff18 100644 --- a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/excel/CcdiAssetInfoExcel.java +++ b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/excel/CcdiAssetInfoExcel.java @@ -24,8 +24,8 @@ public class CcdiAssetInfoExcel implements Serializable { @Serial private static final long serialVersionUID = 1L; - /** 关系人证件号 */ - @ExcelProperty(value = "关系人证件号*", index = 0) + /** 资产实际持有人证件号 */ + @ExcelProperty(value = "资产实际持有人证件号*", index = 0) @ColumnWidth(22) @Required @TextFormat diff --git a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/mapper/CcdiAssetInfoMapper.java b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/mapper/CcdiAssetInfoMapper.java index 7f2231d..93356fc 100644 --- a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/mapper/CcdiAssetInfoMapper.java +++ b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/mapper/CcdiAssetInfoMapper.java @@ -75,6 +75,14 @@ public interface CcdiAssetInfoMapper extends BaseMapper { */ int insertBatch(@Param("list") List list); + /** + * 按资产实际持有人证件号查询员工本人归属候选 + * + * @param personIds 资产实际持有人证件号列表 + * @return 归属映射 + */ + List> selectOwnerCandidatesByPersonIds(@Param("personIds") List personIds); + /** * 按关系人证件号查询归属员工候选 * diff --git a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiAssetInfoImportServiceImpl.java b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiAssetInfoImportServiceImpl.java index 9dc4a37..12c8737 100644 --- a/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiAssetInfoImportServiceImpl.java +++ b/ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiAssetInfoImportServiceImpl.java @@ -97,10 +97,10 @@ public class CcdiAssetInfoImportServiceImpl implements ICcdiAssetInfoImportServi validateExcel(excel); Set familyIds = ownerMap.get(excel.getPersonId()); if (familyIds == null || familyIds.isEmpty()) { - throw new RuntimeException("未找到亲属资产归属员工"); + throw new RuntimeException("未找到资产归属员工"); } if (familyIds.size() > 1) { - throw new RuntimeException("亲属资产归属员工不唯一"); + throw new RuntimeException("资产归属员工不唯一"); } CcdiAssetInfo assetInfo = new CcdiAssetInfo(); @@ -164,7 +164,19 @@ public class CcdiAssetInfoImportServiceImpl implements ICcdiAssetInfoImportServi private Map> buildOwnerMap(List personIds) { Map> result = new LinkedHashMap<>(); - mergeOwnerMappings(result, assetInfoMapper.selectOwnerCandidatesByRelationCertNos(personIds)); + if (personIds == null || personIds.isEmpty()) { + return result; + } + List> selfMappings = assetInfoMapper.selectOwnerCandidatesByPersonIds(personIds); + mergeOwnerMappings(result, selfMappings); + + Set selfMatchedIds = result.keySet(); + List relationPersonIds = personIds.stream() + .filter(personId -> !selfMatchedIds.contains(personId)) + .toList(); + if (!relationPersonIds.isEmpty()) { + mergeOwnerMappings(result, assetInfoMapper.selectOwnerCandidatesByRelationCertNos(relationPersonIds)); + } return result; } @@ -184,7 +196,7 @@ public class CcdiAssetInfoImportServiceImpl implements ICcdiAssetInfoImportServi private void validateExcel(CcdiAssetInfoExcel excel) { if (StringUtils.isEmpty(excel.getPersonId())) { - throw new RuntimeException("关系人证件号不能为空"); + throw new RuntimeException("资产实际持有人证件号不能为空"); } if (StringUtils.isEmpty(excel.getAssetMainType())) { throw new RuntimeException("资产大类不能为空"); diff --git a/ccdi-info-collection/src/main/resources/mapper/info/collection/CcdiAssetInfoMapper.xml b/ccdi-info-collection/src/main/resources/mapper/info/collection/CcdiAssetInfoMapper.xml index da3dd28..cc6dfbc 100644 --- a/ccdi-info-collection/src/main/resources/mapper/info/collection/CcdiAssetInfoMapper.xml +++ b/ccdi-info-collection/src/main/resources/mapper/info/collection/CcdiAssetInfoMapper.xml @@ -77,6 +77,17 @@ + +