3. 报工数据模型设计基础

报工不是一张孤立的“产量登记表”,而是把车间里发生的一次加工活动,拆解成可追溯、可核算、可分析的结构化记录。要让报工数据真正支撑生产进度、成本核算与质量追溯,第一步不是写数据库表,而是先建立概念数据模型:识别核心实体、明确实体属性、理清实体之间的关系与基数。本节围绕报工单、工序任务、人员、设备、物料、工时、产量、质量八类核心实体展开,并给出可直接用于后续逻辑设计的建模方法。

一、先分清“任务”与“报工”两个层次

车间里最常见的建模错误,是把“计划要做的活”和“实际干完的活”混在一张表里。正确的做法是分两层:

  • 工序任务:由生产订单或工单分解而来,描述“某产品在某工序上计划做多少、由谁在何时完成”。它属于计划层,一条任务对应一个工序段,例如“红烧牛肉罐头—灌装封口工序—计划 5000 罐”。
  • 报工单:操作工在实际完工或阶段完工时提交的记录,描述“这一次实际投入了什么、产出了多少、花了多少时间、质量如何”。它属于执行层,一条任务可以对应多张报工单(分批报工、跨班次报工)。

因此二者的关系是一对多:工序任务 1 : N 报工单。这个基数判断直接决定了后续“任务完成进度 = 累计报工数量 / 任务计划数量”的计算方式,也决定了报工单必须携带任务标识作为外键。

二、八类核心实体的职责与关键属性

概念模型阶段不必纠结字段类型,但必须把每个实体的“身份标识”和“业务关键属性”想清楚。以下为示例性设计,实际项目可按企业口径调整:

实体身份标识关键属性(示例)在报工中的角色
工序任务任务号产品编码、工序号、计划数量、计划起止时间、状态报工的对象与数量基准
报工单报工单号报工时间、班次、报工类型(首报/补报/返工)、状态一次报工活动的主记录
人员员工工号姓名、班组、岗位、技能等级操作者与审核者
设备设备编号设备名称、产线、额定产能、状态加工资源与产能核算依据
物料物料编码名称、规格、批次号、计量单位投入与产出物,支撑追溯
工时工时记录号开始时间、结束时间、有效工时、停机时长人工成本与效率分析
产量产量明细号合格数、不合格数、报废数、单位产出计量与良率计算
质量质检记录号检验项目、实测值、判定结论、不合格原因质量判定与追溯

需要特别强调物料的双重身份:在报工中它既可能是“投入物料”(如原料肉、辅料、包装罐),也可能是“产出物料”(成品或半成品)。概念模型里通常用“物料”实体加一个“物料角色”属性(投入/产出)来区分,避免为投入和产出各建一套重复实体。

三、实体关系与基数判断

把八类实体连起来,核心关系可以归纳为:

  • 工序任务 1 : N 报工单——一张任务可分多次报工。
  • 报工单 N : 1 人员——每张报工单有唯一主操作人;若需记录协作,可再加“报工单—人员”的明细关联,形成 N : M。
  • 报工单 N : 1 设备——一次报工通常对应一台主设备;多设备并行加工时用明细表拆分为 N : M。
  • 报工单 1 : N 工时——一张报工单可包含多段工时(如正常生产段、停机段)。
  • 报工单 1 : N 产量——按产品/批次/规格分行记录。
  • 报工单 1 : N 质量——按检验项目分行记录,也可与产量明细关联到具体批次。
  • 报工单 N : M 物料——通过“报工物料明细”关联,并携带投入量或产出量及批次号。

下图给出本节的概念数据模型:以报工单为中心,向上挂接工序任务,向下展开人员、设备、工时、产量、质量与物料明细,并标注了基数。

工序任务 任务号 · 产品 · 工序号 计划数量 · 计划起止 · 状态 报工单 报工单号 · 报工时间 · 班次 报工类型 · 状态 · 审核人 (执行层主记录) 1 N 分批报工 人员 工号 · 姓名 · 班组 岗位 · 技能等级 设备 设备编号 · 名称 产线 · 额定产能 工时 开始/结束时间 有效工时 · 停机时长 产量 合格数 · 不合格数 报废数 · 计量单位 质量 检验项目 · 实测值 判定结论 · 不合格原因 物料 物料编码 · 名称规格 批次号 · 投入/产出角色 N:1 主操作人 N:1 主设备 1:N 多段工时 1:N 产量明细 1:N 质检记录 N:M 物料明细 按批次关联 图例 实体关系与基数 批次级追溯关联

四、从概念模型到可落地的设计要点

概念模型画出来只是第一步,落地时还有三个容易踩坑的地方值得提前处理。

第一,报工单要能“算得清”。产量与工时是两张明细表,而不是报工单上的两个数字字段。原因是一次报工可能包含正常生产段和停机段,也可能同时产出主产品和副产品。把产量、工时拆成明细行,才能支持“按批次核算良率”“按班次统计停机损失”这类分析。示例口径:某灌装工序一张报工单记录合格 4800 罐、不合格 60 罐、报废 20 罐,有效工时 6.5 小时、停机 0.5 小时,则良率 = 4800 / (4800+60+20) ≈ 98.4%,单位时间产出 = 4800 / 6.5 ≈ 738 罐/小时。这些指标全部来自明细行汇总,而不是人工填写。

第二,状态字段要定义清楚。报工单建议设置“草稿—已提交—已审核—已冲销”四态。冲销态用于纠正错报,而不是直接删除记录,这样历史数据可追溯。工序任务则用“未开始—进行中—已完工—已关闭”表达进度,任务完工数量由已审核报工单累计得出,避免手工维护两套数字导致不一致。

第三,物料批次是追溯的锚点。报工物料明细必须记录批次号,并与产量明细的产出批次建立关联。这样当某批次成品出现质量问题时,可以沿“质量记录→产量批次→报工单→投入物料批次”反向定位到原料供应商与操作班组,形成完整的正向与反向追溯链。

建模自检清单:①每张报工单是否唯一归属一个工序任务?②产量、工时、质量是否都拆成了明细行?③物料是否区分了投入与产出角色并记录批次?④报工单状态是否覆盖冲销场景?⑤任务完工数量是否由报工单汇总而非手工填写?五项全部为“是”,概念模型基本可用。

把上述实体与关系固化下来,后续的逻辑模型设计(主键、外键、索引、约束)就有了明确依据,报表口径与接口字段也能保持一致。概念模型的价值不在于画得漂亮,而在于让“一次报工到底记录了什么、能回答哪些问题”在开发之前就被想清楚。