Files
ccdi/docs/plans/backend/2026-04-17-base-staff-party-member-backend-implementation.md
2026-04-17 11:04:52 +08:00

4.8 KiB

员工基础信息新增是否党员字段后端实施计划

For agentic workers: REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (- [ ]) syntax for tracking.

Goal: 在员工基础信息后端链路中新增“是否党员”字段,保证数据库、实体、接口、导入导出与最小测试契约保持一致。

Architecture: 继续沿用 ccdi_base_staff 现有维护链路,在表上增加 is_party_member 字段,并在 CcdiBaseStaff 的实体、DTO、VO、Excel、Mapper XML 与服务校验中同步补齐。实现保持最短路径,不新增新的接口层或旁路转换逻辑,只在现有员工维护链路上扩字段。

Tech Stack: MySQL, Java 21, Spring Boot 3, MyBatis Plus, EasyExcel, JUnit 5, Markdown


文件结构与职责

后端源码

  • ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/CcdiBaseStaff.java 新增 partyMember 字段并映射 is_party_member
  • ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/dto/CcdiBaseStaffAddDTO.java 新增新增接口入参字段与非空校验。
  • ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/dto/CcdiBaseStaffEditDTO.java 新增编辑接口入参字段与非空校验。
  • ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/vo/CcdiBaseStaffVO.java 新增详情/列表返回字段。
  • ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/excel/CcdiBaseStaffExcel.java 新增 Excel 导入导出列,并挂接“是/否”字典下拉。
  • ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/vo/ImportFailureVO.java 新增导入失败记录字段回显。
  • ccdi-info-collection/src/main/resources/mapper/info/collection/CcdiBaseStaffMapper.xml 在列表查询、批量新增、批量更新 SQL 中补 is_party_member
  • ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiBaseStaffServiceImpl.java 补新增/编辑链路校验,约束 partyMember 只能为 0/1
  • ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiBaseStaffImportServiceImpl.java 补导入链路的必填和枚举值校验。

SQL

  • sql/migration/2026-04-17-add-base-staff-party-member.sql 以幂等方式为 ccdi_base_staff 增加字段,并补充 ccdi_yes_no_flag 字典数据。
  • sql/ccdi_yes_no_flag_dict.sql 提供“是/否标记”字典初始化脚本,供新环境或独立初始化使用。

测试

  • ccdi-info-collection/src/test/java/com/ruoyi/info/collection/service/CcdiBaseStaffServiceImplTest.java 验证服务层新增/修改/详情查询会透传 partyMember
  • ccdi-info-collection/src/test/java/com/ruoyi/info/collection/service/CcdiBaseStaffImportServiceImplTest.java 验证导入场景仅允许 0/1
  • ccdi-info-collection/src/test/java/com/ruoyi/info/collection/mapper/CcdiBaseStaffMapperTest.java 验证 Mapper XML 已包含 is_party_member#{item.partyMember}
  • ccdi-info-collection/src/test/java/com/ruoyi/info/collection/utils/EasyExcelUtilTemplateTest.java 验证员工模板已补“是否党员”下拉列。

实施步骤

  • ccdi_base_staff 表增加 is_party_member,默认值为 0,避免历史数据为空。
  • 在员工基础信息实体、DTO、VO、Excel 对象中补齐 partyMember
  • CcdiBaseStaffMapper.xml 的列表、批量新增、批量更新 SQL 中补 is_party_member
  • CcdiBaseStaffServiceImplCcdiBaseStaffImportServiceImpl 中增加 0/1 值域校验。
  • 新增 ccdi_yes_no_flag 字典脚本,保证导入模板下拉可用。
  • 补充并执行后端定向测试;若执行受现有依赖问题阻塞,需要在记录中明确注明阻塞原因。

验证记录

  • 已尝试执行:
mvn -pl ccdi-info-collection -Dtest=CcdiBaseStaffServiceImplTest,CcdiBaseStaffImportServiceImplTest,CcdiBaseStaffMapperTest,EasyExcelUtilTemplateTest test
mvn -pl ccdi-info-collection -DskipTests compile
  • 当前结果:
    • test 在进入本次新增断言前,被模块内既有测试编译问题拦截,表现为缺少 org.springframework.data.redis.core.* 类型。
    • compile 被模块当前既有依赖缺失拦截,表现为缺少 com.ruoyi.common.annotation.*org.springframework.data.redis.core.*IdCardUtil 等类型。
    • 上述阻塞不是本次“是否党员”字段新增引入的新问题,但会影响自动化验证结论,需要后续先修复模块依赖基线。

完成标准

  • 员工基础信息接口可读写 partyMember
  • 员工列表、详情、导入导出链路都包含 partyMember
  • 数据库字段与字典 SQL 已补齐
  • 后端测试契约已同步更新
  • 已明确记录当前自动化验证阻塞点