针对用户反馈的 4 个问题,对《道路运输量汇总表》导出链路做数据驱动回填与版式对齐:
=Q../AJ..-1,AJ 列即 2025 年 8 月;改动范围:
- SummaryWorkbookFiller:fillFreightSheet / fillWycSheet 重写(只回填目标期当月,派生行保持公式);新增 ensureMonthFormulas、ensureMonthYoyFormulas、monthColumnCapacity;
- ReportExportService:导出时调用 ensureMonthFormulas + 新增 applySummaryReferenceLayout(按参照件对齐列宽);
- WycSplitCalc:汇总表网约车取数优先读库。
关键口径:当月值列(0 基)= 2 + 2*(m-1),同比列 = 值列 + 1;同比分母固定为 AJ 列(2025 年 8 月)。
http://localhost:8090,导出接口 GET /api/report/export/summaryWorkbook?period=YYYY-MM。docs/生成汇总大表/2026年8月道路运输量汇总表.xlsx;版式参照:docs/生成汇总大表/生成_道路运输量汇总表.xlsx。| 编号 | 检查项 | 预期 | 实际 | 结论 |
|---|---|---|---|---|
| TC-1 | 导出 2026-08 | HTTP 200,正常产出文件 | 4.6 秒返回,948,735 字节 | 通过 |
| TC-2 | 后端回填日志 | 有写入格数统计、无缺数提示 | 写入当月值格数=1659,补写当月同比公式格数=600,补写当月合计公式格数=43,对齐列宽列数=422,缺数提示=[] | 通过 |
| TC-3 | 货运页全省块(行5-10)Q 列 | 规上/规下货运量与周转量有值,合计行为公式 | 规上货运量 3666.1401、规下 13222.6214、规上周转 570004.4355、规下周转 1700006.166;Q5==Q7+Q9、Q6==Q8+Q10 |
通过 |
| TC-4 | 货运页 Σ17市州 = 全省 | 相等 | Σ17市州货运量 = 16888.7615;全省 Q5 = 3666.1401 + 13222.6214 = 16888.7615 | 通过 |
| TC-5 | 货运页市州派生行 | 不写死值,保持公式 | 武汉 Q14(规上+规下周转量)==Q15+Q16;规上/规下分项为数值 |
通过 |
| TC-6 | 网约车页 | 17 市州当月有值,全省行为公式 | 武汉 Q9=1879.9049…、Q10=13407.6982…;全省 Q5==Q9+Q13+…+Q73;Σ17市州客运量=4997.74、周转量=29166.7 |
通过 |
| TC-7 | 公交页 | 市州当月有值且**不是日期显示** | Q9=3856.83(武汉客运量),单元格格式 0.00;全省 Q5 为求和公式 |
通过 |
| TC-8 | 出租页 | 同上 | Q9=1058.95(武汉客运量),格式 0.00;全省 Q5 为求和公式 |
通过 |
| TC-9 | 班线包车页全省行 | 有全省合计(原缺失) | Q4==Q8+Q10+Q14+…+Q56、Q5==Q9+Q11+…+Q57、Q6/Q7 个体合计亦为公式 |
通过 |
| TC-10 | 轨道、轮渡页全省行 | 有全省合计(原缺失) | 轨道 全省 Q4==SUM(Q6,Q8)、Q5==Q7+Q9;轮渡 全省 Q13==Q15、Q14==Q16 |
通过 |
| TC-11 | 同比公式指向 2025 年 8 月 | R 列分母为 AJ 列 | 各页表头 AJ 列 = 2025年8月;R 列公式形如 =Q9/AJ9-1;AJ 列确有 2025 年 8 月母版数值(如货运 AJ7=3716.1158) |
通过 |
| TC-12 | 打开即重算 | 文件带全量重算标记 | xl/workbook.xml 内 <calcPr calcId="191029" fullCalcOnLoad="true"/>,Excel/WPS 打开即算出全省合计 |
通过 |
| 编号 | 检查项 | 预期 | 实际 | 结论 |
|---|---|---|---|---|
| TC-13 | 全表列宽与《生成_道路运输量汇总表》比对(展开 <col min..max> 范围逐列比对) |
完全一致 | 19 个页签全部比对,**真实差异 0 列** | 通过 |
| TC-14 | 扩列(8 月 Q/R)列宽 | 与参照件 8 月一致 | 货运 P/Q/R = 12.67/10.55/11.67(参照 12.67/10.56/11.67,仅 0.01 浮点舍入);网约车/轨道轮渡 Q/R=13.0/13.0;公交 Q/R=11.89/13.0;出租 Q/R=11.89/13.0;班线包车 Q/R=10.22/9.78 —— 均与参照件相同 | 通过 |
| 编号 | 检查项 | 预期 | 实际 | 结论 |
|---|---|---|---|---|
| TC-15 | 历史月(2026-07)不得被当月回填污染:与 docs/生成汇总大表/_备份_2026年7月道路运输量汇总表_清理前_20260904.xlsx 逐格比对 |
除既定改造外无差异 | 差异共三类:① 426 处浮点末位差(最大相对差 7.26e-15,属 Excel 15 位有效数字截断,无实质差异);② 57 处"文本 vs 等值数字";③ 148 处全部集中在「中口径排名」页 —— 该页左侧陈旧块已于 2026-09-08 按需求整块删除,属**预期变化**。**无回归** | 通过 |
| TC-16 | 缺月提示 | 缺数据的月份有提示 | 2026-08 导出 缺数提示=[] |
通过 |
monthColumnCapacity 原实现只认"含 2026+累计"的表头,而货运页表头是"累计周转量",导致其恒返回默认列数、8 月列永不回填。**处置**:改为「累计列」与「最后一个月份/日期格式月列」取较大值。shiftFormulaColumns 连续组引用被拼成 Q5AJ5O5。**处置**:sb.append(quoteReplacement(...)) → m.appendReplacement(sb, quoteReplacement(...))。ensureMonthYoyFormulas 中 setCellFormula 失败被静默吞掉。**处置**:改为抛出含页签/单元格/原式/目标式的 IllegalStateException,便于定位。setNumeric 对空/日期格式格套用同行 1 月列样式;对已有公式格直接跳过不覆盖。汇总工作簿未找到同期备份母版(_备份_2026年8月…),输出将保持母版现状。原因是 8 月没有"清理前备份母版",而 8 月母版本身已是完整母版,无需从备份还原,故不影响输出(已逐项验证取值正确)。7 月因存在 _备份_2026年7月… 无此告警。applySummaryReferenceLayout 的列数上限保留 min(参照件已用列数, 目标件已用列数 + 4) —— 去掉该上限会让 POI 在大列号(货运页 147 列)上出现指数级卡顿。8 月汇总大表已能由库中数据自动生成:货运规上/规下、网约车、公交、出租、班线包车、轨道轮渡的当月列均已回填,全省合计与分市州合计一致;同比统一取 2025 年 8 月;公交/出租不再显示为日期;班线包车与轨道轮渡的全省数据已补齐(公式,打开即算);全表列宽与用户指定的《生成_道路运输量汇总表》逐列一致(含 8 月扩列宽度)。7 月历史月回归无实质差异。
遗留:请将真实的《网约车行业2026年8月运行监测情况分析报告》重传一次,覆盖当前用 7 月报告临时副本导入的 8 月市州订单数。