period=2026-07):以“1-4 月骨架”母版为底、按同期备份母版还原月度块,得到 1-7 月完整工作簿;period=2026-07&toMonth=6):在上述 1-7 内容基础上,把 8 个台账/合成页裁剪到 6 月——
ReportExportService.exportSummaryWorkbook(period, mode, toMonth):新增可选 toMonth 裁剪;trimSummaryMonthlySheets(wb, keepMonths):只处理 8 个台账/合成页(货运、班线包车、城市客运、公交、出租、网约车、轨道、轮渡、中口径明细),按“含累计公式且任一 2026 月度值列非空”识别数据行;ReportExportController /export/summaryWorkbook 增加可选参数 toMonth。docs/生成汇总大表/输出/道路运输量汇总表_2026-07.xlsx(921,070 B)docs/生成汇总大表/输出/道路运输量汇总表_2026-06.xlsx(912,980 B)mvn spring-boot:run 实跑,本机 MySQL 127.0.0.1:3308/traffic_audit);docs/生成汇总大表/2026年7月道路运输量汇总表.xlsx(1-4 月骨架,工作区未提交版);docs/生成汇总大表/_备份_2026年7月道路运输量汇总表_清理前_20260904.xlsx;=、值、文本),数值按 int/float 等价归一化。| # | 用例 | 输入 | 预期 | 实际 | 结论 |
|---|---|---|---|---|---|
| 1 | 1-7 月扩列 | GET /api/report/export/summaryWorkbook?period=2026-07&mode=month |
与备份母版全簿逐格一致 | 真差异=0 | 通过 |
| 2 | 1-6 月生成(正向) | 同上追加 &toMonth=6 |
非裁剪范围(非 8 台账页 + 8 台账页 A..N 等)与备份一致;仅 O/P/Q/R 按规则变化 | 非白名单真差异=0 | 通过 |
| 3 | 7 月两列清空/表头保留 | 8 台账页数据行 O/P | 数据格空、表头行 O/P 保留 | 数据格清空 1132,表头保留 24,表头异常 0 | 通过 |
| 4 | 累计按 1-6 月 | 数据行 Q 列公式 | 去掉 +O{行} |
改写 566 处,例:=C5+E5+...+O5→=C5+...+M5 |
通过 |
| 5 | 累计同比分母=2025 1-6 月 | 数据行 R 列公式 | 去掉 ,AF{行}/+AF{行} |
改写 566 处,例:=Q5/SUM(T5..AF5)-1→=Q5/SUM(T5..AD5)-1 |
通过 |
| 6 | 抽查关键格 | 货运/中口径明细 O/P/Q/R | 表头见文、数据行 O/P 空 | 07 数据行 O=3754.7823(7 月值),06 同格为空;表头一致 | 通过 |
| 7 | 负向/边界 | toMonth 缺省或 ≥7 |
行为与旧版一致(全簿还原) | 同用例 1,真差异 0 | 通过 |
+O4,匹配不上公式里的 O5,导致 Q/R 未改写(仅清空生效)。处置:token 行号改 excelRow = r + 1。lastCol = 19 + 2*(m-1)。mvn compile + 重启后端复测通过(最终产物为修复后代码生成)。“先生成 1-6 月、1-7 月扩列”两本产物经程序实际生成并通过逐格对照:1-7 月产物与备份母版零差异;1-6 月产物在 8 个台账/合成页正确执行“7 月两列留空(表头保留)、累计/同比按 1-6 月”的口径,其余范围零差异。P0 项可关闭,剩余成品聚合页数据驱动重算(P2-P5)单列跟进。