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

工作日结_2026-09-20

一、今天做了什么

1.1 修复:报表生成页两张投资明细表报「未知报表类型」

  • 现象:报表生成页「客运站投资明细表」「物流站场投资明细」显示
    未知报表类型:investPassengerDetail / investLogisticsDetail,无法预览/导出。
  • 定位:报错来自 ReportExportService.checkExportReady() 的 switch (t) 兜底分支(ReportExportService.java:231)。
    前一晚只把这两个类型接进**导出**链路(exportSelected switch、REPORT_FILE_NAMES、ReportExportController 两个接口、ReportExport.vue 两项),
    漏了**就绪校验与预览**链路,isInvestType() 也没收录这两个类型。
  • 与数据无关:8 月投资月报一直在库(客运站场 39 行、物流园区 128 行)。
  • 修复:
  1. checkExportReady() 新增两个 case:按类别统计 investment_monthly 该期行数 + 校验 docs/投资/模板/ 母版是否存在(缺母版给提示);
  2. isInvestType() 收录两个类型(纳入投资分支的月度覆盖与问题清单);
  3. investPreview() 增加按类别过滤重载 (period, mode, category, summary, problems),原无参重载保留;
  4. 预览循环按类型分派到对应类别;未知类型兜底报错保持不变。

1.2 其它

  • 重启前后端加载新代码(后端 Started TrafficAuditApplication 10:49:51)。
  • 顺手核对:前一晚「合计行被当项目」修复后,客运本月完成投资由含合计行的 2130.1 收敛为 2048.1,与 SQL 逐项一致;库内已无含「计」的伪项目行。

1.3 修复:汇总大表《城市客运》8 月同比 / 累计同比算错(母版删 AJ 辅助列 + 程序按表头取数)

  • 现象:用户上报生成表城市客运 8 月同比 −86.5%、累计同比 −43.5%;且「2025年1-7月累计」列在母版删过却仍在生成表里。
  • 根因(3 个):
  1. 母版有**两本**——用户删的是《2026年7月道路运输量汇总表.xlsx》,而 8 月导出用的是《2026年8月…》,
    后者城市客运页 2025 年段插了 AJ 列「2025年1-7月累计」,把 2025年8月列挤到 AK,
    8 月同比 =Q4/AJ4-1 实际是「8月值 ÷ 2025年1-7月累计」;累计同比分母又把 1-6 月重复计、8 月漏计。
  2. 新写的列号换算 colIndexOf() 返回 1 基列号,而 POI 列号是 0 基 → 月份列查表全落空、退化成「+2 列」,
    =O5/AH5-1 被算成 =R5/AK5-1(自引用)→ 货运/网约车/中口径明细 共 360 格循环引用。
  3. POI setCellFormula 不接受带 = 前缀的公式串,异常又被 catch (Exception ignore) 吞掉,
    累计同比分母修正一直静默失败(日志只显示「修正格数=0」);另母版 3~8 月表头是 46235 这类裸序列 + General 格式,
    原按 isCellDateFormatted 判定会漏判。
  • 处置:
  1. 母版:用 Excel 16.0 COM 在《2026年8月道路运输量汇总表.xlsx》城市客运页整列删除 AJ(引用由 Excel 自动调整,
    如 W4 → =V4/AW4-1),再把删列产生的 36 处 #REF! 累计同比公式还原为 AJ;
    备份 _bak_202608母版删除AJ列前_20260920.xlsx;删列后母版与版式参照件《生成_道路运输量汇总表.xlsx》列结构一致。
  2. 代码:colIndexOf 改 0 基;setCellFormula 去掉 = 前缀并把 catch 改成 WARN 日志;
    yearMonthOf 支持裸日期序列;repairCumulativeYoyFormulas() 保留作母版兜底。
  3. 前端:ReportExport.vue 预览补齐货运量/城市客运/中口径共 8 项同比映射,修正「当月货物周转量(万吨)」单位。

二、测试结果摘要

《功能测试报告_投资明细表就绪与预览类型补齐_2026-09-20.md》:**7 条用例通过,1 条未实测**(缺母版提示,未临时移动用户母版文件)。

校验项 结果
/api/report/ready(两新类型) ready=true,rows=39 / 128,note 为空
/api/report/preview(两新类型) 覆盖 [8],problems 为空
摘要 vs SQL 逐项对齐 客运 2048.1 / 38648.16 / 550929.76、物流 90185.9 / 704107.7 / 2656354.31,**一致**
分类别过滤 客运 39 + 物流 128 = 167,全类别类型仍 167(未串类)
导出回归 两张明细表仍可导出(29462 / 134144 字节)
原有投资类型回归 investPlan / investBillion / investCounty / investFiveYearLogistics 均 ready=true,rows=167
未知类型负向 foo → ready=false、note=未知报表类型:foo(兜底仍有效)

《功能测试报告_城市客运月度与累计同比_2026-09-20.md》:**15 条用例通过**。

校验项 结果
城市客运 R4 / T4 公式 =Q4/AJ4-1、=S4/(V4+X4+Z4+AB4+AD4+AF4+AH4+AJ4)-1(不再是 #REF!)
全省客运量 8 月同比 / 累计同比 +4.44% / +0.117%(修复前 −86.5% / −43.5%)
辅助列 生成表与母版均无「2025年1-7月累计」,城市客运页 BV→BU
循环引用 全表 0 处(修复前 360 处,含货运/网约车/中口径明细 R 列)
其它 18 个页签回归 除上述 R 列修复外逐格一致
预览接口 24 项指标含 8 项同比,1.03 秒
导出耗时 14 秒(母版读取+回填 6.5s、公式重算 4.1s、写盘传输 3.4s)

三、遗留问题与待办

  1. 武汉物流项目清单口径(已确认忽略)。
  2. 天门物流源文件 H/J/K 为空 → 待用户找同事要数据后导入。
  3. 荆州/黄石「规划内/规划外」拆分口径 → 待用户向同事确认。
  4. ~~C 组(城市客运页结构归一,需用户先在 WPS 整列删除 AJ 列)~~ 已完成(改用 Excel COM 整列删除 + 公式还原);
    D 组(增速排名措辞)/B4(导出前基数体检 + 弹窗 + 《数据缺失清单》页)待排期。
  5. 缺母版提示(T08)未实测,可在有测试副本时补测。
  6. 汇总大表导出是**同步请求**,当前约 14 秒(每次都要重算整本约 4 万格公式):数据量再涨主要是 SQL 聚合变慢,
    不会「卡死」,但建议后续做成异步任务 + 进度提示。
  7. 部署包 deploy/traffic-audit-deploy-20260913/backend/docs/生成汇总大表/ 与 _deploytest/ 下仍是**带 AJ 列的旧母版**,
    下次打包时需同步(未经用户确认不擅自改部署产物)。
  8. 中口径明细 4 格(城际城乡巡游出租/网约车)因 2025年8月基数为 0,同比显示 #DIV/0!(不可比),如需改空白需用户确认口径。

四、明日计划

  1. 等天门源数据 / 荆州黄石口径确认后补导并复验。
  2. 推进 C/D 组与 B4。
  3. 与用户确认是否把 09-18 夜间起的本地提交一并推送到公司 gitea(用户 09-19 曾要求「今天先不推公司」)。
  4. 评估汇总大表导出异步化(长任务进度条 / 结果缓存),并确认部署包母版同步方式。