生产管理系统详解:生产产品,bom,生产线,生产工序,bom清单,生产订单,生产任务单,他们之间的关系梳理
以下用**“一张图 + 一句话 + 一张表”**把 7 个概念一次性梳理清楚,开发时可直接对照建模、建表、写接口。
1. 一张图说明

2. 一句话总结
“产品”是源头;BOM 是它的配方;生产线和工序是生产能力;生产订单是客户/计划下达的‘需求’;生产任务单是车间可执行的最小单元,任务单要同时绑定:产品+BOM+工序+生产线+数量+交期。
3. 一张对照表(开发落地用)
| 概念 | 本质 | 与上游关系 | 与下游关系 | 关键字段示例 | 备注 | 
| 产品 | 可销售/可库存的成品或半成品 | 企业主数据 | 被BOM、订单引用 | product_id, name, spec | 与物料主数据可同表,用 item_type 区分 | 
| BOM | 产品的“多级配方”头 | 1 产品 : 1 BOM | 被订单、任务单引用 | bom_id, product_id, version | 版本号必须做历史追溯 | 
| BOM清单 | BOM 的明细行 | 1 BOM : N 行子件 | 被领料、核销使用 | bom_item_id, parent_item, child_item, qty, unit | 支持替代料、损耗率 | 
| 生产线 | 物理或逻辑的工作中心 | 独立主数据 | 被工序、任务单引用 | line_id, line_name, work_center_type | 可与设备/班组做 1:N | 
| 生产工序 | 产品在该线要走的工艺步骤 | 1 产品 : N 工序 | 被任务单引用 | operation_id, product_id, line_id, seq_no, std_time | 可维护标准工时、质检模板 | 
| 生产订单 | 计划/客户下达的“总量需求” | 1 产品 : N 订单 | 拆成任务单 | order_id, product_id, qty, due_date | 状态:计划→下达→完工 | 
| 生产任务单 | 车间可执行的最小单元 | 1 订单 : N 任务单 | 领料、报工、质检 | task_id, order_id, product_id, bom_id, operation_id, line_id, qty, status | 与批次号 1:1(高离散场景) | 
4. 实际开发中的 4 条硬规则
- 任务单必须冗余存储当时生效的 BOM 版本,防止中途 BOM 变更导致追溯失真。
- 工序-生产线是 N:N,通过“工艺路线表”解耦:product_id + operation_seq → line_id。
- BOM 变更时,已下发的任务单不自动刷新,只提示“BOM 已更新”人工确认。
- 任务单状态机是整个系统的核心,任何领料、报工、质检、入库都必须围绕 task_id 产生事件。
5. 快速建表示例(MySQL 片段)sql
-- 1. 产品主数据
CREATE TABLE product(product_id VARCHAR(20) PRIMARY KEY, name VARCHAR(100), spec VARCHAR(200));
-- 2. BOM 头
CREATE TABLE bom(bom_id VARCHAR(20) PRIMARY KEY, product_id VARCHAR(20), version INT, is_current TINYINT(1));
-- 3. BOM 明细
CREATE TABLE bom_item(bom_item_id BIGINT AUTO_INCREMENT PRIMARY KEY,bom_id VARCHAR(20),child_item_id VARCHAR(20),qty DECIMAL(18,6),unit VARCHAR(10),loss_rate DECIMAL(5,2),substitute_group SMALLINT
);
-- 4. 生产线
CREATE TABLE production_line(line_id VARCHAR(20) PRIMARY KEY, line_name VARCHAR(50));
-- 5. 工序
CREATE TABLE operation(operation_id VARCHAR(20) PRIMARY KEY,product_id VARCHAR(20),line_id VARCHAR(20),seq_no INT,std_time DECIMAL(8,2)
);
-- 6. 生产订单
CREATE TABLE production_order(order_id VARCHAR(20) PRIMARY KEY,product_id VARCHAR(20),qty DECIMAL(18,6),due_date DATE,status VARCHAR(20)
);
-- 7. 生产任务单
CREATE TABLE production_task(task_id VARCHAR(20) PRIMARY KEY,order_id VARCHAR(20),product_id VARCHAR(20),bom_id VARCHAR(20),operation_id VARCHAR(20),line_id VARCHAR(20),qty DECIMAL(18,6),status VARCHAR(20),batch_no VARCHAR(30)
);把这张表和图贴在需求文档首页,所有人(产品、开发、测试、车间)就能用同一套语言沟通了。
大家可以通下面地址直接演示:
http://dms.demo.07fly.xyz
开源地址:
https://gitee.com/07fly/07flyadmin
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!
