问题:报表生成页面中,「客运站投资明细表」「物流站场投资明细」显示未知报表类型:investPassengerDetail / investLogisticsDetail,无法预览/导出。
根因:不是数据问题(8 月客运/物流投资月报已在库:客运 39 行、物流 128 行)。
上一步只把这两个类型接进了**导出**链路(exportSelected switch、REPORT_FILE_NAMES、前端列表、两个导出接口),
漏了**导出前的就绪校验与预览**链路:
checkExportReady() 的 switch (t) 没有这两个 case → 落到 default:rows=0 + notes.add("未知报表类型:" + t),于是 ready=false;isInvestType(t) 未收录这两个类型 → 预览循环既不归入投资分支,也拿不到月度覆盖与投资摘要。处置:
- checkExportReady() 新增两个 case:按类别(客运站场 / 物流园区)统计 investment_monthly 该期行数,
并校验 docs/投资/模板/ 下对应母版是否存在(缺母版则提示);
- isInvestType() 收录两个类型(月度覆盖 + 问题清单纳入投资分支);
- investPreview() 增加按类别过滤的重载(category != null 时只统计该类别项目),
使两张明细表的摘要不再混入另一类别的合计;原无参重载保留、行为不变。
- 未知类型的兜底报错**保留**(未被削弱)。
| 项 | 值 |
|---|---|
| 日期 | 2026-09-20 10:4x |
| 后端 | Spring Boot 8090(重启加载,Started TrafficAuditApplication 10:49:51) |
| 前端 | Vue 8080(HTTP 200) |
| 数据库 | MySQL 127.0.0.1:3308 traffic_audit |
| 报表期 | 2026-08(mode=month) |
| 接口 | GET /api/report/ready、GET /api/report/preview(types 逗号分隔) |
| 编号 | 用例 | 输入 | 预期 | 实际 | 结论 |
|---|---|---|---|---|---|
| T01 | 就绪校验(正向) | types=investPassengerDetail,investLogisticsDetail |
不再出现「未知报表类型」,ready=true | 两项均 ready=true、note 为空;rows = 39(客运)/ 128(物流) |
✅ 通过 |
| T02 | 预览(正向) | 同上,调 /api/report/preview |
有月度覆盖、摘要与问题清单 | 覆盖 [8]、problems 为空;摘要:客运「39 项目 / 本月 2048.1 / 自年初 38648.16 / 自开始 550929.76 万元」,物流「128 项目 / 本月 90185.9 / 自年初 704107.7 / 自开始 2656354.31 万元」 |
✅ 通过 |
| T03 | 摘要与库内逐项对齐(入库抽查) | 上述摘要 vs SQL 聚合 | 完全一致 | SQL:客运 2048.1 / 38648.16 / 550929.76、物流 90185.9 / 704107.7 / 2656354.31,**逐项一致** |
✅ 通过 |
| T04 | 分类别过滤(正向) | 两张表明细摘要 | 不应混入另一类别数据 | 客运 39 行、物流 128 行,恰好等于 39+128=167(investPlan 等全类别类型仍返回 167),说明明细表已按类别收敛 |
✅ 通过 |
| T05 | 导出回归(正向) | 调 /api/report/export/investPassengerDetail、.../investLogisticsDetail |
仍能正常出表 | 生成 gen_pax_inv.xlsx(29462 字节)、gen_log_inv.xls(134144 字节);此前已验证客运汇总页与定稿 0 差异 |
✅ 通过 |
| T06 | 原有投资类型回归(正向) | types=investPlan,investBillion,investCounty,investFiveYearLogistics |
行为不变 | 四项均 ready=true、rows=167、无 note |
✅ 通过 |
| T07 | 未知类型仍被拦截(负向) | types=foo |
仍提示未知类型且不就绪 | ready=false、rows=0、note=未知报表类型:foo |
✅ 通过 |
| T08 | 缺母版提示(负向·设计覆盖) | 移走母版 | 提示「docs/投资/模板 下缺少《…》」 | 未实测(未临时移动用户母版文件);代码路径与 summaryWorkbook 缺母版判定同构 |
⚠ 未执行 |
| 编号 | 问题 | 根因 | 处置 |
|---|---|---|---|
| P01 | 两张投资明细表在报表生成页显示「未知报表类型:invest*Detail」 | 只接了导出链路,漏了就绪校验 switch 与 isInvestType |
补齐 checkExportReady 两个 case + isInvestType 收录,见上 |
| P02 | 明细表摘要若沿用原 investPreview 会混入另一类别 |
原方法只按报表期聚合全部投资月报 | 新增带 category 的重载,按类别过滤项目 id;原重载保留 |
| P03 | 「合 计」行入库会虚增合计(前一晚修复的连带影响) | 源表合计行被当成项目 | 已修复;本次核对:客运本月完成由含合计行的 2130.1 收敛为 2048.1,与 SQL 逐项一致,无遗留含「计」的项目行 |
7 条用例通过、1 条(缺母版提示)未实测:
报表生成页两张投资明细表的就绪/预览已恢复正常,摘要按类别过滤且与库内 SQL 逐项一致,
导出与其它投资报表类型均无回归,未知类型兜底拦截仍然有效。
此前「未知报表类型」纯属**代码漏配**,与 8 月投资月报是否导入无关 —— 数据一直在库(客运 39 / 物流 128)。