编辑 | blame | 历史 | 原始文档

功能测试报告:M1-货运 取数链路核对与 7 月回归(2026-09-08)

一、功能说明

汇总大表数据驱动改造 M1 第一块:把“货运口径”(规上/规下/合计 × 货运量/周转量 × 当月/累计)固化为可复用的 Java 计算服务 FreightCalc(traffic-audit-server/.../reportexport/calc/FreightCalc.java),并验证:**仅凭数据库即可重算出 7 月已修正母版中货运量排名、货运周转量排名两张成品页的全部规上/规下数值(逐格 diff=0)**,为后续 SummaryFiller 写回母版提供同源矩阵。

二、测试环境

  • 库:traffic_audit(127.0.0.1:3308),数据 = 2026-07 已导入现状;
  • 母版基线:docs/生成汇总大表/2026年7月道路运输量汇总表.xlsx(2026-07 已修正版);
  • 工具:mysql CLI 取数 + Python 重算比对;后端 mvn -q compile 通过(exit=0)。

三、取数口径(与既有 exportFreightRank/exportTurnoverRank 及确认回执 B1 一致)

指标 来源
规上货运量(当月/累计,万吨) h2032_enterprise_monthly.freight_total(吨)按市州汇总 ÷10000
合计货运量(万吨) freight_turnover_import.freight_mMM(当月)/ freight_m01..mMM(累计)
规下货运量 合计 − 规上(拆分表不存货运量列,不可直接取)
规上/合计周转量 scale_split_transport MONTH / CUMULATIVE 的 above_scale_turnover / total_turnover
规下周转量 合计 − 规上(与拆分表 below 列核对一致)
湖北省行 17 市州之和(与母版“全省行=Σ城市行”公式一致)

四、用例表

# 用例 输入 预期 实际 结论
1 货运量排名·累计(1-7月) 库 2026-01~07 与母版 B4:B21(规上)、G4:G21(规下)逐格一致 diff=0 通过
2 货运量排名·当月(7月) 库 2026-07 与母版 B25:B42、G25:G42 逐格一致 diff=0 通过
3 货运周转量排名·累计 scale_split CUMULATIVE 与母版 B5:B22、G5:G22 一致 diff=0 通过
4 货运周转量排名·当月 scale_split MONTH 与母版 B27:B44、G27:G44 一致 diff=0 通过
5 全省行与 Σ 城市一致性 17 市州求和 全省规上当月=3754.7823(母版) 计=3754.7823 通过
6 Java 编译 mvn -q -DskipTests compile 无错误 exit=0 通过

五、发现的问题与处置

  1. H2032 按 region_code 汇总时存在“一市多区县代码”,初版脚本误用覆盖而非累加 → 已改累加,0 差异。
  2. 累计合计首版只加到 6 月(漏 m07)→ 已改 1..7 全加,0 差异。
  3. freight_turnover_import.region_name 存在“林区/神农架林区/天门/天门市”等别名 → 统一经 RegionUtil 别名归一后比对,0 差异。
  4. 周转量两页在任何版本比对中均 0 差异(拆分表口径稳定)。
    (上述均为回归脚本问题,非业务口径问题;已在 Python 回归与 Java 实现中同步修正。)

六、结论与下一步

  • 结论:货运口径链路可从库完整复算 7 月母版,口径锁定;FreightCalc 已入库并通过编译。
  • 说明:同比未在本服务计算——按 Q1 由写回层以母版缓存 2025 参照组为基准(去年同期 DB 列为空,已核对)。
  • 下一步:① M1-PaxCalc(公交/出租/轨道轮渡/网约/班线包车/城市客运口径,用城市客运三表 7 月回归);② M1-MidCalc;③ M2 SummaryFiller 写回台账+成品页并逐格 diff;④ 8 月实弹。