先定位,再动手:复核 8 月生成件,确认三条主线是「一个统一根因 + 一处页范围漏项 + 一处口径缺口」:
公交!C5 = =C9+C13+…)、城市客运/中口径明细市州行 = 跨表引用(城市客运!C9 = =公交!C16+出租!C16+网约车!C16+'轨道、轮渡'!C9)→ 这两页根本不用单独写数据。SummaryWorkbookFiller.ensureMonthFormulas() 页范围只含 6 个台账页,漏 城市客运/中口径明细;而同比公式用的页范围是含的 → 出现"同比列有公式、当月值列空白"。改动:
- SummaryWorkbookFiller.ensureMonthFormulas():页范围改用 isMonthLedgerSheet;派生页新增"结构性常量行按月沿用"(中口径明细 武汉 城际城乡出租/网约车 恒为 0 的 4 格);加 logger;删掉已无用的 isFilledLedgerSheet()。
- ReportExportService.recalcWorkbookFormulas():新增,生成收尾逐格 evaluateFormulaCell 写回缓存值(失败兜底 fullCalcOnLoad=true)。
踩坑记录:POI 4.1 的 FormulaEvaluator.evaluate(Cell) 无副作用(只算不写),第一版白跑(日志"成功 40713 格"但文件无 <v>),必须用 evaluateFormulaCell(Cell)。
docs/问题汇总/),把根因、证据、4 步修法、投资"按项目名称更新/新增插行"现状一并记录。见 docs/功能测试报告/功能测试报告_汇总表公式扩页与重算_2026-09-18.md:8 条正向 + 4 条负向/边界 + 4 项入库抽查,全部通过。
city_bus_monthly 2026-08 各市州求和逐项对齐;武汉 3856.83 / 黄石 879.12 抽查一致)。loadMidClassMap() 缺巡游出租 + 网约车两维,导致独立《生成_公路旅客中口径明细》少 535.83+333.39(1 月)—— 第 3 步。fund_channel);同名不同项目未弹窗。X月客运站投资明细表 / X月物流站场投资明细)生成器未做。loadMidClassMap 补两维),改完对独立中口径明细与汇总表逐项比对。