# 功能测试报告_网约车订单报告导入_2026-09-11 ## 一、功能说明 支持直接上传部级《网约车行业YYYY年M月运行监测情况分析报告》(.docx),系统自动解析报告正文附件表中的 **17 市州订单数**并写入数据库 `wyc_order_monthly`(F 列订单合计 + G-W 17 市州订单列); 汇总大表「网约车」页取数改为**优先读库**,实现"上传报告 → 汇总表当月网约车数据自动出现"。 改动范围: - 后端 `DataImportService.importWycOrderReport()` / `parseWycOrderReportTables()` / `periodOfDocx()`:解析报告、定位报表期、落库 `wyc_order_monthly`,并在缺失时从 `wyc_total_monthly` 补齐全省 pin(B-E)。 - 后端 `DataImportController`:新增 `POST /api/import/wycOrderReport`(参数 file + period)。 - 后端 `WycSplitCalc.loadMonthlyInputFromDb()`:汇总表取数优先读 `wyc_order_monthly`(库里该期订单全空时回退读 `docs/城市客运/模板_网约车订单及全省总量.xlsx`)。 - 前端 `DataImport.vue`:导入类型新增「网约车订单报告」,模板提示为 `城市客运/模板_网约车订单.docx`,接口 `/import/wycOrderReport`,文件类型限 `.docx/.doc`。 - 清空映射:`wycOrderReport` 关联清空 `WYC_ORDER` 批次;`wycOrder` 与 `wycOrderReport` 互为关联清除。 报表期取值规则:优先取报告标题中的「网约车行业YYYY年M月」,取不到时用页面所选报表期;两者都取不到则报错。 ## 二、测试环境 - 后端:Spring Boot,`http://localhost:8090`(8090 已监听);前端:`http://localhost:8080`。 - 数据库:MySQL 5.7 `127.0.0.1:3308` / `traffic_audit`。 - 登录:admin;测试时间:2026-09-11。 ## 三、用例表 | 编号 | 类型 | 输入 | 预期 | 实际 | 结论 | | --- | --- | --- | --- | --- | --- | | TC-1 | 正向 | 上传 `docs/城市客运/模板_网约车订单.docx`(《网约车行业2026年7月运行监测情况分析报告》),period=2026-07 | 解析成功,报表期取标题的 2026-07,17 市州全部命中 | 返回"报表期 2026-07,订单合计 29,730,791 单,已写入 17 个市州" | 通过 | | TC-2 | 正向 | 同上,检查后端日志 | 记录 period/sum/cities/missing | `WycOrderReport imported: period=2026-07 sum=2.9730791E7 cities=17 missing=[]` | 通过 | | TC-3 | 入库抽查 | docx 附件表「地市名称 / 订单数总数」17 行,逐项与 `wyc_order_monthly` 比对 | 17 市州逐一相等,合计相等 | 武汉 11,183,267;黄石 983,296;十堰 2,155,144;宜昌 3,024,336;襄阳 2,390,572;鄂州 321,348;荆门 942,124;孝感 1,220,812;荆州 1,573,514;黄冈 1,125,829;咸宁 928,460;随州 528,210;恩施 2,166,015;仙桃 528,557;潜江 267,879;天门 387,894;林区 3,534;合计 29,730,791 —— **与 DB 完全一致** | 通过 | | TC-4 | 负向(文件类型错) | 把 `模板_网约车订单及全省总量.xlsx` 传给报告导入接口 | 给出可读提示,不落库 | 返回"导入失败: 无法读取 Word 文档,请上传 .docx 格式的《网约车行业YYYY年M月运行监测情况分析报告》;若上传的其实是 Excel/PDF,请改用对应模板导入。(原始错误:…)" | 通过(含修复,见第四节) | | TC-5 | 负向(内容不符) | 上传 `城市客运数据优化.docx`(非网约车监测报告) | 明确提示未解析到市州订单数 | 返回"导入失败: 未解析到任何市州订单数,请确认上传的是《网约车行业YYYY年M月运行监测情况分析报告》" | 通过 | | TC-6 | 正向(重复导入幂等) | 同一份 7 月报告连续导入两次 | 第二次覆盖同报表期行,不产生重复行 | 仍返回 17 市州;`wyc_order_monthly` 中 `2026-07` 仅 1 行 | 通过 | | TC-7 | 联调 | 报告导入后重新导出 `period=2026-08` 汇总大表 | 网约车页当月列(Q 列)出现数值,全省行为求和公式 | Q 列 17 市州全部有值,Q5 起 4 个全省行为 `=Q9+Q13+…` 求和公式,R 列同比公式 `=Q../AJ..-1`(AJ=2025年8月) | 通过(详见《功能测试报告_汇总大表8月数据回填与版式对齐_2026-09-11.md》) | ## 四、发现的问题与处置 1. **问题(已修复)**:把 Excel/PDF 误传到「网约车订单报告」类型时,接口返回的是 xmlbeans 的英文技术异常(`org.apache.xmlbeans.XmlException: ... is not a valid document`),页面用户无法理解。 **处置**:`DataImportService.importWycOrderReport()` 的解析段统一捕获异常,改写为用户可读提示,并把原始错误以"(原始错误:…)"附在末尾便于排查。修复后 TC-4 复测通过。 2. **需要用户操作的事项**:当前库中 `2026-08` 的**市州订单数**是用 7 月报告改标题的临时副本(`_t_wyc_aug.docx`)导入的,其市州值与 7 月相同;`pin`(B-E,即客运量/周转量口径)取自 `wyc_total_monthly` 的 2026-08 行,是正确的。**请把真实的《网约车行业2026年8月运行监测情况分析报告》重新上传一次**(类型选「网约车订单报告」,报表期选 2026-08),即可覆盖为真实 8 月市州订单数。 ## 五、结论 网约车订单运行监测报告(docx)导入功能可用:正向解析 17 市州订单数准确入库并与源文件逐项一致;文件类型错误、内容不符两类负向场景均能给出明确提示;重复导入幂等;导入后汇总大表可自动取到当月数据。建议将真实 8 月报告重传后再次导出核对。