Files
cmautobuy/docs/task/237-档口入库码导入使用Excel生成日期.md
T
2026-08-15 10:39:22 +08:00

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;未修改或验证生产历史错误日期数据。任务不涉及数据库迁移。

相关提交

  • 74856de fix: 使用 Excel 生成日期导入档口入库码 (#237)