4. 物料主数据与批次主数据治理
谱系追溯能否成立,取决于主数据是否把“同一个东西”和“同一批东西”定义清楚。物料主数据回答“这是什么”,批次主数据回答“这是哪一批、从哪来、现在什么状态、还能不能用”。两者治理不到位,追溯链会在最基础的环节断裂:同一物料被建成多个编码,供应商批次与内部批次无法对应,有效期口径不一致,质量状态没有统一取值,最终导致召回范围无法收敛。
物料分类:先定追溯粒度,再定编码
物料分类不是简单的目录整理,而是决定追溯粒度的前置决策。建议按“是否影响产品质量、是否需要按批追溯、是否可互换”三个维度划分:
- 关键追溯物料:原料、活性成分、直接接触产品的包材。必须启用批次管理,强制记录供应商批次、有效期、质量状态。
- 一般批次物料:辅料、内包材。启用批次管理,但供应商批次映射可简化。
- 非批次物料:设备备件、办公耗材。不启用批次,但需保留领用记录。
分类结果直接写入物料主数据的“追溯策略”字段,例如 TRACE_LEVEL = FULL / BATCH / NONE。同一物料在不同工厂若追溯要求不同,应通过工厂级视图覆盖,而不是新建物料编码。物料编码建议采用“分类码+顺序码”结构,避免把供应商、批次信息编进物料号——供应商和批次是批次主数据的职责,混入物料号会导致一物多码。
批次属性:批次主数据的最小字段集
批次主数据至少应包含以下属性,缺一不可:
| 属性 | 说明 | 示例 |
|---|---|---|
| 内部批次号 | 企业内部唯一,由系统按规则生成 | B20250612-001 |
| 物料编码 | 关联物料主数据 | RM-00123 |
| 供应商批次号 | 供应商出厂批次,用于反向追溯 | LOT-2025-0608A |
| 生产日期 | 供应商或内部生产日期 | 2025-06-08 |
| 有效期至 | 按物料保质期规则计算 | 2026-06-07 |
| 质量状态 | 待检/合格/不合格/冻结/退货 | 合格 |
| 来源类型 | 采购/生产/退货/调拨 | 采购 |
其中“内部批次号”与“供应商批次号”的映射是本节最关键的治理点。一个供应商批次可能分多次到货,对应多个内部批次;一个内部批次也可能由多个供应商批次混合投料。因此映射关系必须是多对多,且每次收货都要在批次主数据中登记映射记录,而不是只写在收货单备注里。
有效期与质量状态:动态字段的治理规则
有效期不是静态属性。同一批次在存储条件变化、复验、分装后,有效期可能调整。治理规则应明确:
- 有效期默认按“生产日期+保质期”计算,保质期来自物料主数据。
- 复验期与有效期分开管理:复验期到期触发质量复验,有效期到期触发禁用。
- 质量状态变更必须留痕,记录变更人、时间、原因、依据的检验单号。
- 状态为“待检”的批次不得被生产领用;“冻结”批次不得出库,但可查询。
供应商批次与内部批次映射:追溯链的接缝
映射关系建议单独建表,而不是塞进批次主表。表结构可设计为:
batch_mapping (
internal_batch_no VARCHAR(32), -- 内部批次号
supplier_batch_no VARCHAR(64), -- 供应商批次号
supplier_code VARCHAR(16), -- 供应商编码
material_code VARCHAR(32), -- 物料编码
receive_qty DECIMAL(18,4), -- 本次收货数量
receive_date DATE, -- 收货日期
mapping_type VARCHAR(16) -- 一对一/一对多/多对一
)
当发生质量异常需要反向追溯时,查询路径为:内部批次号 → batch_mapping → 供应商批次号 → 供应商发货记录 → 同批次其他收货方。若映射缺失,追溯只能停在内部批次,无法定位供应商责任批次。
治理落地的三个检查点
第一,收货环节:收货时必须同时录入供应商批次号和系统生成的内部批次号,映射表同步写入。若供应商批次缺失,应拒绝收货或标记为“待补录”,不得跳过。
第二,状态变更环节:质量状态只能通过检验单或质量事件驱动变更,禁止手工直接改状态。每次变更写入审计日志,保留原状态、新状态、操作人、时间、依据单号。
第三,有效期巡检:每日定时任务扫描批次主数据,对“距有效期不足30天”的批次发出预警,对“已过有效期”的批次自动置为“冻结”并禁止出库。预警阈值可按物料分类差异化配置,例如关键追溯物料提前60天预警。
物料主数据与批次主数据的治理不是一次性建库,而是持续校验的过程。分类决定追溯粒度,批次属性决定追溯精度,有效期和质量状态决定追溯的时效与可用性,供应商批次与内部批次映射决定追溯链能否闭合。四者缺一,谱系追溯就只是内部台账,无法延伸到供应链上游。