← Back to skills
extension
Category: Data & AnalyticsNo API key required

mes-data-quality-audit

MES 生产工单数据质量审计——当工单状态/在产数量/入库数量对不上、或"显示在生产中却已全部入库"时,用四层交叉验证(工单头/工序/序列号/过程日志)定位是真实矛盾还是聚合回写缺口(幻影在产)。触发词:工单数据不对、在产数量异常、已入库但工序没完工、三账不同步、MES数据对账、幻影在产、工单状态矛盾、回写缺口。

personAuthor: user_91acba48hubcommunity

MES 生产工单数据质量审计

适用场景

  • 工单查询返回"正在生产 N 台",但实物/库存显示已全入库
  • 工序表完工数量与底层扫描日志数量不符
  • 需要判断"数据真矛盾"还是"汇总层回写缺口"

核心方法论:四层交叉验证

不要只信工单头的汇总字段。按以下层级逐层下钻,定位缺口在哪一层:

| 层级 | 典型表(按实际库调整) | 看什么 | |---|---|---| | ① 工单头 | <工单头表> | 工单状态、计划数量、完工数量、入库数量、结案日期 | | ② 工序 | <工序表> | 每道工序的 计划/开工/完工数量 + 工序状态 | | ③ 序列号 | <序列号主表> | 按状态分布 COUNT,确认实物归属性 | | ④ 过程日志 | <开工日志表> / <完工日志表> / <报工日志表> | 逐序列号的 开工→完工→报工 是否闭环 |

视图常是底层表的 UNION(如 <过程日志视图> = <开工日志表> ∪ <完工日志表>),视图本身可能只有开工字段,完工数量要去 <完工日志表> 底表取 <完工数量字段>。

诊断决策树

  1. 先抓 ④ 底层日志:按 (<工单号字段> + <工序号字段>) 统计去重序列号数、<完工数量字段> 合计 / <报工数量字段> 合计。
  2. 与 ② 工序表 <工序完工数量字段> 比对:
    • 若 底层去重序列号数 == 底层完工合计 == 计划数,但 ② <工序完工数量字段> 偏小 → 聚合回写缺口(roll-up gap):底层全做完,只是汇总字段没刷新。这是"幻影在产"的根因。
    • 若底层日志本身就少 → 是真实漏扫/漏报工,需补录。
  3. 与 ① 工单头比对:工单状态是否"完工"但结案日期仍空(生产动作结束 ≠ 关单)。
  4. 与 ③ 序列号比对:数量是否对得上(注意序列号表可能工序号/工序状态为空,仅工单层标记完工)。

「幻影在产」判定规则(可固化进查询工具)

底层完工/报工日志 去重序列号数  >  <工序表>.<工序完工数量字段>
   → 判定:聚合回写缺失 (差值) 台,真实已全完工,显示"正在生产"为幻影 WIP

同时检查工序 <转序标志字段> 是否未转序——未转序会让工序停在"进行中",即便实物已完工。

差集核对(定位缺口)

-- 扫了完工但没报工的序列号
SELECT DISTINCT <序列号字段> FROM <完工日志表>
WHERE <工单号字段>=@order AND <工序号字段>=@seq
EXCEPT
SELECT DISTINCT <序列号字段> FROM <报工日志表>
WHERE <工单号字段>=@order AND <工序号字段>=@seq

若差集为空且三表去重数一致,则底层全齐,缺口只在汇总字段(单值,无法反推具体哪台漏)。

关键注意

  • 只读账号常无 VIEW DEFINITION,读不到存储过程定义体;分析 SP 内部回写逻辑需要用户贴 CREATE 代码。
  • 聚合字段(如 <工序完工数量字段> 是单值)无法反推"具体哪台漏",只能判断"整体丢了 N 台"。
  • 数据修复属 MES 写操作,需先在测试库验证,不可直接动生产库。
  • 质量风险要区分:单据未闭环(仅影响 MES 关单)vs 实物质量风险(不合格品流入)。后者需核查实物去向。

输出模板(给用户)

  • 结论先行:数据是否自洽 / 缺口在哪一层
  • 四层数值对照表
  • 根因排序(按工厂实际可能性)
  • 质量风险提示(区分"单据未闭环"与"实物质量风险")
  • 修复建议(测试库先验)