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

工作日结_2026-09-19

一、今天做了什么

1. 持续在规企业(545 家)分市州 1-8 月累计运距同比(桌面交付)

用户 09-18 确认「持续在规企业」= 2025 年 1-8 月与 2026 年 1-8 月均连续 8 个月上报(545 家),
要求把该口径下的分市州累计运距同比算出来并输出到 D:\桌面\货运企业分市州情况\。

  • 数据源:traffic_audit.h2032_enterprise_monthly(2025-01 ~ 2026-08)。
  • 口径:累计平均运距 = 1-8 月累计周转量 ÷ 累计货运量;同比 = 今年累计 ÷ 去年同期累计 − 1;全省 = Σ17 市州。
  • 产出:持续在规企业545家_分市州1-8月累计运距及同比_2026-09-19.xlsx(市州汇总 + 企业明细(545家)),
    脚本 docs\工具\持续在规企业545家累计运距生成.py。

关键结果:

市州 2026年1-8月累计运距(公里) 2025年同期(公里) 同比 市州 2026年1-8月累计运距(公里) 2025年同期(公里) 同比
全省 158.18 153.73 +2.90% 黄冈 138.73 137.16 +1.15%
武汉 159.66 140.71 +13.47% 咸宁 115.25 151.84 −24.10%
黄石 112.67 93.75 +20.18% 随州 187.28 226.03 −17.14%
十堰 321.13 330.78 −2.92% 恩施州 141.78 128.56 +10.28%
宜昌 85.75 83.61 +2.57% 仙桃 — — 不适用
襄阳 279.65 258.01 +8.39% 潜江 407.97 367.73 +10.94%
鄂州 42.38 103.49 −59.05% 天门 61.02 134.33 −54.57%
荆门 305.92 321.00 −4.70% 神农架林区 57.68 113.39 −49.13%
孝感 183.86 198.51 −7.38%
荆州 321.44 337.36 −4.72%

2. 核对用户侧《货运企业分市州情况》表

  • 该表 M/N 两列(持续在规企业)与本次 545 家口径**逐行一致**(M = 去年同期基数,N = 累计同比)。
  • 发现一处口径混用:**全省行 N4 填的是 8 月当月同比 +7.8217%**(157.0007 ÷ 145.6114 − 1),
    其余 17 行均为 1-8 月累计同比;累计口径应为 +2.90%(158.18 ÷ 153.73 − 1),相差 4.93 个百分点。
  • 表头「1-8月平均运距」未标年份,实际为 2025 年值,已在本次交付件中分列两年消除歧义。
  • 该表 O 列「1-8月高速运距同比」与手头高速数据(运距分析报告\运距分析数据汇总.xlsx)算得的全省 −5.94% 不一致
    (市州差异更大),来源与期间待用户确认;按用户要求本轮不处理高速列。

3. 同名企业口径 1-8 月累计货运量/周转量 SQL 查询脚本(本次新增)

用户提问:25 年与 26 年企业数不同,要「企业名称相同」地分别汇总 1-8 月累计的
货物周转量和货运量,SQL 怎么写。

  • 交付脚本:docs\生成汇总大表\同名企业_1-8月累计对比_2026-09-19.sql(6 条查询,全中文注释)。
  • 口径:企业名称取两年 1-8 月的交集,与白天确认的「持续在规企业 545 家」完全一致;
    单位统一 ÷10000 输出「万吨 / 万吨公里」。
  • 结果:
口径 企业数 货运量2025(万吨) 货运量2026(万吨) 货运量同比 周转量2025(万吨公里) 周转量2026(万吨公里) 周转量同比
同名企业 545 30153.14 27752.68 −7.96% 4635340.46 4389882.05 −5.30%
全量 664 / 636 33994.45 31399.82 — 5102518.95 4927161.77 —

同名口径的 2026 年累计数与白天交付件全省行(27752.6820 万吨 / 4389882.0468 万吨公里)完全一致,两条链路互证通过。
全量与同名口径的差额也已算清:2026 年新进 91 家(+3647.14 万吨 / +537279.73 万吨公里),
2025 年退出 119 家(−3841.31 万吨 / −467178.48 万吨公里)。
补充(当日追加):用户接着要「企业明细也导出来」,脚本追加 查询 7 企业明细导出 与 查询 8 合计对总数。

  • 查询 7 的匹配键改用 unified_credit_code,覆盖 546 家(比名称口径多 1 家改名企业:
    91420112558443820B,2025-01~09「湖北三峡富烨绿电供应链有限公司」→ 2025-10 起「湖北长峡富烨绿电供应链有限公司」),
    输出 14 列(信用代码、两年名称、是否改名、市州、两年货运量/周转量及增减同比),按 2026 年货运量降序。
  • 546 家口径合计:2025 年 1-8 月 30162.99 万吨 / 4637038.58 万吨公里;2026 年 27764.88 万吨 / 4392984.81 万吨公里。
  • 脚本内附三种导出方式(命令行 tsv / Navicat 导 xlsx / INTO OUTFILE),命令行方式已实测导出 546 行、中文正常。
  • 待用户确认:对外报送用 545 家(名称交集)还是 546 家(代码交集),确认后再定稿件。
    追加(当日第二轮):核对桌面《规上持续在规企业1-8月运距同比.xlsx》与今日交付件,
    并修复 SQL 脚本的明细精度缺陷。
  • 核对结论:两文件企业名称**545 家逐字符一致**(唯一多出的是改名企业 湖北长峡富烨绿电…);
    但除名称外其余列对不上——运距 540/545 家不一致(最大 8.53 公里)、2025 运距 544/545 不一致、
    同比 540/545 不一致;根因是对方文件用「万吨保留 2 位」再算运距,交付件走全精度(与数据库 0 偏差)。
    另发现市州写法差异:对方写"恩施",交付件写"恩施州"(3 家)。

  • 缺陷修复:原 SQL 的明细查询(查询 2、查询 7)把万吨列 ROUND(...,2),精度只到 100 吨,
    用户拿去算运距会被放大(湖北弘雷 4631 吨 → 0.46 万吨 → 运距虚高 8.53 公里)。
    已改为 4 位小数,并在脚本顶部新增「★ 小数位约定」说明段;整脚本回归通过(21 条用例)。
  • 待确认:对外报送用 545 家还是 546 家口径;以及是否把交付件与对方文件的小数位、恩施写法统一。
  • 追加:按用户要求把明细类查询(查询 2、查询 7)的 ROUND 全部去掉,导出即原始值;
    实测货运量/周转量的原始值最多 4 位小数(636 家企业中 4 位以外还有尾数的为 0 家),
    4 位即全精度。汇总类仍保留 2 位。整脚本回归通过(25 条用例)。
  • 追加验证:查询 2(545 家名称口径)与查询 7(546 家代码口径)**剔除改名企业后逐比特完全相等**
    (545 行企业名单一致,8 个数值列 + 地区代码最大差均为 0)。原因是匹配键一一对应 + 整数求和精确。
    已记为测试报告 T26(累计 26 条用例)。
  • 追加:确认「4 位小数」的适用范围(货运量/周转量 4 位即全精度,754 个对象 0 例外;
    运距、同比不等于全精度),据此把汇总类查询(1/3/5/8)的 14 处小数位统一为 4 位。
    改后脚本输出与 545 家交付件市州汇总逐列对齐(T27~T30,累计 30 条用例)。

    4. 汇总大表「中口径排名」周转量口径统一(用户桌面核出差异 → 定位 → 修复)

用户把人工算的一列(「人工-周转量」)放进桌面《生成_道路运输量汇总表 (1).xlsx》的「中口径排名」页,
问为什么和程序生成的「周转量」对不上(全省 +0.31978 万人公里,各市州 ±0.01~0.08)。

  • 定位:同一本表里两页口径不同。「中口径排名」走 loadMidClassMap() 公交维度——**逐企业行**
    「城际城乡字段 > 0 就用字段值,= 0 才回退 总量 − 城市内」;「中口径明细/分析/道路运输周转量」走台账口径
    smReadLedgerMetrics()——先按月按市州汇总再 总量合计 − 城市内合计。
    源报表三个数各自两位小数舍入,2026 年 1-8 月全省有 72 行企业月报
    城际城乡 ≠ 总量 − 城市内(差 ±0.01),程序采信字段值、人工用差额法,累加即成差异。
    按企业行重算的运输口径差**逐市州与表里差列完全吻合**(孝感 +0.08、宜昌/荆州 +0.05、武汉/黄冈/天门 +0.04…)。
  • 修复:ReportExportService.java 公交维度改为一律「总量 − 城市内」现算(与台账页/明细页/四页合成口径一致)。
  • 验证:重启后端重新生成 2026-08 大表,「中口径排名」周转量与人工/明细口径 17 市州逐格归零;
    客运量、同比、分析页、四页合成页无回归;2025 同比基期 0 行受影响(改后 17 市州差全 0)。
  • 取证脚本与生成件:_qa_busfix*.py、_after_busfix_2026-08.xlsx、_after_midrank.xlsx、_after_midana.xlsx。

二、测试结果摘要

见《功能测试报告_持续在规企业545家分市州累计运距同比_2026-09-19.md》:11 条用例(7 正向 / 3 边界 / 1 负向)全部通过。

  • 明细 545 行求和 = 汇总页全省行(27752.6820 万吨 / 4389882.0468 万吨公里,差异 0);
  • 全省行 = Σ17 市州;17 个市州与用户表格逐行一致;
  • 仙桃市无可比基数、累计货运量为 0 的企业均已防除零处理。
  • 同名企业口径 SQL 脚本已整脚本执行验证(含追加的明细导出查询):17 条用例(11 正向 / 2 负向 / 4 边界)全部通过;
    明细 545 行求和 = 汇总行(差异 0),差异企业闭合校验通过。

  • 中口径排名周转量口径统一:14 条用例(6 正向 / 1 回归组 / 3 边界 / 3 负向回归)全部通过,
    详见《功能测试报告_中口径排名周转量口径统一_2026-09-19.md》;
    全省行仍残留 0.0002 万人公里(=2 人公里,母版 =SUM(O4:O20) 先四舍五入后求和的固有结构)。

    三、遗留问题与待办

  1. 用户表格 O 列高速运距同比的来源/期间待确认(需与 N 同为 1-8 月累计),确认后方可算「运距增速差」。
  2. 09-18 交付的《货运月报_持续在规企业_分市州1-8月累计运距及同比》采用**官方全口径**(同比 +4.54%);
    本表采用**两年持续在规 545 家口径**(同比 +2.90%),两版口径不同但都已注明,供业务按场景选用。
  3. 若该表要随《差异率汇总表》上报,建议加注两种口径的差异原因(规上企业名单变动)。
  4. 「中口径排名」全省行(母版公式 =SUM(O4:O20))与明细全精度求和差 0.0002 万人公里,
    是否改成全精度写值,待用户拍板。
  5. 源报表 city_bus_monthly 中 72 行「城际城乡 ≠ 总量 − 城市内」的两位小数舍入差异,
    已按差额法统一;如后续要与上报口径完全对齐,需回头与填报方确认该字段口径。

四、明天计划

  1. 视用户反馈确定上报口径(545 家 vs 全口径),必要时合并成一版双口径表。
  2. 高速数据来源确认后补算「运距增速差」。