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

功能测试报告_汇总表排名页刷新与同比百分数_2026-09-11

一、功能说明

用户反馈《道路运输量汇总表》两个问题:**1. 所有排名表里面的数据没有更新;2. 同比应该是百分数而不是小数**。本轮定位并修复:

1. 排名页数据刷新(问题 1)

  • 现象:汇总大表母版 2026年8月道路运输量汇总表.xlsx 里的 货运量排名 / 货运周转量排名 / 中口径排名 三页是**上一报表期的静态值**(标题写「2026年1-7月 / 2026年7月」,数值也是 7 月),导出 8 月时整页不随数据变化。
  • 处置:导出链路新增 refreshSummaryRankSheets,用程序自己的独立排名表(生成_货运量排名.xlsx / 生成_周转量排名.xlsx / 生成_中口径排名.xlsx,与用户日常核对口径一致)刷新这三页:
  • 数值格搬数值;源侧是公式的(RANK/占比等)按目标块偏移整体平移后写成公式(打开时按汇总表自身数据重算);目标格本身已是公式的(母版 SUM/RANK/占比)保留不动;
  • 块标题随报表期同步(2026年1-7月… → 2026年1-8月…、2026年7月… → 2026年8月…)。

2. 同比列显示成小数(问题 2)

  • 现象:母版把新月份(8 月)的同比列做成了「普通数值 0.00」格式,而 7 月及以前的同比列是 0.00%;回填公式后 8 月同比显示成 -0.0294 这样的小数。
  • 处置:SummaryWorkbookFiller.ensureMonthYoyFormulas 原来只在目标格为空时套用上月同比列样式,改为**无条件沿用上月同比列样式**(0.00%)。

改动文件

  • traffic-audit-server/src/main/java/com/trafficaudit/reportexport/service/ReportExportService.java:新增 refreshSummaryRankSheets / copyRankValues / rankCell / shiftFormula,在 ensureMonthFormulas 之后、applySummaryReferenceLayout 之前调用。
  • traffic-audit-server/src/main/java/com/trafficaudit/reportexport/calc/SummaryWorkbookFiller.java:ensureMonthYoyFormulas 样式沿用。

二、测试环境

  • 后端 http://localhost:8090(start-dev.ps1 启动),导出接口 GET /api/report/export/summaryWorkbook?period=YYYY-MM。
  • 母版:docs/生成汇总大表/2026年8月道路运输量汇总表.xlsx;版式参照:docs/生成汇总大表/生成_道路运输量汇总表.xlsx。
  • 独立排名表底稿:docs/货运/生成_货运量排名.xlsx、docs/货运/生成_周转量排名.xlsx、docs/公路旅客/生成_中口径排名.xlsx。
  • 测试时间:2026-09-11;测试产物:_gen2_2026-08.xlsx、_gen2_2026-07.xlsx、_v2_freight_rank.xlsx、_v2_turnover_rank.xlsx、_v2_mid_rank.xlsx。

三、用例表

3.1 正向用例

编号 输入 预期 实际 结论
TC-1 导出 period=2026-08 HTTP 200,正常产出文件 949,956 字节,23.8 秒返回 通过
TC-2 后端回填日志 有排名页刷新统计、无缺数提示 写入当月值格数=1659,补写当月同比公式格数=600,补写当月合计公式格数=43,**刷新排名页数值格数=711**,对齐列宽列数=422,缺数提示=[] 通过
TC-3 货运量排名块标题 随报表期改为 1-8 月/8 月 A1=2026年1-8月全省分市州累计完成公路货运量情况;A22=2026年8月全省分市州完成公路货运量情况 通过
TC-4 货运周转量排名块标题 同上 A2=…2026年1-8月…;A24=…2026年8月… 通过
TC-5 中口径排名块标题 同上 J1=2026年1-8月全省分市州累计完成道路客运生产情况;J22=2026年8月… 通过
TC-6 标题落盘方式(原始 XML 校验) <is><t> 与显示一致(不能再出现 <v> 新值 + <is> 旧值) xl/worksheets/sheet2.xml:<c r="A1" s="776" t="s"><v>0</v></c>,共享串 0 = 2026年1-8月…(旧文件是 inlineStr,<v>=8月、<is><t>=7月) 通过
TC-7 货运量排名逐格入库抽查(与独立排名表比对) 全块一致 累计块 + 当月块共 454 格逐个比对,0 处不一致 通过
TC-8 货运周转量排名当月块抽查 与独立表一致 武汉 B28=192320.5226(源 B27)、G28=504369.61288609065(源 G27)、E28=0.3334642531154999(源 E27)、J28=-0.021161120884320206(源 J27) 通过
TC-9 货运周转量排名母版公式保留 不写死值,保留 SUM/RANK/占比 全省 B27==SUM(B28:B44);武汉 C28==RANK(B28,B$28:B$44)、D28==B28/B$27 通过
TC-10 中口径排名数值抽查 与独立表一致 K4=2759.8855(源 B4)、O4=152330.9312(源 F4)、K25=349.536(源 L4)、O25=18917.1637(源 P4) 通过
TC-11 中口径排名「增速排名」列 不再是静态怪值,且与页内同比自洽 由静态值(多行同为 1.0)改为 =RANK(M4,M$4:M$20)、=RANK(M25,M$25:M$41) 等自洽公式;缓存值与母版原值一致(L25=5、N25=10、P25=2、R25=5) 通过
TC-12 8 月同比列格式(问题 2) 百分数 0.00% 货运 R5==Q5/AJ5-1 / 0.00%;班线包车、城市客运、公交、出租、网约车、轨道轮渡、中口径明细 8 月同比列(R 列)**全部 0.00%** 通过
TC-13 排名页同比列格式 百分数 0.00% 货运量排名 E4=-0.0763 / 0.00%、D5=0.3207… / 0.00%;货运周转量排名、中口径排名同比列同为 0.00% 通过
TC-14 打开即重算 仍带全量重算标记 <calcPr … fullCalcOnLoad="true"/> 保留 通过

3.2 负向用例

编号 输入 预期 实际 结论
TC-N1 全表扫描「表头含同比 + 数值/公式 + 格式非百分数」的格 不应有新引入的小数同比 8 月件命中 3 格,全部在隐藏页(2025年城市客运量!E13、中口径计算过程!G85/G86),母版同位置同样如此 通过(非本轮引入)
TC-N2 独立排名表源侧同比为空时(库中无 2025 年中口径数据) 不应把 POI 对空值的求值结果(全为 1)搬进汇总表 改为写公式后,该列为 =RANK(…) 公式,按页内同比取值,不再是 17 行全 1 通过
TC-N3 调试日志清理 导出日志不应残留 RANKDBG backend.log 中 RANKDBG 计数 = 0 通过

3.3 历史月回归(2026-07)

编号 输入 预期 实际 结论
TC-R1 导出 period=2026-07 正常产出、当月同比仍指向 2025 年 7 月 941,903 字节;货运 P5==O5/AF5-1 / 0.00% 通过
TC-R2 与改动前 7 月产物(_gen_2026-07.xlsx)逐格 diff 差异仅限被刷新的排名页 仅 货运量排名 51 格、中口径排名 133 格有差异(排名页由静态值改为按数据刷新,属预期);其余 16 页 0 差异 通过
TC-R3 7 月排名页标题 仍为 1-7 月/7 月(按报表期) A1=2026年1-7月…、A22=2026年7月…;中口径 J22=2026年7月… 通过
TC-R4 7 月同比格式 无新增小数同比 全表命中 3 格,均为隐藏页母版原有格 通过

四、发现的问题与处置

  1. 排名页标题改了但 Excel 仍显示旧月份:母版标题单元格是 inlineStr,POI 在 t="inlineStr" 单元格上 setCellValue(String) 只写 <v>、不动 <is><t>,而 Excel/WPS 优先读 <is><t>。处置:写值前先 setBlank() 清掉原单元格再写(落盘为共享串,<is> 不再残留旧文案)。
  2. POI 求值口径偏差:源独立排名表里手工留空的同比会让 RANK 函数求值一律返回 1,直接搬值会把 17 行「增速排名」写成全 1。处置:源侧公式不再搬求值结果,而是按目标块偏移平移成公式写入,再用汇总表自身数据求值缓存。
  3. 中口径排名同比列仍为母版旧值:库中只有 2026-01~08 的客运数据(h2031_enterprise_monthly / city_bus_monthly),没有 2025 定稿数据,独立排名表算不出中口径同比 → 该列按设计保留母版值;等 2025 数据入库后随导出自动刷新。
  4. 静态页待办:城市汇总、城市分市州、中口径分析、道路运输周转量 四页在母版里是整页静态(本轮导出与母版逐格 0 差异),页标题仍写「1-7 月 / 7 月」。因整页数据未数据驱动,本轮**未**只改标题(避免标题 8 月、数据 7 月),留待后续做成数据驱动时一并处理。

五、结论

  • 用户反馈的两个问题均已修复并验证:三张排名页的标题与数值随报表期刷新(货运量排名 454 格逐格比对 0 差异),8 月同比列统一为百分数显示。
  • 2026-08 / 2026-07 双期导出通过,7 月历史月回归差异仅限被刷新的排名页,无副作用。
  • 遗留:中口径同比待 2025 年数据入库;四张静态成品页待数据驱动改造。