MES 生产工单数据质量审计
适用场景
- 工单查询返回"正在生产 N 台",但实物/库存显示已全入库
- 工序表完工数量与底层扫描日志数量不符
- 需要判断"数据真矛盾"还是"汇总层回写缺口"
核心方法论:四层交叉验证
不要只信工单头的汇总字段。按以下层级逐层下钻,定位缺口在哪一层:
| 层级 | 典型表(按实际库调整) | 看什么 |
|---|---|---|
| ① 工单头 | <工单头表> | 工单状态、计划数量、完工数量、入库数量、结案日期 |
| ② 工序 | <工序表> | 每道工序的 计划/开工/完工数量 + 工序状态 |
| ③ 序列号 | <序列号主表> | 按状态分布 COUNT,确认实物归属性 |
| ④ 过程日志 | <开工日志表> / <完工日志表> / <报工日志表> | 逐序列号的 开工→完工→报工 是否闭环 |
视图常是底层表的 UNION(如
<过程日志视图>=<开工日志表>∪<完工日志表>),视图本身可能只有开工字段,完工数量要去<完工日志表>底表取<完工数量字段>。
诊断决策树
- 先抓 ④ 底层日志:按
(<工单号字段> + <工序号字段>)统计去重序列号数、<完工数量字段>合计 /<报工数量字段>合计。 - 与 ② 工序表
<工序完工数量字段>比对:- 若 底层去重序列号数 == 底层完工合计 == 计划数,但 ②
<工序完工数量字段>偏小 → 聚合回写缺口(roll-up gap):底层全做完,只是汇总字段没刷新。这是"幻影在产"的根因。 - 若底层日志本身就少 → 是真实漏扫/漏报工,需补录。
- 若 底层去重序列号数 == 底层完工合计 == 计划数,但 ②
- 与 ① 工单头比对:工单状态是否"完工"但结案日期仍空(生产动作结束 ≠ 关单)。
- 与 ③ 序列号比对:数量是否对得上(注意序列号表可能工序号/工序状态为空,仅工单层标记完工)。
「幻影在产」判定规则(可固化进查询工具)
底层完工/报工日志 去重序列号数 > <工序表>.<工序完工数量字段>
→ 判定:聚合回写缺失 (差值) 台,真实已全完工,显示"正在生产"为幻影 WIP
同时检查工序 <转序标志字段> 是否未转序——未转序会让工序停在"进行中",即便实物已完工。
差集核对(定位缺口)
-- 扫了完工但没报工的序列号
SELECT DISTINCT <序列号字段> FROM <完工日志表>
WHERE <工单号字段>=@order AND <工序号字段>=@seq
EXCEPT
SELECT DISTINCT <序列号字段> FROM <报工日志表>
WHERE <工单号字段>=@order AND <工序号字段>=@seq
若差集为空且三表去重数一致,则底层全齐,缺口只在汇总字段(单值,无法反推具体哪台漏)。
关键注意
- 只读账号常无
VIEW DEFINITION,读不到存储过程定义体;分析 SP 内部回写逻辑需要用户贴CREATE代码。 - 聚合字段(如
<工序完工数量字段>是单值)无法反推"具体哪台漏",只能判断"整体丢了 N 台"。 - 数据修复属 MES 写操作,需先在测试库验证,不可直接动生产库。
- 质量风险要区分:单据未闭环(仅影响 MES 关单)vs 实物质量风险(不合格品流入)。后者需核查实物去向。
输出模板(给用户)
- 结论先行:数据是否自洽 / 缺口在哪一层
- 四层数值对照表
- 根因排序(按工厂实际可能性)
- 质量风险提示(区分"单据未闭环"与"实物质量风险")
- 修复建议(测试库先验)
Scan to join WeChat group