4. 食品批次与效期管理对接口的要求
在食品制造场景中,批次与效期不是两个孤立字段,而是贯穿采购、生产、仓储、销售全过程的“主线索”。ERP 侧重计划、成本与业务单据,MES 侧重现场执行与过程控制,两者对批次和效期的理解必须一致,否则就会出现“ERP 里批次已入库、MES 里查不到对应原料”“仓库按 FIFO 发货、质量部门却要求 FEFO”等典型冲突。本节围绕批次号生成规则、效期计算、FIFO/FEFO 策略以及从原料到成品的追溯链路,说明接口应如何设计数据传递。
一、批次号生成规则:谁生成、在哪生成、如何保证唯一
批次号生成首先要明确“权威源”。常见做法是:原料批次由 ERP 采购收货环节生成,生产批次由 MES 在生产工单下达或首件报工时生成,成品批次在包装完工时由 MES 回传 ERP。接口设计的关键是避免双方各自编码导致同一批物料出现两个编号。
一个可落地的编码规则示例(示例规则,非行业强制标准)为:工厂码(2) + 产线/仓库码(2) + 年月日(6) + 班次(1) + 流水号(4),例如 01A12406151 0032 表示 01 工厂、A1 产线、2024 年 6 月 15 日、白班、第 32 批。接口层面需要传递的不只是批次号字符串,还应包括:批次号、物料编码、生成时间、生成系统、批次状态(待检/合格/冻结/报废)。ERP 与 MES 应约定“批次号一经生成不可修改”,状态变更通过接口事件传递,而不是覆盖原记录。
二、效期与保质期的计算:从生产日期到到期日的接口字段
效期计算的核心是“基准日期 + 保质期时长 = 到期日”。基准日期在不同物料上可能不同:原料通常取收货日期或供应商生产日期,成品通常取包装完工日期。接口必须明确每个物料采用哪种基准,否则同一批货在 ERP 和 MES 中会算出不同的到期日。
计算示例(示例参数):某低温酸奶成品保质期为 21 天,包装完工日期为 2024-06-15,则到期日为 2024-07-06;若企业规定“到期日前 3 天进入预警”,则预警日为 2024-07-03。接口中应传递:生产日期、保质期天数、到期日、预警日、剩余保质期(可按天或按小时)。剩余保质期不建议由双方各自计算,而应由权威系统计算后下发,接收方只做展示与校验。
对于保质期以月为单位的物料,需约定月末处理规则,例如“1 月 31 日生产、保质期 1 个月”到期日应取 2 月 28 日或 29 日,接口文档中必须写明该规则,避免 ERP 按自然月、MES 按 30 天计算产生偏差。
三、FIFO 与 FEFO:策略差异如何体现在接口数据中
FIFO(先进先出)按入库时间排序,FEFO(先到期先出)按到期日排序。食品行业对短保、临期敏感物料通常采用 FEFO,对包装材料等可采用 FIFO。接口设计上,MES 在领料或发货时需要向 ERP 请求“可用批次清单”,ERP 返回的批次列表应携带入库时间、到期日、剩余数量、质量状态,由 MES 按策略排序并锁定批次。
关键点在于:策略不应硬编码在某一端。建议在物料主数据中增加“出库策略”字段(FIFO/FEFO),随物料主数据接口同步到 MES;MES 按该字段选择排序键。若 ERP 直接下发“推荐批次”,则接口需返回推荐依据(按入库时间或按到期日),便于现场人员判断异常。
四、批次追溯链路:从原料到成品的数据关联
追溯链路要求接口能够回答两个方向的问题:正向是“这批原料用到了哪些成品批次”,反向是“这个成品批次用了哪些原料批次”。实现上,MES 在领料投料时记录“原料批次—生产批次”的消耗关系,在包装完工时记录“生产批次—成品批次”的产出关系,再通过接口将这两类关联关系同步到 ERP 或企业追溯平台。
接口数据建议采用“关系记录”形式,每条记录包含:上游批次号、下游批次号、关系类型(消耗/产出/返工)、数量、发生时间、工位或工序。示例:原料批次 RM240610A07 消耗 120 kg 投入生产批次 01A12406151 0032,产出成品批次 FG2406150032。当发生质量投诉时,可先由成品批次反查生产批次,再反查原料批次与供应商,从而在数分钟内圈定受影响范围。
五、接口落地时的校验与异常处理
实际对接中,最常见的异常是批次号重复、到期日为空、状态不一致。建议在接口层设置三类校验:一是批次号唯一性校验,接收方发现重复时拒绝写入并返回错误码;二是必填字段校验,生产日期、到期日、保质期至少有一组完整;三是状态机校验,例如“冻结”批次不得出现在可用批次清单中。
下面是一段接口请求与响应的字段示例(示例数据,仅用于说明结构):
{
"batchNo": "01A12406151 0032",
"materialCode": "FG-YOGURT-500",
"productionDate": "2024-06-15",
"shelfLifeDays": 21,
"expiryDate": "2024-07-06",
"warningDate": "2024-07-03",
"batchStatus": "QUALIFIED",
"sourceSystem": "MES",
"parentBatches": [
{"batchNo": "RM240610A07", "relation": "CONSUME", "qty": 120}
]
}
接收方应返回处理结果与错误明细,例如 {"result":"FAIL","code":"BATCH_DUPLICATE","message":"批次号已存在"}。对于批量同步场景,建议采用“逐条校验、部分成功”的策略,并记录失败清单供人工处理,而不是整批回滚导致现场停工。
综上,批次与效期接口设计的核心不是字段多少,而是权威源清晰、计算规则统一、策略字段可配置、追溯关系可累积。把这四点写进接口契约并在联调阶段用真实批次数据验证,才能让 ERP 与 MES 在食品效期管理上真正对齐。