2.6 KiB
2.6 KiB
237 Admin:档口入库码导入使用 Excel 生成日期
- 类型:缺陷
- 父级大工单:#14
- 所属 MVP / 版本:#224
- 状态:已完成
- 日期:2026-08-15
- Gitea 工单:#237
背景与目标
原导入流程把页面筛选日期作为每行 business_date,因此页面默认今天时会覆盖 Excel 自带的生成日期。本任务让 Excel“生成日期”成为导入业务日期的唯一事实来源,页面日期只负责筛选。
最终方案
- 把“生成日期”设为必需表头,逐行解析并要求整份工作簿只有一个业务日期。
- 完整日期支持
YYYY-MM-DD、YYYY/MM/DD和 Excel 日期序列值;MM-DD、MM/DD短日期使用原始文件名_YYYYMMDD_补充年份,并核对月日必须一致。 - 日期缺失、格式非法、同一文件混合日期或短日期与文件名冲突时,在写库前拒绝整批导入。
- 上传处理器保留原始文件名并传给导入服务,不再提交页面筛选日期作为数据来源。
- 导入成功后跳转到解析出的业务日期,完成提示明确展示日期。
- 实际实现与建单方案一致,没有数据库迁移,也没有修改匹配和回写逻辑。
改了哪些
admin/service/inner_code_import.go:解析、校验 Excel 生成日期,并在导入结果中返回业务日期。admin/service/inner_code_import_test.go:覆盖完整日期、短日期、文件名冲突、混合日期和缺少日期表头。admin/handler/web/inner_code.go:传递原始文件名并按 Excel 日期重定向。admin/templates/inner_code/list.html:移除导入表单中容易误导的页面日期隐藏字段。
验收结果
| 验收标准 | 结果 |
|---|---|
Excel 完整生成日期写入 business_date,与页面筛选日期无关 |
通过 |
| 短日期使用原始文件名年份解析,并严格核对文件名日期 | 通过 |
| 混合、缺失、非法日期在写库前整批失败 | 通过 |
| 导入成功跳转到 Excel 生成日期并展示统计 | 通过 |
| 现有业务键幂等、临时文件清理及匹配回写逻辑保持不变 | 通过 |
| 固定 Go 1.23.0 build/test/vet 通过 | 通过 |
测试
- 执行的命令:
go test -count=1 ./service ./handler/web$env:GOTOOLCHAIN='go1.23.0'; go build ./...; go test -count=1 ./...; go vet ./...git diff --check
- 结果:全部通过。
- 没验证到的部分:未在浏览器中上传真实业务 Excel;未修改或验证生产历史错误日期数据。任务不涉及数据库迁移。
相关提交
74856defix: 使用 Excel 生成日期导入档口入库码 (#237)