refs
用户 zhizhijie <zhizhijie@users.noreply.gitee.com>
星期五, 九月 18, 2026 15:06 +0800
提交者 zhizhijie <zhizhijie@users.noreply.gitee.com>
星期五, 九月 18, 2026 15:06 +0800
提交427cb62b464b3c16748890848f31b9dcf812169b
目录 a54be6b7ef0c5c0c22e3250ff3f5001cbd1d6de5 目录 | zip | gz
parent 53c6f66db6352373f1fe5171dfe42ed0d716141a 查看 | 对比
feat(导入): 网约车订单报告支持 Word 2003 XML(WordML)+格式嗅探与友好提示

问题(用户报障):《湖北网络预约出租汽车2025年09月分析报告.docx》放到桌面后
导入一直失败。定位:该文件不是 docx,而是 Word 2003 XML(WordML 平铺 XML)
被改名成 .docx(3.1MB 纯 XML,非 zip 包),POI 的 XWPFDocument 只能读 OPC 包,
直接抛 "File is not a zip file"。监管平台/同事间流转的报告常是这种格式。

改动(DataImportService.java):
- importWycOrderReport() 入口按文件头嗅探格式后分派:
PK→docx;<w:wordDocument + wordml→新增 WordML DOM 解析路径;
D0CF11E0→明确提示「.doc 请另存为 docx」;其它→「无法识别」;
- 新增 isWordPackage():zip 但无 word/document.xml(如 xlsx 改名)给中文提示,
不再抛 XMLBeans 英文堆栈;
- 新增 parseXmlSafely():DOM 解析关闭外部实体/DTD,防 XXE;
- 表格匹配抽成与格式无关的 matchWycOrderTable(),docx 与 WordML 两条路径
共用同一套表头识别 / 17 市州取值 / 合计行逻辑,避免口径分叉;
- 报表期识别抽成 periodOfParagraphs(),两种格式共用。

验证:8 条用例全部通过(4 正向 / 3 负向 / 1 边界)。2025-09 WordML 报告导入成功,
订单合计 17,652,159、17 市州;抽查武汉 8,076,610 / 黄石 676,644 / 十堰 1,048,593 /
恩施 804,736 / 林区 1,424 与报告附件1 逐项一致;pin 从 wyc_total_monthly 同期复制。
真 docx(2026-08)重导幂等无变化。

附带效果:用户已补齐 2026-01~06 / 2025-01 / 2025-10~12 订单,加上本次 2025-09,
2025-01~12 + 2026-01~08 订单全部齐全;中口径维度 4(城际城乡网约车)1~6 月由
「无源」变为「可算」,中口径排名件与明细件累计口径自动归一(均 31528.0606)。
重跑 8 月导出回归:报表期内不一致 0、与汇总大表「中口径明细」页 704 对格 0 差异。

文档:新增《功能测试报告_网约车订单报告WordML兼容导入_2026-09-18.md》,
并更新《工作日结_2026-09-18.md》。
2个文件已修改
1个文件已添加
277 ■■■■■ 已修改文件
docs/功能测试报告/功能测试报告_网约车订单报告WordML兼容导入_2026-09-18.md 72 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
docs/工作日结/工作日结_2026-09-18.md 30 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
traffic-audit-server/src/main/java/com/trafficaudit/dataimport/service/DataImportService.java 175 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史