生产管理系统详解:高离散制造 – 生产订单数据库设计表(核心表结构)

设计目标

• 支持"按单生产"与"按任务生产"两种物料需求策略

• 允许同一条生产线在不同订单/任务里使用不同 BOM 版本

• 工序-部件-生产线三维校验:确保"工序需要的部件"与"生产线能加工的部件"匹配

• 工资既支持"按任务数量"又支持"按工序报工数量"

• 所有主数据支持版本号、生效/失效日期,满足未来工艺变更

流程说明

(含报价→订单→任务→工序→部件→BOM→物料需求→工资核算全链路)

数据库ER图

高离散制造 -- 生产订单数据库设计表(核心表结构)

1. 产品主表 product

|----------------|--------------|-----------|-----|---------------|------|
| 字段名 | 类型 | 描述 | 主键 | 外键 | 备注 |
| id | bigint | 主键 | PK | --- | 自增 |
| item_code | varchar(50) | 料号 | --- | --- | 唯一 |
| item_name | varchar(100) | 名称 | --- | --- | --- |
| item_type | enum | 成品/半成品/原料 | --- | --- | --- |
| default_bom_id | bigint | 默认BOM | --- | FK→bom_header | 可空 |
| unit | varchar(10) | 单位 | --- | --- | --- |
| enable_flag | tinyint(1) | 启用标记 | --- | --- | 1=启用 |

2. BOM主表 bom_header

|-------------|-------------|-------|-----|------------|------|
| 字段名 | 类型 | 描述 | 主键 | 外键 | 备注 |
| id | bigint | 主键 | PK | --- | 自增 |
| product_id | bigint | 产品ID | --- | FK→product | --- |
| bom_code | varchar(50) | BOM编码 | --- | --- | 唯一 |
| version | varchar(10) | 版本号 | --- | --- | --- |
| effect_date | date | 生效日期 | --- | --- | --- |
| expire_date | date | 失效日期 | --- | --- | --- |
| is_default | tinyint(1) | 默认标识 | --- | --- | 1=默认 |

3. BOM子件表 bom_item

|----------------|---------------|--------|-----|---------------|-----|
| 字段名 | 类型 | 描述 | 主键 | 外键 | 备注 |
| id | bigint | 主键 | PK | --- | 自增 |
| bom_header_id | bigint | BOM头ID | --- | FK→bom_header | --- |
| parent_item_id | bigint | 父项料号 | --- | FK→product | --- |
| child_item_id | bigint | 子项料号 | --- | FK→product | --- |
| qty | decimal(12,4) | 用量 | --- | --- | --- |
| unit | varchar(10) | 单位 | --- | --- | --- |
| loss_rate | decimal(5,2) | 损耗率(%) | --- | --- | --- |
| op_seq_start | int | 起始工序序号 | --- | --- | --- |
| op_seq_end | int | 结束工序序号 | --- | --- | --- |

4. 生产线表 prod_line

|-------------|-------------|------|-----|-----|------|
| 字段名 | 类型 | 描述 | 主键 | 外键 | 备注 |
| id | bigint | 主键 | PK | --- | 自增 |
| line_code | varchar(20) | 线体代码 | --- | --- | 唯一 |
| line_name | varchar(50) | 线体名称 | --- | --- | --- |
| dept | varchar(50) | 所属车间 | --- | --- | --- |
| enable_flag | tinyint(1) | 启用标记 | --- | --- | 1=启用 |

5. 生产订单表 prod_order

|-----------------|---------------|---------|-----|---------------|-----|
| 字段名 | 类型 | 描述 | 主键 | 外键 | 备注 |
| id | bigint | 主键 | PK | --- | 自增 |
| order_no | varchar(30) | 内部订单号 | --- | --- | 唯一 |
| source_quote_id | bigint | 来源报价ID | --- | FK→quote_main | 可空 |
| customer | varchar(100) | 客户名称 | --- | --- | --- |
| product_id | bigint | 产品ID | --- | FK→product | --- |
| qty_total | decimal(12,2) | 订单数量 | --- | --- | --- |
| delivery_date | date | 交货日期 | --- | --- | --- |
| bom_version | varchar(10) | 使用BOM版本 | --- | --- | --- |
| status | enum | 状态 | --- | --- | 见字典 |
| created_at | datetime | 创建时间 | --- | --- | --- |

6. 生产任务单表 prod_task

|---------------|---------------|----------|-----|---------------|-----|
| 字段名 | 类型 | 描述 | 主键 | 外键 | 备注 |
| id | bigint | 主键 | PK | --- | 自增 |
| prod_order_id | bigint | 所属订单ID | --- | FK→prod_order | --- |
| task_no | varchar(30) | 任务单号 | --- | --- | 唯一 |
| product_name | varchar(100) | 产品名称(冗余) | --- | --- | --- |
| qty | decimal(12,2) | 任务数量 | --- | --- | --- |
| plan_start | date | 计划开工 | --- | --- | --- |
| plan_end | date | 计划完工 | --- | --- | --- |
| status | enum | 状态 | --- | --- | 见字典 |

7. 任务-生产线关系表 task_line

|----------|---------------|-------|-----|--------------|-----|
| 字段名 | 类型 | 描述 | 主键 | 外键 | 备注 |
| id | bigint | 主键 | PK | --- | 自增 |
| task_id | bigint | 任务ID | --- | FK→prod_task | --- |
| line_id | bigint | 生产线ID | --- | FK→prod_line | --- |
| seq | int | 生产顺序 | --- | --- | --- |
| qty_line | decimal(12,2) | 本线数量 | --- | --- | --- |
| status | enum | 状态 | --- | --- | --- |

8. 工序实例表 prod_process

|--------------|--------------|-------|-----|--------------|-----|
| 字段名 | 类型 | 描述 | 主键 | 外键 | 备注 |
| id | bigint | 主键 | PK | --- | 自增 |
| task_line_id | bigint | 任务线ID | --- | FK→task_line | --- |
| process_name | varchar(50) | 工序名称 | --- | --- | --- |
| seq | int | 顺序号 | --- | --- | --- |
| std_time | decimal(8,2) | 标准工时 | --- | --- | 分钟 |
| status | enum | 状态 | --- | --- | --- |

9. 任务部件表 prod_part

|--------------|---------------|--------|-----|--------------|-----|
| 字段名 | 类型 | 描述 | 主键 | 外键 | 备注 |
| id | bigint | 主键 | PK | --- | 自增 |
| task_line_id | bigint | 任务线ID | --- | FK→task_line | --- |
| part_name | varchar(100) | 部件名称 | --- | --- | --- |
| material | varchar(50) | 材质 | --- | --- | --- |
| length | decimal(8,2) | 长度(mm) | --- | --- | --- |
| width | decimal(8,2) | 宽度(mm) | --- | --- | --- |
| thick | decimal(8,2) | 厚度(mm) | --- | --- | --- |
| qty | decimal(10,2) | 数量 | --- | --- | --- |
| unit | varchar(10) | 单位 | --- | --- | --- |

10. 物料需求表 material_requirement

|---------------|---------------|----------|-----|---------------|-----|
| 字段名 | 类型 | 描述 | 主键 | 外键 | 备注 |
| id | bigint | 主键 | PK | --- | 自增 |
| prod_order_id | bigint | 订单ID(可空) | --- | FK→prod_order | --- |
| task_id | bigint | 任务ID(可空) | --- | FK→prod_task | --- |
| line_id | bigint | 生产线ID | --- | FK→prod_line | --- |
| material_id | bigint | 物料ID | --- | FK→product | --- |
| spec | varchar(100) | 规格描述 | --- | --- | --- |
| qty_required | decimal(12,2) | 需求数量 | --- | --- | --- |
| qty_on_hand | decimal(12,2) | 库存数量 | --- | --- | --- |
| qty_ordered | decimal(12,2) | 已采数量 | --- | --- | --- |
| status | enum | 需求状态 | --- | --- | --- |

11. 生产报工表 prod_report

|--------------|---------------|-------|-----|-----------------|-----|
| 字段名 | 类型 | 描述 | 主键 | 外键 | 备注 |
| id | bigint | 主键 | PK | --- | 自增 |
| task_line_id | bigint | 任务线ID | --- | FK→task_line | --- |
| process_id | bigint | 工序ID | --- | FK→prod_process | --- |
| worker_id | bigint | 员工ID | --- | FK→worker | --- |
| qty_good | decimal(12,2) | 合格数 | --- | --- | --- |
| qty_scrap | decimal(12,2) | 废品数 | --- | --- | --- |
| start_time | datetime | 开始时间 | --- | --- | --- |
| end_time | datetime | 结束时间 | --- | --- | --- |
| wage_flag | tinyint(1) | 已结算标记 | --- | --- | 0/1 |

12. 工资计算结果表 wage_calc

|--------------|---------------|-------|-----|-----------------|-----|
| 字段名 | 类型 | 描述 | 主键 | 外键 | 备注 |
| id | bigint | 主键 | PK | --- | 自增 |
| worker_id | bigint | 员工ID | --- | FK→worker | --- |
| task_line_id | bigint | 任务线ID | --- | FK→task_line | 可空 |
| process_id | bigint | 工序ID | --- | FK→prod_process | 可空 |
| qty_basis | decimal(12,2) | 计薪数量 | --- | --- | --- |
| unit_price | decimal(10,4) | 单价 | --- | --- | --- |
| amount | decimal(12,2) | 金额 | --- | --- | --- |
| calc_date | date | 计算日期 | --- | --- | --- |


关键校验与扩展字段(所有表通用)ext_json json --- 用户自定义字段tenant_id bigint --- 多租户revision int --- 乐观锁

13. 工序主数据表 process_master

|------------------|--------------|------------|-----|-----|------|
| 字段名 | 类型 | 描述 | 主键 | 外键 | 备注 |
| id | bigint PK | 主键 | ✔ | --- | 自增 |
| process_code | varchar(30) | 工序编码 | --- | --- | 唯一 |
| process_name | varchar(50) | 工序名称 | --- | --- | --- |
| description | varchar(200) | 描述 | --- | --- | --- |
| default_std_time | decimal(8,2) | 默认标准工时(分钟) | --- | --- | --- |
| enable_flag | tinyint(1) | 启用标记 | --- | --- | 1=启用 |

14. 工序-生产线关系表 process_line_rel

|-------------|------------|-----------------------|-----|-------------------|------|
| 字段名 | 类型 | 描述 | 主键 | 外键 | 备注 |
| id | bigint PK | 主键 | ✔ | --- | 自增 |
| process_id | bigint | 工序ID | --- | FK→process_master | --- |
| line_id | bigint | 生产线ID | --- | FK→prod_line | --- |
| seq | smallint | 在线内顺序 | --- | --- | --- |
| enable_flag | tinyint(1) | 启用标记 | --- | --- | 1=启用 |
| UNIQUE | --- | (process_id, line_id) | --- | --- | 防重复 |

15. 更新后的关系链示意
复制代码
process_master 1 ──< process_line_rel >── prod_lineprod_line 1 ──< task_line >── prod_taskprod_task 1 ──< prod_process >── process_master

• 通过 process_line_rel 保证"工序-生产线"多对多,且在线内有序。

设计说明

主键设计:所有主表和明细表均采用BIGINT类型的自增主键,确保系统扩展性。

单据编号:bill_no字段用于业务单据的唯一标识,建议采用"业务类型前缀+年月+流水号"的生成规则。

状态管理:通过status字段实现工作流控制,不同状态对应不同的操作权限。

时间戳:create_time和update_time自动记录数据创建和修改时间,便于审计追踪。

审批流程:关键业务单据设计审批人和审批时间字段,支持多级审批。

外键关联:通过prod_order_id等字段与生产订单主数据关联,确保数据一致性。

扩展性:字段设计考虑了多币种、多单位、批次管理等企业级需求。

此设计可满足制造业生产管理的基本需求,可根据具体业务场景进行调整和优化。

案例演示:

http://dms.demo.07fly.xyz

开源地址:

https://gitee.com/07fly/07flyadmin

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!

相关推荐
大路谈数字化4 小时前
SAP PP模块中重复制造
sap·制造·重复制造·pp
智能化咨询4 小时前
(151页PPT)大型制造集团十五五产业数字化转型规划方案(附下载方式)
制造
李慕婉学姐4 小时前
Springboot旅游管理系统8cx8xy5m(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·旅游
格林威4 小时前
AOI设备在光伏制造领域的核心应用
人工智能·数码相机·计算机视觉·目标跟踪·视觉检测·制造
国服第二切图仔5 小时前
Rust开发之使用anyhow与thiserror简化错误处理
服务器·数据库·rust
金仓拾光集5 小时前
金仓替代MongoDB:互联网医院聊天脱敏实战
数据库·mongodb·kingbase·kingbasees·数据库平替用金仓·金仓数据库
rexling15 小时前
【MySQL】mysqldump使用方法
数据库·mysql·adb
火星资讯5 小时前
勇立潮头:优艾智合打造“一脑多态”工业具身智能新范式
科技·microsoft·制造
2503_928411565 小时前
10.30 MySQL数据表操作
数据库·mysql