修复导入模板格式和必填标记

This commit is contained in:
wkc
2026-05-07 00:01:27 +08:00
parent 5980ed0790
commit 402a0c3e2f
22 changed files with 458 additions and 51 deletions

View File

@@ -0,0 +1,30 @@
# 员工信息维护导入模板列宽调整实施记录
## 背景
员工信息维护页面下载的导入模板中,空模板会被自动列宽策略压缩,导致每列显示过窄,不便于直接填写身份证号、电话、金额、日期等字段。
## 修改内容
- 调整 `CcdiBaseStaffExcel` 中员工信息 Sheet 的各列 `@ColumnWidth`,放宽姓名、员工 ID、部门 ID、身份证号、电话、年收入、入职时间、是否党员、状态列宽。
- 调整 `CcdiBaseStaffAssetInfoExcel` 中员工资产信息 Sheet 的各列 `@ColumnWidth`,放宽员工身份证号、资产分类、产权占比、日期、估值、资产状态和备注列宽。
- 双 Sheet 导入模板生成时不再使用空数据自动匹配列宽策略,改为按 Excel DTO 上声明的列宽输出,避免空模板被压窄。
- 补充单元测试,校验员工信息维护双 Sheet 导入模板实际生成的列宽不低于 DTO 声明宽度。
## 影响范围
- 影响接口:`POST /ccdi/baseStaff/importTemplate`
- 影响模板:
- `员工信息` Sheet
- `员工资产信息` Sheet
- 不涉及导入解析、字段校验、数据库结构和前端交互逻辑。
## 验证情况
已执行:
```bash
mvn -pl ccdi-info-collection -am -Dtest=EasyExcelUtilTemplateTest -Dsurefire.failIfNoSpecifiedTests=false test
```
验证结果:模板工具测试通过,覆盖员工信息维护双 Sheet 模板列宽、下拉框、文本格式以及既有模板生成逻辑。

View File

@@ -0,0 +1,31 @@
# 员工信息维护导入模板必填表头标记实施记录
## 背景
员工信息维护导入模板中,标注了 `@Required` 的字段表头未显示 `*`。排查发现 `RequiredFieldWriteHandler` 在 Sheet 创建完成后立即读取表头行,但此时 EasyExcel 尚未写入表头,因此会跳过必填标记处理。
## 修改内容
-`RequiredFieldWriteHandler` 从 Sheet 创建后处理改为表头单元格写入完成后处理。
- 对标注了 `@Required` 的表头追加 `*` 并应用原有红色加粗样式。
- 增加防重复处理,表头已经以 `*` 结尾时不再重复追加。
- 补充员工信息维护模板测试,校验员工信息 Sheet 必填表头输出为 `姓名*``员工ID*``所属部门ID*``身份证号*``电话*``是否党员*``状态*`,并校验员工资产信息 Sheet 已有 `*` 不重复追加。
## 影响范围
- 影响接口:`POST /ccdi/baseStaff/importTemplate`
- 影响模板:
- `员工信息` Sheet
- `员工资产信息` Sheet
- 处理器为共享模板处理器,其他使用 `@Required``RequiredFieldWriteHandler` 的导入模板会恢复必填表头 `*` 标记。
- 不涉及导入解析、校验逻辑、数据库结构和前端交互。
## 验证情况
已执行:
```bash
mvn -pl ccdi-info-collection -am -Dtest=EasyExcelUtilTemplateTest -Dsurefire.failIfNoSpecifiedTests=false test
```
验证结果:测试通过,员工信息维护导入模板的必填表头星号、列宽、下拉框、文本格式均通过断言。

View File

@@ -0,0 +1,32 @@
# 员工信息维护导入模板文本格式实施记录
## 背景
- 员工信息维护导入模板中,“身份证号”“电话”列需要使用文本单元格格式,避免 Excel 将长数字或手机号自动识别为数值格式。
- 当前模板生成链路已支持 `@TextFormat` 注解并由 `TextFormatWriteHandler` 统一处理,但员工信息 Sheet 的对应字段未标注该注解。
## 修改内容
-`CcdiBaseStaffExcel` 中为“身份证号”字段增加 `@TextFormat`
-`CcdiBaseStaffExcel` 中为“电话”字段增加 `@TextFormat`
- 更新 `EasyExcelUtilTemplateTest`,在员工信息模板测试中断言第 3 列“身份证号”和第 4 列“电话”的默认列格式均为文本格式 `@`
## 影响范围
- 影响接口:`/ccdi/baseStaff/importTemplate`
- 影响文件:
- `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/excel/CcdiBaseStaffExcel.java`
- `ccdi-info-collection/src/test/java/com/ruoyi/info/collection/utils/EasyExcelUtilTemplateTest.java`
- 不改变导入字段、字段顺序、导入校验规则和前端页面逻辑。
## 验证情况
- 已执行定向模板单测:
```bash
MAVEN_OPTS="-javaagent:$HOME/.m2/repository/net/bytebuddy/byte-buddy-agent/1.17.8/byte-buddy-agent-1.17.8.jar" mvn -pl ccdi-info-collection -am -Dtest=EasyExcelUtilTemplateTest -Dsurefire.failIfNoSpecifiedTests=false test
```
- 验证结果:通过,`EasyExcelUtilTemplateTest` 共 5 个用例0 失败0 错误。
- 测试日志确认员工信息 Sheet 第 3 列、第 4 列均已执行文本格式设置。
- 本次未启动前端或后端进程,无需额外清理运行进程。

View File

@@ -0,0 +1,54 @@
# 信息模块导入模板文本格式覆盖实施记录
## 背景
- 信息模块多个导入模板中存在证件号、身份证号、电话、手机号、统一社会信用代码、银行账户、账户号码、银行代码、工号、跨 Sheet 关联编号等需要保真录入的字段。
- 这类字段如果使用 Excel 默认常规格式,可能被自动识别为数值或科学计数法,导致前导零、长号码或编码内容失真。
## 修改内容
- 为信息模块导入模板 DTO 中的保真字段补充 `@TextFormat`
- 账户库:证件号、账户号码、银行代码。
- 员工信息维护:身份证号、电话;员工资产 Sheet 的员工身份证号保持文本格式。
- 员工亲属关系、信贷客户家庭关系:主身份证号、关系人证件号码、手机号码 1、手机号码 2。
- 员工亲属实体关联、信贷客户实体关联:身份证号、统一社会信用代码。
- 实体库管理、实体中介:统一社会信用代码、法定代表人证件号码。
- 个人中介:证件号码、手机号码、企业统一信用码、关联中介本人证件号码。
- 中介实体关联关系:中介本人证件号码、统一社会信用代码。
- 招投标信息维护:采购事项 ID、申请人工号、采购负责人工号、供应商统一信用代码、供应商联系电话、供应商银行账户。
- 招聘信息维护:招聘记录编号、证件号码、面试官工号;历史工作经历 Sheet 的招聘记录编号。
- 更新普通导入模板生成方法 `EasyExcelUtil.importTemplateExcel(...)`,使不带字典下拉框的模板也会注册 `TextFormatWriteHandler`
- 扩展 `EasyExcelUtilTemplateTest`,实际生成各导入模板 workbook 并断言上述列的默认列格式为文本格式 `@`
## 影响范围
- 后端模板生成工具:
- `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/utils/EasyExcelUtil.java`
- 信息模块导入模板 DTO
- `CcdiAccountInfoExcel`
- `CcdiBaseStaffExcel`
- `CcdiCustEnterpriseRelationExcel`
- `CcdiCustFmyRelationExcel`
- `CcdiEnterpriseBaseInfoExcel`
- `CcdiIntermediaryEnterpriseRelationExcel`
- `CcdiIntermediaryEntityExcel`
- `CcdiIntermediaryPersonExcel`
- `CcdiPurchaseTransactionExcel`
- `CcdiPurchaseTransactionSupplierExcel`
- `CcdiStaffEnterpriseRelationExcel`
- `CcdiStaffFmyRelationExcel`
- `CcdiStaffRecruitmentExcel`
- `CcdiStaffRecruitmentWorkExcel`
- 不改变导入字段顺序、字段类型、业务校验、字典下拉框和页面交互。
## 验证情况
- 已执行定向模板测试:
```bash
MAVEN_OPTS="-javaagent:$HOME/.m2/repository/net/bytebuddy/byte-buddy-agent/1.17.8/byte-buddy-agent-1.17.8.jar" mvn -pl ccdi-info-collection -am -Dtest=EasyExcelUtilTemplateTest -Dsurefire.failIfNoSpecifiedTests=false test
```
- 验证结果:通过,`EasyExcelUtilTemplateTest` 共 7 个用例0 失败0 错误。
- 测试过程已实际生成单 Sheet 与双 Sheet 导入模板,并检查保真字段列格式为文本格式。
- 本次未启动前端或后端进程,无需清理测试进程。