Files
ccdi/docs/reports/implementation/2026-05-06-staff-asset-import-and-enterprise-autofill-backend-implementation.md

61 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 员工资产导入与实体库自动补入后端实施记录
## 基本信息
- 实施日期2026-05-06
- 实施范围:后端
- 关联计划:`docs/plans/backend/2026-05-06-staff-asset-import-and-enterprise-autofill-fix-backend-implementation-plan.md`
## 修改内容
### 双 Sheet 导入任务编排
- 员工信息维护导入入口改为由服务层统一编排员工主 Sheet 与员工资产 Sheet。
- 员工亲属关系维护导入入口改为由服务层统一编排亲属关系主 Sheet 与亲属资产 Sheet。
- 当两个 Sheet 都有数据时,仍返回两个任务 ID并按主 Sheet 导入成功结果为资产 Sheet 提供同文件内的归属映射。
- 当只导入资产 Sheet 时,仅生成并返回资产导入任务 ID不生成员工或亲属关系主任务 ID。
- 当两个 Sheet 都为空时,保持返回“至少需要一条数据”。
### 实体库自动补入
- 新增统一的实体库自动补入服务,按统一社会信用代码去重,只插入实体库不存在的记录。
- 员工企业关系、信贷客户企业关系新增和导入时自动补入实体库。
- 中介新增、编辑和导入时取消“实体库必须已存在”的阻断校验;实体库缺失时按中介来源自动补入,不要求提供机构名称。
- 招投标供应商新增、编辑和导入时,对合法统一社会信用代码的供应商自动补入实体库。
- 新增企业来源枚举 `SUPPLIER`,用于标识供应商来源。
### 测试补充
- 同步调整员工信息维护、员工亲属关系维护导入 Controller 单测,按新的统一编排入口断言返回任务 ID。
- 补充员工资产导入单测,验证同一模板中本轮成功导入的员工身份证号可作为员工资产归属。
- 补充亲属资产导入单测,验证同一模板中本轮成功导入的亲属关系可作为亲属资产归属。
- 补充员工亲属实体关联新增单测,验证成功新增时调用实体库自动补入服务,来源为 `EMP_RELATION`、数据来源为 `MANUAL`
## 影响范围
- `/ccdi/baseStaff/importData`
- `/ccdi/staffFmyRelation/importData`
- 员工企业关系、信贷客户企业关系、中介、招投标供应商的新增/编辑/导入实体库联动逻辑
- 实体库基础信息表 `ccdi_enterprise_base_info`
## 验证记录
- 执行 `mvn -pl ccdi-info-collection -am -DskipTests compile`结果BUILD SUCCESS。
- 执行 `mvn -DskipTests compile`结果BUILD SUCCESS。
- 代码路径核对:员工主 Sheet 为空时仅调用员工资产导入服务并返回 `assetTaskId`;亲属关系主 Sheet 为空时仅调用亲属资产导入服务并返回 `assetTaskId`
- 复测执行 `mvn -pl ccdi-info-collection -am -Dtest=CcdiBaseStaffControllerTest,CcdiStaffFmyRelationControllerTest,CcdiBaseStaffAssetImportServiceImplTest,CcdiAssetInfoImportServiceImplTest,CcdiBaseStaffDualImportServiceTest,CcdiStaffFmyRelationImportServiceImplTest,CcdiStaffEnterpriseRelationServiceImplTest,CcdiStaffEnterpriseRelationImportServiceImplTest -Dsurefire.failIfNoSpecifiedTests=false test`结果BUILD SUCCESSTests run: 39, Failures: 0, Errors: 0, Skipped: 0。
- 复测执行 `mvn -pl ccdi-info-collection -am -Dsurefire.failIfNoSpecifiedTests=false test`结果BUILD FAILURE本次问题相关用例均已通过剩余失败为中介实体关联测试未注入自动补入服务以及 `CcdiPurchaseTransactionFeatureContractTest` 依赖的 `sql/ccdi_purchase_transaction.sql` 文件不存在。
- 使用 `bin/restart_java_backend.sh` 重启后端并通过 `/login/test` 探活结果HTTP 200。
- 通过真实接口下载当前导入模板,基于模板生成测试文件,执行 `/ccdi/baseStaff/importData`:员工任务 `8ea63988-deb2-4791-a24a-f15ca2c8cd6e` 与员工资产任务 `f281beca-bb58-4076-86db-6f9f948bbaf0` 均为 `SUCCESS`,成功 1 条、失败 0 条。
- 回查 `ccdi_base_staff``ccdi_asset_info`:员工主数据写入成功;员工资产 `family_id``person_id` 均为本轮员工身份证号,第二个 Sheet 未再出现“未找到资产归属员工”。
- 执行 `/ccdi/staffFmyRelation/importData`:亲属关系任务 `702466a9-0113-4e89-bcf1-8d760ee34543` 与亲属资产任务 `f11906d4-b9f3-4656-834c-fc9dc1a27704` 均为 `SUCCESS`,成功 1 条、失败 0 条。
- 回查 `ccdi_staff_fmy_relation``ccdi_asset_info`:亲属关系主数据写入成功;亲属资产 `family_id` 为员工身份证号、`person_id` 为亲属身份证号,第二个 Sheet 已正确关联到本轮亲属主数据。
- 执行 `/ccdi/staffEnterpriseRelation/importData`:员工亲属实体关联任务 `6361fc94-0d32-4da0-b1a0-7419b399710d``SUCCESS`,成功 1 条、失败 0 条。
- 回查 `ccdi_staff_enterprise_relation``ccdi_enterprise_base_info`:实体关联写入成功;实体库自动生成对应企业,`ent_source=EMP_RELATION``data_source=IMPORT`
- 验证结束后执行清理 SQL回查本轮员工、亲属、资产、亲属实体关联和实体库测试数据计数均为 0。
## 备注
- 本次为后端逻辑调整,未修改前端页面代码。
- 现有前端已按 `staffTaskId` / `relationTaskId` / `assetTaskId` 是否存在分别启动轮询,可直接兼容只返回资产任务 ID 的结果。