覆盖用户当日提出的 5 项:汇总表问题总结 / 8月数据缺失与排名不对 / 投资预安排导出为空 / 报表生成加两张投资明细表 / 数据查看调整。
证据文件均可在仓库_qa_out/下复现(临时目录,已 gitignore)。
数据库里 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 月导出完全相同 | 同上 |
SummaryWorkbookFiller.fillMonthlyLedger()(traffic-audit-server/.../reportexport/calc/SummaryWorkbookFiller.java:50)fillCityRows() 用「A 列市州名」定位行,cityOf() 识别不到「全省」行 → 全省行永远不填。ReportExportService.exportPassengerMidRank()(同文件 :2485):B3/F3/L3/P3 在模板里是 =SUM(B4:B20),而 setValOrBlank() 遇到公式单元格直接 return,且该方法**不调用 recalc(wb)**midClassVal(湖北省)),与 SUM(17市州) 口径不一致 → 排名页「数据不对」。passengerMidDetail(生成_公路旅客中口径明细.xlsx)另有口径错误:loadMidClassMap()(:2313)只装了「公路班线」「城际城乡公交」两维,**没有装巡游出租、网约车**。loadMidClassMap() 补 city_taxi_monthly(城际城乡巡游出租)与网约车城际城乡口径,两处口径统一。fillMonthlyLedger() 增加「城市客运」「中口径明细」两页回填;fillCityRows()/全省行补齐(全省 = 17 市州之和,或改用客运口径的全省值)。exportPassengerMidRank() 全省行改为写数值(或写入后调用 recalc),并统一同比口径。用户桌面文件 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,与库一致 → 月份选对就正常。
模板_全省预安排计划进度情况汇总.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。
预安排汇总「很多指标空白」= 三件事叠加:
1. 导出时月份选成了 7 月(文件里能直接看出来);
2. 导入没抓 C 列(县市区)——可修;
3. 资金来源、建议计划、省补资金、备注这 4 类字段**数据库从建表起就没有**,不补表结构/导入映射永远填不上。
模板已存在:
- 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 通过。docs/生成汇总大表/2026年8月道路运输量汇总表.xlsx 存在;但 _备份_2026年8月… 同期备份母版**不存在**,WARN 汇总工作簿未找到同期备份母版,这也是这些页签 8 月不齐的一个背景因素。