# 员工基础信息新增是否党员字段后端实施计划 > **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`。 - [ ] 在 `CcdiBaseStaffServiceImpl` 与 `CcdiBaseStaffImportServiceImpl` 中增加 `0/1` 值域校验。 - [ ] 新增 `ccdi_yes_no_flag` 字典脚本,保证导入模板下拉可用。 - [ ] 补充并执行后端定向测试;若执行受现有依赖问题阻塞,需要在记录中明确注明阻塞原因。 ## 验证记录 - 已尝试执行: ```bash 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 已补齐 - 后端测试契约已同步更新 - 已明确记录当前自动化验证阻塞点