设计目标
• 支持“按单生产”与“按任务生产”两种物料需求策略
• 允许同一条生产线在不同订单/任务里使用不同 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等字段与生产订单主数据关联,确保数据一致性。
扩展性:字段设计考虑了多币种、多单位、批次管理等企业级需求。
此设计可满足制造业生产管理的基本需求,可根据具体业务场景进行调整和优化。
案例演示:
开源地址:
https://gitee.com/07fly/07flyadmin
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!
 
                   
                   
                   
                   
                             
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   2万+
					2万+
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            