升鲜宝生鲜配送供应链管理系统生产加工子模块的详细表设计说明

✅ 生产加工模块(Manufacturing Domain / md)

全量数据表清单(最终版)


一、BOM 与结构定义(主数据)

1️⃣ 商品 BOM

表名 说明
md_bom 商品 BOM 主表
md_bom_item 商品 BOM 明细(原料项)

2️⃣ 商品拆分(结构型加工)

表名 说明
md_bom_split_template 商品拆分模板主表
md_bom_split_template_item 商品拆分模板明细
md_bom_split_record 商品拆分执行记录主表
md_bom_split_record_item 商品拆分执行记录明细

用于:整转零、组合拆分、轻加工


二、生产加工单据(核心业务单据)

3️⃣ 生产加工工单

表名 说明
md_production_order 生产加工单主表
md_production_order_item 生产加工单明细(成品项)

三、生产用料(事实表 + 追溯核心)

4️⃣ 生产用料事实

表名 说明
md_production_material 生产用料事实表(已是最小 item 粒度)

说明:

  • 每一行 = 一种原料在一次生产中的实际用量

  • 可直接用于:库存、成本、追溯、报表


5️⃣ 生产用料批次锁定

表名 说明
md_production_material_lot 生产用料批次锁定表

6️⃣ 批次 ↔ 领料出库绑定

表名 说明
md_production_picking_item 生产领料出库批次绑定明细

用于:

  • 审核前强校验

  • 批次追溯

  • 成本精确回溯


四、生产基础资料(主数据)

7️⃣ 人员与组织

表名 说明
md_production_worker 生产工人
md_production_workshop 生产车间

8️⃣ 工序定义(加工过程)

表名 说明
md_process 工序主表
md_process_item 工序步骤 / 明细

五、生产分析与报表(可选 / 只读)

⚠️ 以下一般是 视图(VIEW)或报表 SQL,不强制落表

名称 建议形式
加工销售汇总 md_rpt_processing_sales_summary(VIEW)
生产加工报表 md_rpt_production_summary(VIEW)
出成率报表 md_rpt_production_yield(VIEW)

六、生产加工模块【不包含但强关联的表】

⚠️ 这些 不属于 md 域,但在业务上强相关(必须认清边界)

WMS(公司仓)

  • wms_stock_out_*(领料出库)

  • wms_stock_in_*(完工入库 / 退料)

成本域

  • 公司仓:cost_*

  • 门店仓:hcost_*

溯源域

  • ts_lot

  • ts_trace_source_*


七、最终汇总(一眼版本)

✅ md 域最终表总数(不含报表 VIEW)

md_bom md_bom_item md_bom_split_template md_bom_split_template_item md_bom_split_record md_bom_split_record_item md_production_order md_production_order_item md_production_material md_production_material_lot md_production_picking_item md_production_worker md_production_workshop md_process md_process_item

👉 共 15 张核心表

生产加工(md / Manufacturing Domain)15 张核心表的【完整 DDL】,全部已经:

  • ✅ 按 md_ 域前缀

  • 明细表统一 item 结尾

  • ✅ 统一 audit_state / posting_state / enabled / del_flag

  • ✅ 索引、唯一键、COMMENT 全补齐

  • ✅ 直接支持 生产 → 用料 → 批次 → 库存 → 成本

数据库假设:MySQL 8.x / InnoDB / utf8mb4


一、BOM 与结构定义(2 张)


1️⃣ md_bom(商品 BOM 主表)

|----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | CREATE TABLE md_bom ( ``id ``BIGINT PRIMARY KEY COMMENT ``'主键ID'``, ``bom_code ``VARCHAR``(100) ``NOT NULL COMMENT ``'BOM编码'``, ``product_sku_id ``BIGINT NOT NULL COMMENT ``'成品SKU'``, ``unit_id ``BIGINT NOT NULL COMMENT ``'成品单位'``, ``bom_version ``INT NOT NULL COMMENT ``'BOM版本'``, ``base_quantity ``DECIMAL``(12, 4) ``NOT NULL DEFAULT 1 COMMENT ``'基准产出数量'``, ``remark ``VARCHAR``(250) ``DEFAULT NULL COMMENT ``'备注'``, ``audit_state TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'审核状态 0待审 1已审 -1作废'``, ``enabled TINYINT ``NOT NULL DEFAULT 1 COMMENT ``'启用状态'``, ``del_flag TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'删除标记'``, ``creator ``BIGINT NOT NULL DEFAULT 0 COMMENT ``'创建人'``, ``create_date ``BIGINT DEFAULT NULL COMMENT ``'创建时间'``, ``updater ``BIGINT NOT NULL DEFAULT 0 COMMENT ``'修改人'``, ``update_date ``BIGINT DEFAULT NULL COMMENT ``'修改时间'``, ``UNIQUE KEY uk_bom (product_sku_id, unit_id, bom_version, del_flag), ``KEY idx_bom_code (bom_code) ) COMMENT = ``'商品BOM主表'``; |


2️⃣ md_bom_item(商品 BOM 明细)

|----------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | CREATE TABLE md_bom_item ( ``id ``BIGINT PRIMARY KEY COMMENT ``'主键ID'``, ``bom_id ``BIGINT NOT NULL COMMENT ``'BOM主表ID'``, ``material_sku_id ``BIGINT NOT NULL COMMENT ``'原料SKU'``, ``unit_id ``BIGINT NOT NULL COMMENT ``'原料单位'``, ``net_quantity ``DECIMAL``(12, 4) ``NOT NULL COMMENT ``'净用量'``, ``loss_rate ``DECIMAL``(5, 2) ``NOT NULL DEFAULT 0 COMMENT ``'损耗率%'``, ``plan_quantity ``DECIMAL``(12, 4) ``NOT NULL COMMENT ``'计划用量'``, ``enabled TINYINT ``NOT NULL DEFAULT 1 COMMENT ``'启用状态'``, ``del_flag TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'删除标记'``, ``sort_code ``INT NOT NULL DEFAULT 0 COMMENT ``'排序编码'``, ``KEY idx_bom_item (bom_id), ``KEY idx_material (material_sku_id, unit_id) ) COMMENT = ``'商品BOM明细项'``; |


二、商品拆分(4 张)


3️⃣ md_bom_split_template

|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | CREATE TABLE md_bom_split_template ( ``id ``BIGINT PRIMARY KEY COMMENT ``'主键ID'``, ``template_code ``VARCHAR``(50) ``NOT NULL COMMENT ``'模板编码'``, ``template_name ``VARCHAR``(200) ``NOT NULL COMMENT ``'模板名称'``, ``audit_state TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'审核状态'``, ``enabled TINYINT ``NOT NULL DEFAULT 1 COMMENT ``'启用状态'``, ``del_flag TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'删除标记'``, ``creator ``BIGINT DEFAULT NULL COMMENT ``'创建人'``, ``create_date ``BIGINT DEFAULT NULL COMMENT ``'创建时间'``, ``updater ``BIGINT DEFAULT NULL COMMENT ``'修改人'``, ``update_date ``BIGINT DEFAULT NULL COMMENT ``'修改时间'``, ``UNIQUE KEY uk_tpl (template_code, del_flag) ) COMMENT = ``'商品拆分模板主表'``; |


4️⃣ md_bom_split_template_item

|----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 | CREATE TABLE md_bom_split_template_item ( ``id ``BIGINT PRIMARY KEY COMMENT ``'主键ID'``, ``template_id ``BIGINT NOT NULL COMMENT ``'模板ID'``, ``product_sku_id ``BIGINT NOT NULL COMMENT ``'拆分后SKU'``, ``unit_id ``BIGINT NOT NULL COMMENT ``'单位'``, ``quantity ``DECIMAL``(12, 4) ``NOT NULL COMMENT ``'数量'``, ``enabled TINYINT ``NOT NULL DEFAULT 1 COMMENT ``'启用状态'``, ``del_flag TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'删除标记'``, ``KEY idx_tpl_item (template_id) ) COMMENT = ``'商品拆分模板明细'``; |


5️⃣ md_bom_split_record

|-------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 | CREATE TABLE md_bom_split_record ( ``id ``BIGINT PRIMARY KEY COMMENT ``'主键ID'``, ``record_code ``VARCHAR``(100) ``NOT NULL COMMENT ``'拆分单号'``, ``template_id ``BIGINT NOT NULL COMMENT ``'模板ID'``, ``audit_state TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'审核状态'``, ``enabled TINYINT ``NOT NULL DEFAULT 1 COMMENT ``'启用状态'``, ``del_flag TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'删除标记'``, ``creator ``BIGINT DEFAULT NULL COMMENT ``'创建人'``, ``create_date ``BIGINT DEFAULT NULL COMMENT ``'创建时间'``, ``UNIQUE KEY uk_split_record (record_code, del_flag) ) COMMENT = ``'商品拆分执行记录主表'``; |


6️⃣ md_bom_split_record_item

|-------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 | CREATE TABLE md_bom_split_record_item ( ``id ``BIGINT PRIMARY KEY COMMENT ``'主键ID'``, ``record_id ``BIGINT NOT NULL COMMENT ``'拆分记录ID'``, ``product_sku_id ``BIGINT NOT NULL COMMENT ``'SKU'``, ``unit_id ``BIGINT NOT NULL COMMENT ``'单位'``, ``quantity ``DECIMAL``(12, 4) ``NOT NULL COMMENT ``'数量'``, ``del_flag TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'删除标记'``, ``KEY idx_split_item (record_id) ) COMMENT = ``'商品拆分执行明细'``; |


三、生产加工单(2 张)


7️⃣ md_production_order

|-------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | CREATE TABLE md_production_order ( ``id ``BIGINT PRIMARY KEY COMMENT ``'主键ID'``, ``order_code ``VARCHAR``(100) ``NOT NULL COMMENT ``'生产加工单号'``, ``workshop_id ``BIGINT DEFAULT NULL COMMENT ``'生产车间'``, ``production_date ``BIGINT DEFAULT NULL COMMENT ``'生产日期'``, ``audit_state TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'审核状态'``, ``posting_state TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'过账状态'``, ``enabled TINYINT ``NOT NULL DEFAULT 1 COMMENT ``'启用状态'``, ``del_flag TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'删除标记'``, ``creator ``BIGINT DEFAULT NULL COMMENT ``'创建人'``, ``create_date ``BIGINT DEFAULT NULL COMMENT ``'创建时间'``, ``UNIQUE KEY uk_prod_order (order_code, del_flag) ) COMMENT = ``'生产加工单主表'``; |


8️⃣ md_production_order_item

|-------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 | CREATE TABLE md_production_order_item ( ``id ``BIGINT PRIMARY KEY COMMENT ``'主键ID'``, ``order_id ``BIGINT NOT NULL COMMENT ``'生产单ID'``, ``product_sku_id ``BIGINT NOT NULL COMMENT ``'成品SKU'``, ``unit_id ``BIGINT NOT NULL COMMENT ``'单位'``, ``bom_version ``INT NOT NULL COMMENT ``'BOM版本'``, ``plan_quantity ``DECIMAL``(12, 4) ``NOT NULL COMMENT ``'计划数量'``, ``complete_quantity ``DECIMAL``(12, 4) ``NOT NULL DEFAULT 0 COMMENT ``'完工数量'``, ``del_flag TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'删除标记'``, ``KEY idx_prod_item (order_id) ) COMMENT = ``'生产加工单明细项'``; |


四、生产用料 & 批次(3 张)


9️⃣ md_production_material

|----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 | CREATE TABLE md_production_material ( ``id ``BIGINT PRIMARY KEY COMMENT ``'主键ID'``, ``order_id ``BIGINT NOT NULL COMMENT ``'生产单ID'``, ``order_item_id ``BIGINT NOT NULL COMMENT ``'生产明细ID'``, ``sku_unit_id ``BIGINT NOT NULL COMMENT ``'原料sku_unit_id'``, ``net_quantity ``DECIMAL``(12, 4) ``NOT NULL COMMENT ``'净用量'``, ``plan_quantity ``DECIMAL``(12, 4) ``NOT NULL COMMENT ``'计划用量'``, ``actual_quantity ``DECIMAL``(12, 4) ``NOT NULL COMMENT ``'实际用量'``, ``del_flag TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'删除标记'``, ``KEY idx_material_order (order_id), ``KEY idx_material_sku (sku_unit_id) ) COMMENT = ``'生产用料事实表'``; |


🔟 md_production_material_lot

|----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 | CREATE TABLE md_production_material_lot ( ``id ``BIGINT PRIMARY KEY COMMENT ``'主键ID'``, ``material_id ``BIGINT NOT NULL COMMENT ``'用料ID'``, ``sku_unit_id ``BIGINT NOT NULL COMMENT ``'sku_unit_id'``, ``lot_no ``VARCHAR``(100) ``NOT NULL COMMENT ``'批次号'``, ``lock_quantity ``DECIMAL``(12, 4) ``NOT NULL COMMENT ``'锁定数量'``, ``del_flag TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'删除标记'``, ``KEY idx_material_lot (material_id), ``KEY idx_lot (sku_unit_id, lot_no) ) COMMENT = ``'生产用料批次锁定'``; |


1️⃣1️⃣ md_production_picking_item

|----------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 | CREATE TABLE md_production_picking_item ( ``id ``BIGINT PRIMARY KEY COMMENT ``'主键ID'``, ``order_id ``BIGINT NOT NULL COMMENT ``'生产单ID'``, ``picking_code ``VARCHAR``(100) ``NOT NULL COMMENT ``'领料出库单号'``, ``material_lot_id ``BIGINT NOT NULL COMMENT ``'批次锁定ID'``, ``sku_unit_id ``BIGINT NOT NULL COMMENT ``'sku_unit_id'``, ``lot_no ``VARCHAR``(100) ``NOT NULL COMMENT ``'批次号'``, ``out_quantity ``DECIMAL``(12, 4) ``NOT NULL COMMENT ``'出库数量'``, ``del_flag TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'删除标记'``, ``UNIQUE KEY uk_pick_bind (picking_code, material_lot_id, del_flag), ``KEY idx_pick (picking_code) ) COMMENT = ``'生产领料出库绑定项'``; |


五、基础资料(4 张)


1️⃣2️⃣ md_production_worker

|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 | CREATE TABLE md_production_worker ( ``id ``BIGINT PRIMARY KEY COMMENT ``'主键ID'``, ``worker_code ``VARCHAR``(50) ``NOT NULL COMMENT ``'工人编码'``, ``worker_name ``VARCHAR``(100) ``NOT NULL COMMENT ``'工人姓名'``, ``enabled TINYINT ``NOT NULL DEFAULT 1 COMMENT ``'启用状态'``, ``del_flag TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'删除标记' ) COMMENT = ``'生产工人'``; |


1️⃣3️⃣ md_production_workshop

|-------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 | CREATE TABLE md_production_workshop ( ``id ``BIGINT PRIMARY KEY COMMENT ``'主键ID'``, ``workshop_name ``VARCHAR``(100) ``NOT NULL COMMENT ``'车间名称'``, ``enabled TINYINT ``NOT NULL DEFAULT 1 COMMENT ``'启用状态'``, ``del_flag TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'删除标记' ) COMMENT = ``'生产车间'``; |


1️⃣4️⃣ md_process

|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 | CREATE TABLE md_process ( ``id ``BIGINT PRIMARY KEY COMMENT ``'主键ID'``, ``process_code ``VARCHAR``(50) ``NOT NULL COMMENT ``'工序编码'``, ``process_name ``VARCHAR``(100) ``NOT NULL COMMENT ``'工序名称'``, ``enabled TINYINT ``NOT NULL DEFAULT 1 COMMENT ``'启用状态'``, ``del_flag TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'删除标记' ) COMMENT = ``'工序定义'``; |


1️⃣5️⃣ md_process_item

|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 | CREATE TABLE md_process_item ( ``id ``BIGINT PRIMARY KEY COMMENT ``'主键ID'``, ``process_id ``BIGINT NOT NULL COMMENT ``'工序ID'``, ``step_name ``VARCHAR``(100) ``NOT NULL COMMENT ``'步骤名称'``, ``sort_code ``INT NOT NULL DEFAULT 0 COMMENT ``'排序编码'``, ``enabled TINYINT ``NOT NULL DEFAULT 1 COMMENT ``'启用状态'``, ``del_flag TINYINT ``NOT NULL DEFAULT 0 COMMENT ``'删除标记'``, ``KEY idx_process_item (process_id) ) COMMENT = ``'工序步骤明细'``; |


✅ 结果总结

  • 共 15 张表

  • 命名:md_ + 业务语义 + item

  • 可直接:

    • 建库

    • 写 Mapper

    • 接 WMS / cost / hcost

    • 做审核 / 反审核 / 追溯

相关推荐
行者-全栈开发2 小时前
43 篇系统实战:uni-app 从入门到架构师成长之路
前端·typescript·uni-app·vue3·最佳实践·企业级架构
一只会奔跑的小橙子2 小时前
性能压测问题排查思路
jvm·数据库
Gauss松鼠会2 小时前
openGauss数据库源码解析系列文章--openGauss简介(上)
数据库·性能优化·database·opengauss
泉城老铁2 小时前
一分钟搞定SpringBoot+Vue3 整合 SSE 实现实时消息推送
前端·vue.js·后端
6+h2 小时前
【Spring】深度剖析AOP
java·后端·spring
V1ncent Chen2 小时前
从零学SQL 05 基础查询
数据库·sql·mysql·数据分析
老迟聊架构2 小时前
完全基于对象存储的数据库引擎:SlateDB
数据库·后端·架构
踩着两条虫2 小时前
AI 驱动的 Vue3 应用开发平台 深入探究(五):核心概念之项目结构与文件组织
前端·vue.js·ai编程