Files
tms-erp-web/.workbuddy/memory/2026-07-28.md
赵忠林 e460813480 docs(cargo-type): 补充国标数据导入分析与转换说明
- 详细描述源文件结构与表头位置
- 说明关键规则:二级编码不使用序号列,唯一一级及名称限制
- 介绍字段映射关系至系统导入模板列
- 提供已生成的预览及导入文件路径
- 说明导入操作由用户在系统中完成,分两阶段导入一级和二级数据
2026-07-28 12:52:02 +08:00

4.3 KiB
Raw Blame History

2026-07-28 工作日志

货物类型导入模板美化

  • 文件:src/views/base/cargo-type.vuehandleTemplate()
  • 改动(第一次):表头行加主色底色 #409EFF + 白色加粗字体 + 居中对齐 + 细边框;行高 42。
  • 改动(调整后):按用户反馈,表头底色改为统一灰色 #D9D9D9 + 黑色加粗字体,行高降为 30。
  • 导入失败明细 decorateCargoTypeFailDetail 调整:仅「导入失败原因」列字体红色;错误按 A./B./C. 编号分号隔开并去掉后端重复的「第N行」前缀最终格式示例 第2行A.该货物类型编码已存在,请更换唯一编码
  • 验证Node + exceljs 4.4.0 跑通生成逻辑,确认表头 fill/font/alignment/height、失败原因编号格式与红色字体均正确。

货物类型导入失败明细 - 备注超长与标红强化

  • 确认需求:除「导入失败原因」列外,其他列一律不标红;已增加 decorator 清除所有非失败原因列红色字体(含类型列,不论对错)。
  • 失败原因按 A./B./C. 编号、分号隔开并优化错误文本已包含规则说明时不重复拼接避免「备注不能超过200字备注不能超过200字」
  • 新增兜底:失败明细行若「备注」列文本长度 > 200 且失败原因未含备注错误自动追加一条「备注不能超过200字」编号项Node 验证通过)。
  • 后端根因(已读 /Users/gxwebsoft/JAVA/tms-erp-api-ws/blade-service/blade-system/.../CargoTypeServiceImpl.javavalidate() 用 throw 实现一行多个错误时只抛第一个备注超长校验第238行可能被前置的编码/名称/上级错误挡住,导致失败明细不显示备注原因。彻底方案需后端改收集式校验(列出全部错误),待用户确认是否改 Java。
  • 最终确认(样式)decorator 仅操作 G 列「导入失败原因」——黑色字体argb FF000000、无背景填充fill→none其余列单元格样式/内容不修改。
  • 列宽修复(关键 bug:失败明细列宽之前全部失效,根因是 CARGO_TYPE_FAIL_COL_WIDTH 的 key 用了「类型/上级货物类型」等简写,而后端 CargoTypeImportFailureExcel 表头带 * 与括号说明(如 *类型上级货物类型(如为一级则不需填写)key 对不上导致走默认 18。已把 key 改为与后端表头完全一致,并恢复「给所有列设宽」逻辑。最终宽度:*类型16 / 上级货物类型(…)22 / 上级货物类型编码(…)26 / *货物类型18 / *货物类型编码18 / 备注24 / 导入失败原因70。Node 验证通过。
  • 事务性导入(后端改动)CargoTypeServiceImpl.importCargoType@Transactional(rollbackFor=Exception.class),逐条 validate+save 后若有任一失败则 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly() 回滚整批,实现"全部正确才入库,任一错误则一条都不存"。需重新编译部署 tms-erp-api-ws 后端生效。

国标 GB-T 42820-2023 数据 → cargo-type 导入(分析+转换)

  • 源文件:/Users/gxwebsoft/Downloads/副本货物类型导入模板_模拟数据(1).xlsx,单 SheetA1 是标题,真实表头在第 2 行。
  • 源列:一级编码(A,2位)、一级类型(B)、二级编码(C,仅序号)、二级类型(D)、完整国标编码(E,4位)、一级类型/编码(F)、(G空)、(H标注不可靠)。
  • 关键规则:二级真实编码 = E 列后 2 位,必须忽略 C 列序号E 前 2 位 = A。116 行全为二级明细,唯一一级 19 个01-99。无重码、名称≤14字、无备注。
  • 映射:系统 6 列模板(*类型/上级货物类型(…)/上级货物类型编码(…)/*货物类型/*货物类型编码/备注)。一级行=类型一级、上级空、名称=B、编码=A二级行=类型二级、上级名称=B、上级编码=A、名称=D、编码=E。
  • 已生成预览/导入文件(按系统模板表头,编码列设文本格式):/Users/gxwebsoft/VUE/tms-erp-web-ws/import-cargo-type/货物类型导入_一级.xlsx19 条)、货物类型导入_二级.xlsx116 条)。
  • 用户确认:一级+二级都导、手动页面上传、测试/空环境直接导。导入动作由用户在系统"货物类型-批量导入"完成(两阶段:先一级后二级)。