4. 物料清单与工艺路线的数据建模

排产系统能否给出可信的齐套结论,取决于底层数据模型是否把“物料结构、工艺路径、时间与数量约束”表达清楚。BOM 与工艺路线不是两张孤立的表,而是排产约束的两条主干:BOM 决定“一个成品需要哪些物料、各要多少、能否替换”,工艺路线决定“这些物料在哪些工序、什么时间点被消耗、需要提前多久到位”。本节围绕这五个建模要素——BOM 结构、替代料、损耗率、提前期、约束映射——说明如何把它们组织成可被排产引擎直接消费的数据模型。

一、BOM 结构:从层级树到可展开的用量关系

BOM 的常见形态是父子层级结构:父件(成品或半成品)通过“父件编码—子件编码—单位用量—生效/失效版本”四元组描述。排产真正需要的不是树形展示,而是按订单数量展开后的物料需求。展开时要注意三点:一是层级深度,多层 BOM 需要逐层展开到采购件或自制件;二是版本与有效期,同一父件在不同日期可能对应不同 BOM 版本,排产必须按计划开工日选取正确版本;三是虚拟件与跳层,虚拟件本身不产生库存,展开时应穿透到其子件,否则会凭空生成不存在的物料需求。

建模上建议把 BOM 拆成“BOM 头(父件、版本、生效期)”与“BOM 行(子件、用量、损耗、替代组、供应类型)”两张表。用量统一以“每单位父件的子件数量”表达,避免混入批量信息,批量由排产时的订单数量决定。

二、替代料:替代组与优先级

替代料是齐套约束中最容易被忽略、却最影响可行性的部分。建模时不要在主料行上直接挂“替代料1、替代料2”,而应引入替代组:同一替代组内的物料在功能上可互换,组内用优先级和替代比例描述使用顺序。替代组需要标注替代方向(单向/双向)、替代比例(如主料 70%、替代料 30%)以及是否允许混用。排产时,替代逻辑应作为“可用量合并”的规则:当主料不足时,按优先级依次占用替代料库存,并同步更新被替代物料的占用记录,避免同一批替代料被两个订单重复占用。

三、损耗率:把净需求换算成毛需求

损耗率描述“投入多少才能产出所需数量”。建模时区分两类损耗:固定损耗(如每批开机报废 2 件)与比例损耗(如 3% 报废)。毛需求的计算为:毛需求 = 净需求 ÷ (1 − 比例损耗) + 固定损耗,结果向上取整到最小发料单位。损耗率应挂在 BOM 行或工序上,而不是挂在物料主数据上,因为同一物料在不同工序的损耗可能不同。排产展开时,损耗必须逐层传递:下层物料的毛需求会放大上层用量,忽略这一点会导致齐套判断偏乐观。

四、提前期:把时间约束挂到工序与供应上

提前期决定“什么时候必须开始准备”。建模时至少区分三类:采购提前期(下单到入库)、生产提前期(工序排队+加工+等待+转运)、齐套提前期(物料全部到位到可开工的缓冲)。工艺路线中的每道工序应记录标准工时、准备时间、排队时间和转移时间,排产按工序顺序累加得到工序的开工/完工时间窗。采购件则按采购提前期反推最晚下单日。提前期不是固定值,应支持按供应商、批量、季节维护不同值,排产时按实际供应商和批量选取。

五、映射方法:把 BOM 与工艺路线接到排产约束上

映射的核心是建立“物料—工序—时间”的对应关系。做法是:在工艺路线的每道工序上标注投入物料清单(该工序消耗哪些 BOM 行),并标注投入时点(工序开工前齐套、还是工序进行中分批投入)。这样,排产引擎就能把 BOM 展开的物料需求,按工序时点分配到具体的时间窗上,形成“某工序在某时刻需要某物料多少”的约束。替代料和损耗率在这一步参与可用量计算,提前期参与时间窗计算。

BOM 与工艺路线到排产约束的映射模型 BOM 结构(父件→子件) 成品 A(版本 V2) 半成品 B ×2 采购件 C ×4 件 D ×1 件 E ×3 虚拟件穿透 · 版本按开工日选取 工艺路线(工序 + 投入物料) 工序10 下料 投入:件D、件E 工序20 装配 投入:半成品B、件C 工序30 检验包装 投入:包材 每工序记录:准备/加工/排队/转移时间 标注投入时点:开工前齐套 / 分批投入 替代组与损耗率挂在 BOM 行 / 工序上 排产约束输出 物料需求:工序 × 时点 × 数量 可用量:主料 + 替代料合并 时间窗:最晚下单 / 最晚开工 齐套判断:需求 ≤ 可用量 示例:成品 A 数量 100 的物料需求展开(含损耗与替代) 物料 单位用量 损耗率 毛需求计算 替代组 最晚到位 件 D 1 3% 100÷0.97≈104 G1(D/D') 工序10前 件 E 3 2% 300÷0.98≈307 — 工序10前 件 C 4 1% 400÷0.99≈405 G2(C/C') 工序20前 注:以上为教学示例参数,实际损耗率与提前期需按企业历史数据维护

六、建模落地要点与常见陷阱

把上述五要素落到系统里,建议遵循三条原则。第一,单一数据源:BOM 行、替代组、损耗率、工序投入清单应能通过父件编码与工序号关联,避免同一物料在多个地方维护不同用量。第二,时间基准统一:所有提前期以“工作日”或“自然日”明确标注,排产时按工厂日历换算,避免跨周末、跨假期时算错最晚开工日。第三,版本可追溯:BOM 版本、工艺路线版本、替代组生效期都要带时间戳,排产结果应能回溯到当时使用的版本。

常见陷阱包括:把损耗率挂在物料主数据上导致不同工序无法区分;替代料只做“可用量相加”而不做占用互斥,造成重复占用;虚拟件未穿透导致生成虚假需求;提前期用固定值而不随批量变化,导致大批量订单的最晚下单日偏晚。排产前应做一次数据体检:检查 BOM 是否存在环、替代组是否闭环、损耗率是否在 0~1 之间、工序投入物料是否都能在 BOM 中找到对应行。

建模检查清单:① BOM 版本与生效期是否覆盖计划开工日;② 虚拟件是否已穿透;③ 替代组是否标注优先级与替代比例;④ 损耗率是否挂在 BOM 行或工序上;⑤ 提前期是否区分采购/生产/齐套;⑥ 工序投入物料是否与 BOM 行一一对应;⑦ 所有时间是否按工厂日历换算。