4. 工艺路线的主数据模型设计

工艺路线不是一张“工序清单”,而是一套可被排产、报工、成本核算和质量追溯共同引用的主数据。如果只把工序名称和顺序存成一张平表,后续会遇到三个典型问题:同一产品在不同工厂的路线无法复用;工序与设备、工装、人员的绑定关系散落在多个系统;标准工时与定额口径不一致,导致排产计划和成本核算对不上。因此,主数据建模的核心任务是:把路线拆成有明确职责边界的层次,并让每一层只承载它应该承载的属性。

四层结构:头、段、明细、资源

推荐采用“路线头—工序段—工序明细—资源分配”四层结构。路线头(Routing Header)描述这条路线“是谁的、在哪个工厂、什么版本、什么状态、适用于什么批量区间”。关键字段包括:路线编码、物料编码、工厂/产线、版本号、生效日期、失效日期、状态(草稿/待审/已发布/冻结/作废)、基准批量、计量单位。路线头不直接挂工序,它只负责版本与适用范围。

工序段(Operation Segment)是路线的中间层,用于表达“一段连续加工逻辑”。例如“前处理段”“装配段”“测试包装段”。段的价值在于:当产品工艺相似但局部不同时,可以复用整段;当排产需要按段拆分派工时,段是天然的派工单元。段的关键字段包括:段序号、段名称、段类型(加工/装配/检验/包装)、是否可并行、段间流转方式(连续/批次/推动)。

工序明细(Operation Detail)是真正被执行的工序。每条明细必须挂在某个段下,字段包括:工序号(如 10、20、30,预留 5 或 10 的间隔便于插入)、工序名称、工序类型、是否关键工序、是否首件检验、报工方式(数量/批次/双计量)、前道工序约束。工序号建议按 10 递增,插入新工序时用 15、25,避免大规模重排。

资源分配(Resource Assignment)是工序与资源的绑定关系,通常是一对多:一条工序可分配多台设备、多套工装、多个技能等级的人员。关键字段包括:资源类型(设备/工装/人员/工位)、资源编码、优先级、是否主资源、分配数量、可用性约束。资源分配不直接写在工序明细里,而是独立成子表,这样同一工序在不同工厂可以绑定不同设备,而工序定义本身不变。

工艺路线主数据四层结构模型 路线头 Routing Header 路线编码 · 物料编码 · 工厂/产线 · 版本号 · 生效/失效日期 · 状态 · 基准批量 · 计量单位 职责:版本与适用范围控制,不直接挂工序 工序段 Operation Segment 段序号 · 段名称 · 段类型(加工/装配/检验/包装) · 是否可并行 · 段间流转方式 职责:连续加工逻辑分组,天然派工单元,支持整段复用 工序明细 Operation Detail 工序号(10/20/30) · 工序名称 · 工序类型 · 关键工序标识 · 首件检验 · 报工方式 · 前道约束 职责:定义“做什么、按什么顺序做”,不绑定具体设备 资源分配 Resource Assignment 资源类型(设备/工装/人员/工位) · 资源编码 · 优先级 · 是否主资源 · 分配数量 · 可用性约束 职责:工序与资源的绑定,一对多,支持跨工厂差异化 标准工时与定额 准备工时 T_setup 单件工时 T_unit 批量工时 T_batch 宽放率 Allowance 标准工时 = (T_setup + T_unit × Q) × (1+宽放) 定额类型: · 材料定额(BOM 关联) · 工时定额(排产/成本) · 能耗定额 · 辅料定额 挂载层级: 工时 → 工序明细 定额 → 工序段/路线头 资源速率 → 资源分配

标准工时与定额的挂载位置

标准工时和定额最容易出错的地方是“挂错层”。建议遵循以下规则:工时挂在工序明细上,因为工时是执行层面的属性;定额挂在工序段或路线头上,因为材料定额、能耗定额通常按整段或整条路线核算;资源速率挂在资源分配上,因为同一工序用不同设备加工,单件工时可能不同。

标准工时的计算口径必须统一。常用公式为:标准工时 = (准备工时 + 单件工时 × 批量) × (1 + 宽放率)。其中准备工时是换型、装夹、首检等一次性时间;单件工时是每加工一件的循环时间;宽放率覆盖疲劳、等待、不可避免的停顿。示例:某工序准备工时 20 分钟,单件工时 3.5 分钟,批量 100 件,宽放率 12%,则标准工时 = (20 + 3.5 × 100) × 1.12 = 414.4 分钟。这个值用于排产时,还要除以资源数量得到占用时间。

工时口径一旦发布,不要在同一版本内混用“含宽放”和“不含宽放”。建议在路线头增加“工时口径”字段,取值如“含宽放/不含宽放”,并在报表和接口中显式传递。

结构化建模的落地要点

第一,工序号留间隔。按 10、20、30 编号,插入时用 15、25,避免全量重排。第二,资源分配独立成表,不要用逗号分隔的字符串存设备列表,否则无法做产能校验和冲突检测。第三,版本与状态分离。版本号标识“第几版”,状态标识“当前处于什么生命周期阶段”。已发布版本不可直接修改,变更必须产生新版本。第四,生效日期与失效日期成对使用,排产时按工单日期匹配有效版本,而不是按“最新版本”匹配。

下面给出一个可直接参考的路线头与工序明细字段示例,用于建表或接口设计:

路线头 RoutingHeader
  routing_code       VARCHAR(32)   PK
  material_code      VARCHAR(32)   FK
  plant_code         VARCHAR(16)
  version            VARCHAR(8)
  status             ENUM(draft, pending, released, frozen, obsolete)
  effective_from     DATE
  effective_to       DATE
  base_qty           DECIMAL(12,3)
  uom                VARCHAR(8)
  time_caliber       ENUM(with_allowance, without_allowance)

工序明细 OperationDetail
  routing_code       VARCHAR(32)   FK
  segment_seq        INT           FK
  op_no              INT
  op_name            VARCHAR(64)
  op_type            ENUM(process, assembly, inspection, packing)
  is_key             BOOLEAN
  is_fai             BOOLEAN
  report_mode        ENUM(qty, batch, dual)
  prev_op_no         INT
  setup_time_min     DECIMAL(10,2)
  unit_time_min      DECIMAL(10,2)
  allowance_pct      DECIMAL(5,2)

常见建模错误与判断依据

错误一:把设备直接写在工序明细里。判断依据是——当同一工序需要在 A 线用设备 X、在 B 线用设备 Y 时,是否必须复制两条工序?如果是,说明资源分配没有独立。错误二:工时挂在路线头上。判断依据是——当某道工序的工时调整时,是否影响整条路线的所有工序?如果是,说明挂载层级过粗。错误三:用“最新版本”驱动排产。判断依据是——当工单日期落在旧版本有效期内,排产结果是否与历史实际一致?如果不一致,说明缺少生效日期匹配。

建模完成后,建议用三个检查动作验证结构是否可用:一是取一条已发布路线,尝试只替换某一段内的设备而不改工序定义;二是取一个跨生效日期的工单,验证系统是否按日期选中正确版本;三是取一条含并行段的路线,验证排产时是否按段而非按整条路线分配产能。这三个动作能覆盖版本、资源、段三层的主要风险。