4. 食品生产订单创建与批次追溯链路设计
订单—批次绑定对象与追溯链路
本案例的核心不是“建一张订单”,而是让订单成为批次关系的锚点:生产订单向上绑定配方/BOM版本与工艺路线,向下绑定原料批次(投料)与成品批次(产出),从而形成可正查、可反查的批次谱系。设计时先明确三个关键对象及其标识规则,再落库建单。
- 生产订单:订单号
MO-20250612-001,产品为“低温酸奶 100g×12杯”,计划数量 5000 杯,绑定 BOM 版本BOM-YOG-V3(生效日期 2025-05-01)与工艺路线RT-YOG-02。 - 原料批次:生鲜乳
RM-MILK-250610-A、白砂糖RM-SUG-250528-B、发酵菌种RM-CUL-250605-C,均带供应商与入库检验单号。 - 成品批次:
FG-YOG-250612-01,与订单一一对应,出库时携带该批次号。
批次关联关系必须落在“订单—投料明细—产出明细”三张关系上,而不是只写在订单备注里。下面用一张链路图说明正向(原料→成品)与反向(成品→原料)两条查询路径如何共用同一组关联记录。
建单与批次绑定的关键字段
在 MES 中创建订单时,批次绑定不是事后补录,而是随订单下达一并生成。以下为订单主表与两张明细表的关键字段设计(示例值可直接作为建单输入):
| 表/对象 | 关键字段 | 示例值 | 作用 |
|---|---|---|---|
| 生产订单 | order_no / product_code / plan_qty / bom_version / route_code / status | MO-20250612-001 / YOG-100X12 / 5000 / BOM-YOG-V3 / RT-YOG-02 / 已下达 | 追溯锚点,锁定配方与工艺版本 |
| 投料明细 | order_no / material_code / material_batch / qty / issue_time | MO-20250612-001 / RM-MILK / RM-MILK-250610-A / 4200 kg / 2025-06-12 08:20 | 建立原料批次→订单的正向关系 |
| 产出明细 | order_no / product_batch / qty / produce_time | MO-20250612-001 / FG-YOG-250612-01 / 4980 杯 / 2025-06-12 16:40 | 建立订单→成品批次的反向入口 |
注意:投料明细中的 material_batch 必须来自入库批次主数据,不能手工自由输入,否则反向追溯会断链。成品批次号建议按“产品前缀+生产日期+当日流水”生成,保证唯一且可读。
追溯链路的查询实现
正向与反向查询本质是同一组关联表的不同连接方向。以下 SQL 以示例表名给出两条路径,可直接在测试库中执行验证(表名与字段按实际 MES 数据模型调整):
-- 正向:给定原料批次,查它流向了哪些订单和成品批次
SELECT i.order_no, o.product_code, p.product_batch, i.qty AS issue_qty, p.qty AS output_qty
FROM issue_detail i
JOIN prod_order o ON o.order_no = i.order_no
JOIN output_detail p ON p.order_no = i.order_no
WHERE i.material_batch = 'RM-MILK-250610-A';
-- 反向:给定成品批次,查它由哪些原料批次生产
SELECT p.product_batch, i.material_code, i.material_batch, i.qty
FROM output_detail p
JOIN issue_detail i ON i.order_no = p.order_no
WHERE p.product_batch = 'FG-YOG-250612-01'
ORDER BY i.material_code;
两条查询都应返回订单 MO-20250612-001。正向结果中成品批次应为 FG-YOG-250612-01;反向结果应包含三条原料批次记录。若任一方向缺失记录,说明投料或产出明细未完整落库,需回到建单环节补录。
可查询性验证清单
建单完成后,按以下四项做闭环验证,全部通过才算批次关联关系可用:
- 唯一性:同一成品批次号在产出明细中只出现一次,且只对应一个订单号。
- 完整性:反向查询返回的原料批次数量等于该订单实际投料种类数(本例为 3 种)。
- 一致性:正向与反向查询得到的订单号、批次号集合完全一致,无孤立记录。
- 数量合理性:投料合计与 BOM 标准用量的偏差在工艺允许范围内(示例中按 BOM 用量核算,偏差需人工确认,不作为自动判定结果)。
常见断链原因:① 投料时手工输入批次号而非选择入库批次;② 成品入库未回写产出明细;③ 订单变更后未同步更新投料明细。任一处缺失都会导致反向追溯查不到原料来源,食品召回场景下后果严重,建单后必须执行上述验证。