1. 追溯链断点定位:批次号在加工环节丢失的排查

问题场景与排查思路

某肉制品加工厂接到下游客户投诉:一批成品(成品批号 FP-240318-A)在追溯系统中只能查到加工日期和生产线,却无法回溯到具体原料批次。原料端记录完整,成品端赋码正常,断点出现在加工环节。目标是把"原料批次 → 投料 → 工单 → 成品赋码"这条链逐段比对,找出批次号在哪一步丢失。

排查的核心方法是三源比对:投料记录(原料批次号应在此出现)、工单记录(应携带批次号向下传递)、成品赋码日志(应写入批次号)。任何一段的批次号字段为空、格式异常或与上游不一致,即为断点候选。下面用一张链路比对图展示三个数据源在四个工序节点上的批次号传递状态,红色断点即定位结果。

批次号传递链路比对:FP-240318-A 追溯断点定位 ① 原料入库 ② 解冻/分割 ③ 腌制滚揉 ④ 灌装/蒸煮 投料记录 工单记录 成品赋码日志 RM-240315-07 批次号 ✓ RM-240315-07 批次号 ✓ RM-240315-07 批次号 ✓ RM-240315-07 批次号 ✓ WO-240318-02 含批次号 ✓ WO-240318-02 含批次号 ✓ WO-240318-02 批次号字段为空 ✗ WO-240318-02 批次号字段为空 ✗ — 未赋码 — 未赋码 — 未赋码 FP-240318-A 批次号缺失 ✗ 断点定位:工序③ 腌制滚揉 工单批次号字段为空,向下游传递中断 导致成品赋码日志无法写入原料批次 批次号正常 批次号缺失/断点 该工序未赋码

三源比对的具体操作

上图把三个数据源按工序节点横向铺开,纵向虚线表示同一工序内投料记录与工单记录的关联。可以看到:投料记录在四个节点都完整携带 RM-240315-07;工单记录在①②节点正常,到③腌制滚揉时批次号字段变为空;成品赋码日志只在④灌装蒸煮产生记录,且批次号缺失。断点因此锁定在工序③。

实际操作中按以下顺序取数比对,避免遗漏:

  1. 取投料记录:按原料批次 RM-240315-07 和日期 2024-03-18 查询投料表,确认该批次在哪些工单中被消耗,记录工单号 WO-240318-02。
  2. 取工单记录:按工单号查询工单明细,逐工序检查 material_batch_no 字段。本例中工序③、④的该字段为 NULL,而工序①②有值。
  3. 取成品赋码日志:按成品批号 FP-240318-A 查询赋码流水,确认赋码时间、设备号、写入的 source_batch_no 字段。本例该字段为空。
  4. 交叉验证:确认工序③的工单批次号为空是"写入时未赋值"还是"写入后被覆盖"。对比工单创建时间与工序③的 MES 过站时间,若创建时为空且过站未补录,则属于采集环节缺失。
比对时优先用批次号做关联键,而不是用时间或工单号。批次号是追溯链的唯一业务主键,时间戳可能因设备时钟偏差产生误匹配,工单号则可能一对多。

断点成因判断与修复建议

定位到工序③后,需要判断批次号丢失的成因,不同成因对应不同修复动作。常见成因有三类:

成因类型判断依据修复建议
采集端未配置批次字段 工序③的扫码枪/MES 终端配置中,投料批次字段未映射到工单表 补配字段映射,对历史工单按投料记录回填批次号
人工过站跳过扫码 工序③过站记录的操作员与设备日志显示手动录入,且批次字段留空 启用批次号必填校验,禁止空值过站;对已跳过工单补录
接口传输丢字段 MES 到追溯系统的接口报文中批次字段存在,但落库为空,检查字段长度或编码 修正接口字段映射与长度限制,重放该工单报文

本例中,工序③的工单创建时批次号即为空,且过站记录显示为手动录入,判断为人工过站跳过扫码 + 采集端未设必填校验。修复分两步:先对 WO-240318-02 按投料记录回填工序③、④的批次号,恢复追溯链;再在 MES 过站界面为批次号字段增加非空校验,从源头阻断同类断点。

回填历史数据前先备份工单表,并用投料记录做唯一数据源,避免用成品批号反推批次号造成二次错误。回填后重新跑一次三源比对,确认四个节点批次号一致才算闭环。

验证闭环

修复后按原路径重新查询:投料记录 RM-240315-07 → 工单 WO-240318-02 四个工序批次号均有值 → 成品赋码日志 FP-240318-A 的 source_batch_no 为 RM-240315-07。四个节点批次号完全一致,追溯链恢复贯通,即验证通过。