Files
LabelChange-server/.trae/documents/当天应该换单数差异修复计划.md
2026-06-01 16:30:29 +08:00

2.5 KiB
Raw Permalink Blame History

当天应该换单数统计差异修复计划

差异现象

  • 明细查询统计考核时间为5月1日的订单6951条
  • 汇总SQL统计5月1日的「当天应该换单数」5895条
  • 差值1056条说明汇总逻辑多了限制条件导致少统计

根因分析(最终定位)

用户确认过滤条件调整无效,问题根源在联表逻辑和CTE数据完整性

  1. OrderAssessment关联FormFirstScan问题左关联FormFirstScan时若交接单无扫描记录FirstScanTime_UTC5为null导致考核基准时间计算异常
  2. DistinctDates日期不全AllDates只取了ReceiptDate、LabelRetrievedDate、FirstSuccessDate和扫描日期没有包含考核时间的日期导致考核时间的日期不在DistinctDates里Cross JOIN时丢失匹配
  3. OrderFullInfo数据丢失OrderAssessment和OrderScanStatus左关联时有没有NeutralWaybillNumber匹配不上的情况导致考核时间丢失

修复方案

正确统计规则(用户明确)

「当天应该换单数」= 满足以下所有条件的订单总和:

  1. 有考核时间AssessmentTime IS NOT NULL
  2. 标签率≥80%
  3. 满足以下两个条件任意一个: a. 考核基准日期 = 统计当天日期 b. 考核截止日期 = 统计当天日期

最终统计结果 = 明细中考核基准日期是当天的订单数 + 考核截止日期是当天的订单数

执行步骤

  1. 修复DistinctDates日期不全问题在AllDates中增加考核时间的日期确保所有考核日期都被包含
  2. 调整汇总SQL的「当天应该换单数」统计逻辑
    • 条件改为:(DATE(ofi.AssessmentBaseTime) = dd.日期 OR DATE(ofi.AssessmentTime) = dd.日期)
    • 保留ofi.AssessmentTime IS NOT NULLofi.LabelRate >= 0.8条件
  3. 同步更新明细查询的验证注释,匹配最新逻辑
  4. 验证5月1日数据汇总统计结果 = 明细中考核基准日期是5月1日的count + 考核截止日期是5月1日的count

验证方法

修复后:

  1. 运行汇总SQL获取5月1日的「当天应该换单数」
  2. 运行明细SQL分别统计 a. 考核基准日期是5月1日的订单数WHERE DATE(oa.考核基准时间_UTC5) = '2026-05-01' AND oa.交接单标签率 >= 0.8 AND oa.考核时间 IS NOT NULL b. 考核截止日期是5月1日的订单数WHERE DATE(oa.考核时间) = '2026-05-01' AND oa.交接单标签率 >= 0.8 AND oa.考核时间 IS NOT NULL
  3. 汇总结果 = a + b数据完全一致则修复完成