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

汇总表问题汇总(2026-09-17)

覆盖用户当日提出的 5 项:汇总表问题总结 / 8月数据缺失与排名不对 / 投资预安排导出为空 / 报表生成加两张投资明细表 / 数据查看调整。
证据文件均可在仓库 _qa_out/ 下复现(临时目录,已 gitignore)。


一、汇总大表(生成_道路运输量汇总表_2026-08.xlsx,19 个页签)的问题

1.1 当月数据「没有 8 月」——确定是生成逻辑问题,不是数据没导

数据库里 8 月源数据是齐的:

表 2026-08 行数
h2031_enterprise_monthly(公路旅客/中口径源) 767
city_bus_monthly 142
passenger_individual_monthly 6
h2032_enterprise_monthly(货运) 636
investment_monthly 168

但导出件里这些页签的 8 月列是空的:

页签 现象 证据
中口径明细 表头有 Q3=2026年8月,整列为空;累计 S5=27524.49 = 1~7 月之和 _qa_out/cmp_mid_2026.txt
城市客运 全部行停在 1~7 月(全省累计 237412.33 = 7 月的值) _qa_out/dump_city08.txt
公交 / 出租 / 网约车 市州行有 8 月值,**全省行** 8 月列空白 同上
城市分市州 市州行更新到 8 月,**全省行**停在 237412.33(7 月值) _qa_out/cmp_rank_city.txt
中口径排名 市州行更新到 8 月,**全省行**与 7 月导出完全相同 同上

1.2 根因(代码位置)

  1. SummaryWorkbookFiller.fillMonthlyLedger()(traffic-audit-server/.../reportexport/calc/SummaryWorkbookFiller.java:50)
    只主动回填 班线包车 / 公交 / 出租 / 轨道轮渡 / 货运 / 网约车 六页,而且 fillCityRows() 用「A 列市州名」定位行,
    cityOf() 识别不到「全省」行 → 全省行永远不填。
  2. 城市客运页、中口径明细页根本不在回填范围内 → 只能沿用母版。8 月母版是拿 7 月的另存的,8 月列本来就是空的,
    所以整页停在 1~7 月;累计列公式也没有按 8 月扩列。
  3. 中口径排名独立生成器 ReportExportService.exportPassengerMidRank()(同文件 :2485):
  • 全省行 B3/F3/L3/P3 在模板里是 =SUM(B4:B20),而 setValOrBlank() 遇到公式单元格直接 return,且该方法**不调用 recalc(wb)**
    → 全省行一直显示模板里的旧缓存值(27524.4906 / 4028.3213)。
  • 全省行同比列写的却是「库内全省」口径(midClassVal(湖北省)),与 SUM(17市州) 口径不一致 → 排名页「数据不对」。
  1. 独立导出件 passengerMidDetail(生成_公路旅客中口径明细.xlsx)另有口径错误:
    1 月全省总客运量 2864.57(= 班线+公交,**少了出租+网约车**),7/8 月为 0,累计 18300.77;
    而汇总大表中口径明细 1 月是 3733.79(含出租+网约车)。
    原因:loadMidClassMap()(:2313)只装了「公路班线」「城际城乡公交」两维,**没有装巡游出租、网约车**。

1.3 修复方向(待确认后实施)

  • loadMidClassMap() 补 city_taxi_monthly(城际城乡巡游出租)与网约车城际城乡口径,两处口径统一。
  • fillMonthlyLedger() 增加「城市客运」「中口径明细」两页回填;fillCityRows()/全省行补齐(全省 = 17 市州之和,或改用客运口径的全省值)。
  • exportPassengerMidRank() 全省行改为写数值(或写入后调用 recalc),并统一同比口径。

二、投资《全省预安排计划进度情况汇总》导出为空

2.1 第一层原因:导出的是 7 月,不是 8 月

用户桌面文件 D:\桌面\生成数据\生成_全省预安排计划进度情况汇总 (1).xls(今天 15:16)与本地用
period=2026-07 调 /api/report/export/investPlan 导出的文件 字节完全相同:

SHA256  桌面件   = B38F90F35FEF7CF6C667D7EE68C79D6BC160E3706C70DEBDDB993914D4AD88E6
SHA256  7月导出  = B38F90F35FEF7CF6C667D7EE68C79D6BC160E3706C70DEBDDB993914D4AD88E6

佐证:该文件表头写的是 1-7月累计完成投资,合计行
H6=2106760.05 / I6=1188542.01 / J6=310523.2 / W6=123170.96 正好等于库内 2026-07 的合计
(2026-07:start_cum 1188542.01、year_plan 310523.2、year_cum 123170.96)。

用 2026-08 重新导出的文件(164,864 B)表头为 1-8月累计完成投资,合计
H6=11108628.86 / I6=3218801.57 / J6=1273968.2 / W6=744262.86,与库一致 → 月份选对就正常。

2.2 第二层原因:即使月份对了,这些列也只能是空的

模板_全省预安排计划进度情况汇总.xls 有 28 列,导出只能填 16 列。逐列对比(_qa_out/cmp_8月_vs_母版.txt):

空列 表头 原因
C 县(市、区) investment_project.county 184 个项目全为 NULL → 导入没抓这一列(源表里是有的,可修)
K / L / M 部资金 / 省资金 / 企业及地方自筹 数据库**无此字段**,DataImportService.findInvestHeader() 未映射
O / P / Q 2026年建议计划(合计/部省投资/主要建设内容) 同上,无字段
R / S / T 2027年建议计划(合计/部省投资/主要建设内容) 同上,无字段
Y / Z 省补资金 / 项目备注 同上,无字段

另有 2 处**语义错位**(不是空,是填错了格):
- N 列(模板=「2026年计划-计划进度」)被写成了 progress_desc(形象进度长文本);
- X 列(模板=「实际进度」,母版是"在建/完工")项目行写 progress_stage、**合计行却写完成率比例**(0.3967 / 0.5842)。
见 ReportExportService.fillInvestPlanProjectRow() :5059 与 writeInvestAggHssf() :5263。

2.3 结论

预安排汇总「很多指标空白」= 三件事叠加:
1. 导出时月份选成了 7 月(文件里能直接看出来);
2. 导入没抓 C 列(县市区)——可修;
3. 资金来源、建议计划、省补资金、备注这 4 类字段**数据库从建表起就没有**,不补表结构/导入映射永远填不上。


三、投资《X月物流站场投资明细》《X月客运站投资明细表》(报表生成界面新增)

模板已存在:
- docs/投资/模板/模板_X月客运站投资明细表.xlsx(明细 + 汇总两页,按市州分「一、使用交通部车购税资金建设项目/二、使用省燃油税返还资金建设项目/三、农村综合运输服务站/四、候车亭」四块)
- docs/投资/模板/模板_X月物流站场投资明细.xls(月2 省表 + 分项目投资完成情况 + 分市州规划内外项目完成情况 + 第 4 页)

阻断点:导入把「分组行」丢掉了。
DataImportService :2465 明确跳过 ^[一二三四五六七八九十]+、.* 的行,而这两张表恰恰要靠这行决定项目落在哪个资金渠道/规划内外块。
docs/投资/输出/格式探测_2026-07.tsv 显示源文件里这些分组行是存在的(如 R12 | 一、使用交通部车购税资金建设项目)。

要落地必须先做 3 步:
1. investment_project 增列 fund_channel(资金渠道/分组标签),实体加字段;
2. 导入时不再跳过分组行,改为记录「当前分组」并写到其后的项目上;
3. 重新导入 7 月、8 月数据后,再写这两张表的生成器(按市州 + 分组动态插行、重连汇总页公式)。

说明:在没有 fund_channel 之前强行生成,只能把所有项目塞进某个块里,与母版口径不符,故先不做。


四、数据查看页调整(已改代码)

  • traffic-audit-web/src/views/DataView.vue:把**报表期**从「数据类型」后面移到**前面**;新增「投资」「能耗」两个分组
    (投资:投资项目基础表 / 市州月报项目进度 / 投资系统每月导入项目表;能耗:车辆能耗季度数据 / 能耗运政车辆数)。
  • traffic-audit-server/.../dataimport/controller/DataViewController.java:新增 investmentMonthly、investmentProject、
    investmentSystem、energyVehicle、energyAuth 五类查询与列定义;mvn -o compile 通过。
  • 状态:代码已改并编译通过,但**尚未重启后端**,所以 8090 上还是旧逻辑;重启后生效。

五、其他注意点

  • 汇总大表母版:docs/生成汇总大表/2026年8月道路运输量汇总表.xlsx 存在;但 _备份_2026年8月… 同期备份母版**不存在**,
    日志会打 WARN 汇总工作簿未找到同期备份母版,这也是这些页签 8 月不齐的一个背景因素。
  • 中口径排名的「全省 ≠ 17 市州之和」(1~8 月:27524.49 vs 24481.74),属于**口径问题**,需要业务确认全省到底按哪个口径取。