Files
my-mom-system/prd/生产计划-数据模型.md
panchengyong c28ada5050 commit content
2026-03-06 02:02:59 +08:00

17 KiB

生产计划模块 - 数据模型

本文档定义生产计划模块的数据库表结构、实体关系和视图设计。


1. 实体关系图 (ER Diagram)

┌─────────────────┐      1:N       ┌─────────────────┐
│   so_order      │◄─────────────►│   mp_plan       │
│  (销售订单)     │                │  (生产计划单)   │
└─────────────────┘                └────────┬────────┘
                                            │ 1:N
                                            ▼
                                   ┌─────────────────┐
                                   │  mp_plan_line   │
                                   │ (生产计划明细)  │
                                   └────────┬────────┘
                                            │
            ┌───────────────────────────────┼───────────────────────────────┐
            │                               │                               │
            ▼ 1:N                          ▼ 1:N                           ▼ 1:N
┌─────────────────┐              ┌─────────────────┐              ┌─────────────────┐
│    mp_mbom      │              │  mp_purchase    │              │   mp_task       │
│  (物料清单)     │              │  (采购计划单)   │              │  (生产任务单)   │
└────────┬────────┘              └────────┬────────┘              └─────────────────┘
         │ 1:N                            │ 1:N
         ▼                                ▼
┌─────────────────┐              ┌─────────────────┐
│  mp_mbom_line   │              │ mp_purchase_line│
│ (物料清单明细)  │              │ (采购计划明细)  │
└─────────────────┘              └─────────────────┘

关联表:
┌─────────────────┐
│    md_item      │ ◄──── 生产计划、物料清单、采购计划关联
│    (物料档案)   │
└─────────────────┘

┌─────────────────┐
│    md_bom       │ ◄──── 生产计划关联BOM
│   (BOM档案)     │
└─────────────────┘

2. 生产计划单表 (mp_plan)

API 路径: /mp/plan/order

2.1 主表结构

字段名 类型 长度 允许空 默认值 说明
planId bigint - N - 计划ID (主键)
planCode varchar 32 N - 计划单编码
planDate date - N - 计划日期
status varchar 20 N 'DRAFT' 单据状态
businessStatus varchar 20 N 'NORMAL' 业务状态
businessType varchar 20 N - 业务类型
workType int - N 0 工作类型(0生产计划/1零部件计划/2零部件订单)
salesOrderId bigint - Y - 销售订单ID
salesOrderCode varchar 32 Y - 销售订单编码
salesUserId bigint - Y - 销售员ID
salesUserName varchar 50 Y - 销售员名称
deliveryDate date - Y - 订单交期
bomId bigint - Y - BOM ID
bomVersion varchar 20 Y - BOM版本号
bomDesc varchar 200 Y - BOM版本说明
totalQuantity decimal 18,4 Y 0 生产总量
remark varchar 500 Y - 备注
operatorId bigint - Y - 操作员ID
operatorName varchar 50 Y - 操作员名称
approverId bigint - Y - 审核员ID
approverName varchar 50 Y - 审核员名称
approveDate datetime - Y - 审核日期
delFlag char 1 N '0' 删除标志
createBy varchar 64 Y - 创建者
createTime datetime - Y - 创建时间
updateBy varchar 64 Y - 更新者
updateTime datetime - Y - 更新时间
tenantId varchar 20 N - 租户ID

2.2 明细表结构 (mp_plan_line)

字段名 类型 长度 允许空 默认值 说明
lineId bigint - N - 明细ID (主键)
planId bigint - N - 计划ID (外键)
planCode varchar 32 N - 计划单编码
lineNo int - N - 行号
salesLineId bigint - Y - 销售订单明细ID
trackCode varchar 32 Y - 跟单编号
itemId bigint - N - 物料ID
itemCode varchar 32 N - 物料编码
itemName varchar 100 N - 物料名称
specification varchar 200 Y - 型号规格
unitId bigint - Y - 计量单位ID
unitName varchar 20 Y - 计量单位
quantity decimal 18,4 N 0 生产数量
qualityReq varchar 200 Y - 质量要求
remark varchar 200 Y - 备注
delFlag char 1 N '0' 删除标志
createTime datetime - Y - 创建时间
tenantId varchar 20 N - 租户ID

2.3 索引设计

索引名 索引字段 类型 说明
pk_plan planId 主键 主键索引
uk_plan_code planCode, tenantId 唯一 计划单编码唯一
idx_plan_sales salesOrderId 普通 销售订单查询
idx_plan_date planDate 普通 日期查询
idx_plan_status status 普通 状态查询
pk_plan_line lineId 主键 明细主键
idx_line_plan planId 普通 计划单关联
idx_line_item itemId 普通 物料查询

3. 物料清单表 (mp_mbom)

API 路径: /mp/plan/mbom

3.1 主表结构

字段名 类型 长度 允许空 默认值 说明
mbomId bigint - N - 物料清单ID (主键)
mbomCode varchar 32 N - 物料清单编码
mbomDate date - N - 单据日期
status varchar 20 N 'DRAFT' 单据状态
businessType varchar 20 N - 业务类型(BOM运算/生产补料)
issueStatus varchar 20 Y - 下发状态
planId bigint - N - 生产计划ID
planCode varchar 32 N - 生产计划编码
salesOrderId bigint - Y - 销售订单ID
salesOrderCode varchar 32 Y - 销售订单编码
deliveryDate date - Y - 订单交期
itemId bigint - N - 产品物料ID
itemCode varchar 32 N - 产品物料编码
itemName varchar 100 N - 产品物料名称
unitName varchar 20 Y - 计量单位
supplyType varchar 20 Y - 供应方式(采购/自制/委外)
quantity decimal 18,4 N 0 生产数量
workshopId bigint - Y - 下发车间ID
workshopName varchar 50 Y - 下发车间名称
remark varchar 500 Y - 备注
operatorId bigint - Y - 操作员ID
operatorName varchar 50 Y - 操作员名称
approverId bigint - Y - 审核员ID
approverName varchar 50 Y - 审核员名称
approveDate datetime - Y - 审核日期
delFlag char 1 N '0' 删除标志
createBy varchar 64 Y - 创建者
createTime datetime - Y - 创建时间
updateBy varchar 64 Y - 更新者
updateTime datetime - Y - 更新时间
tenantId varchar 20 N - 租户ID

3.2 明细表结构 (mp_mbom_line)

字段名 类型 长度 允许空 默认值 说明
lineId bigint - N - 明细ID (主键)
mbomId bigint - N - 物料清单ID (外键)
mbomCode varchar 32 N - 物料清单编码
lineNo int - N - 行号
parentItemId bigint - Y - 父级物料ID
bomLevel int - Y 1 BOM层级
itemId bigint - N - 子件物料ID
itemCode varchar 32 N - 子件物料编码
itemName varchar 100 N - 子件物料名称
specification varchar 200 Y - 型号规格
unitName varchar 20 Y - 计量单位
baseQty decimal 18,6 Y 1 基本用量
quantity decimal 18,4 N 0 需求数量
lossRate decimal 5,2 Y 0 损耗率%
supplyType varchar 20 Y - 供应方式
remark varchar 200 Y - 备注
delFlag char 1 N '0' 删除标志
createTime datetime - Y - 创建时间
tenantId varchar 20 N - 租户ID

4. 采购计划单表 (mp_purchase)

API 路径: /mp/plan/purchase

4.1 主表结构

字段名 类型 长度 允许空 默认值 说明
purchaseId bigint - N - 采购计划ID (主键)
purchaseCode varchar 32 N - 采购计划编码
purchaseDate date - N - 计划日期
status varchar 20 N 'DRAFT' 单据状态
needType int - N 0 需求方式(0订单用料/1库存备料)
planId bigint - Y - 生产计划ID
planCode varchar 32 Y - 生产计划编码
salesOrderId bigint - Y - 销售订单ID
salesOrderCode varchar 32 Y - 销售订单编码(跟单单号)
deliveryDate date - Y - 订单交期
itemId bigint - N - 物料ID
itemCode varchar 32 N - 物料编码
itemName varchar 100 N - 物料名称
specification varchar 200 Y - 型号规格
unitName varchar 20 Y - 计量单位
purchaseQty decimal 18,4 N 0 采购数量
orderedQty decimal 18,4 Y 0 已订数量
remark varchar 500 Y - 备注
operatorId bigint - Y - 操作员ID
operatorName varchar 50 Y - 操作员名称
approverId bigint - Y - 审核员ID
approverName varchar 50 Y - 审核员名称
approveDate datetime - Y - 审核日期
delFlag char 1 N '0' 删除标志
createBy varchar 64 Y - 创建者
createTime datetime - Y - 创建时间
updateBy varchar 64 Y - 更新者
updateTime datetime - Y - 更新时间
tenantId varchar 20 N - 租户ID

5. 零部件订单表 (mp_parts)

API 路径: /mp/plan/order/parts

5.1 主表结构

字段名 类型 长度 允许空 默认值 说明
partsId bigint - N - 零部件订单ID (主键)
partsCode varchar 32 N - 零部件订单编码
partsDate date - N - 单据日期
status varchar 20 N 'DRAFT' 单据状态
itemId bigint - N - 零部件物料ID
itemCode varchar 32 N - 零部件物料编码
itemName varchar 100 N - 零部件物料名称
specification varchar 200 Y - 型号规格
drawingNo varchar 50 Y - 图纸号
unitName varchar 20 Y - 计量单位
quantity decimal 18,4 N 0 订单数量
planQty decimal 18,4 Y 0 计划数量
completedQty decimal 18,4 Y 0 完成数量
remark varchar 500 Y - 备注
operatorId bigint - Y - 操作员ID
operatorName varchar 50 Y - 操作员名称
approverId bigint - Y - 审核员ID
approverName varchar 50 Y - 审核员名称
approveDate datetime - Y - 审核日期
delFlag char 1 N '0' 删除标志
createBy varchar 64 Y - 创建者
createTime datetime - Y - 创建时间
updateBy varchar 64 Y - 更新者
updateTime datetime - Y - 更新时间
tenantId varchar 20 N - 租户ID

6. 视图设计

6.1 生产计划明细视图 (v_mp_plan_detail)

CREATE VIEW v_mp_plan_detail AS
SELECT 
    l.lineId,
    l.planId,
    p.planCode,
    p.planDate,
    p.status,
    p.workType,
    p.salesOrderCode,
    p.salesUserName,
    p.deliveryDate,
    l.trackCode,
    l.itemId,
    l.itemCode,
    l.itemName,
    l.specification,
    l.unitName,
    l.quantity,
    p.tenantId
FROM mp_plan_line l
INNER JOIN mp_plan p ON l.planId = p.planId
WHERE l.delFlag = '0' AND p.delFlag = '0';

6.2 采购计划执行视图 (v_mp_purchase_exec)

CREATE VIEW v_mp_purchase_exec AS
SELECT 
    p.purchaseId,
    p.purchaseCode,
    p.purchaseDate,
    p.status,
    p.needType,
    p.salesOrderCode,
    p.deliveryDate,
    p.itemId,
    p.itemCode,
    p.itemName,
    p.purchaseQty,
    p.orderedQty,
    (p.purchaseQty - IFNULL(p.orderedQty, 0)) AS unorderedQty,
    i.itemTypeCode,
    i.itemTypeName,
    p.tenantId
FROM mp_purchase p
LEFT JOIN md_item i ON p.itemId = i.itemId
WHERE p.delFlag = '0';

6.3 采购计划汇总视图 (v_mp_purchase_summary)

CREATE VIEW v_mp_purchase_summary AS
SELECT 
    i.itemTypeCode AS majorType,
    i.itemTypeName AS majorTypeName,
    i.itemSubTypeCode AS minorType,
    i.itemSubTypeName AS minorTypeName,
    p.itemId,
    p.itemCode,
    p.itemName,
    SUM(p.purchaseQty) AS totalPurchaseQty,
    SUM(IFNULL(p.orderedQty, 0)) AS totalOrderedQty,
    SUM(p.purchaseQty - IFNULL(p.orderedQty, 0)) AS totalUnorderedQty,
    p.tenantId
FROM mp_purchase p
LEFT JOIN md_item i ON p.itemId = i.itemId
WHERE p.delFlag = '0' AND p.status = 'APPROVED'
GROUP BY i.itemTypeCode, i.itemTypeName, i.itemSubTypeCode, i.itemSubTypeName, 
         p.itemId, p.itemCode, p.itemName, p.tenantId;

7. 状态枚举定义

7.1 单据状态 (status)

枚举值 中文名 说明
DRAFT 开立 草稿,可编辑
APPROVED 审核 已审核,不可编辑
CLOSED 关闭 已关闭

7.2 业务状态 (businessStatus)

枚举值 中文名 说明
NORMAL 正常 正常执行
PAUSE 暂停 暂停执行
CANCEL 取消 已取消

7.3 下发状态 (issueStatus)

枚举值 中文名 说明
NOT_ISSUED 未下发 未下发到车间
ISSUED 已下发 已下发到车间
COMPLETED 已完成 生产完成

7.4 供应方式 (supplyType)

枚举值 中文名 说明
PURCHASE 采购 外部采购
SELF_MADE 自制 自己生产
OUTSOURCE 委外 委外加工

7.5 业务类型 (businessType)

枚举值 中文名 说明
PRODUCTION_PLAN 生产计划 生产计划单
BOM_CALC BOM运算 BOM运算生成
SUPPLEMENT 生产补料 补料计划

7.6 工作类型 (workType)

枚举值 中文名 说明
0 生产计划单 主生产计划
1 零部件计划单 零部件生产计划
2 零部件订单 零部件加工订单

7.7 需求方式 (needType)

枚举值 中文名 说明
0 订单用料 按订单需求采购
1 库存备料 备库采购

8. API 模块路径对照

业务模块 API前缀 说明
生产计划单 /mp/plan/order 主生产计划
零部件订单 /mp/plan/order/parts 零部件订单
零部件计划单 /mp/plan/order/mach 零部件计划
物料清单 /mp/plan/mbom BOM运算结果
采购计划单 /mp/plan/purchase 订单用料计划
备库计划单 /mp/plan/purchase/bl 库存备料计划
计划执行明细 /mp/plan/detail 执行明细报表
计划执行汇总 /mp/plan/total 执行汇总报表
生产计划需求 /mp/plan/reorder 生产需求报表
采购计划需求 /mp/plan/need 采购需求报表

9. 数据权限说明

9.1 租户隔离

所有表都包含 tenantId 字段,用于多租户数据隔离。

9.2 数据权限范围

权限类型 说明
全部数据 可查看所有数据
部门数据 只能查看本部门数据
部门及以下数据 可查看本部门及下级部门数据
仅本人数据 只能查看自己创建的数据

10. 关联关系说明

10.1 与销售模块关联

  • mp_plan.salesOrderId -> so_order.orderId
  • mp_plan.salesOrderCode -> so_order.orderCode
  • mp_plan_line.salesLineId -> so_order_line.lineId

10.2 与采购模块关联

  • mp_purchase -> po_order (生成采购订单)
  • 采购计划审核后可生成采购订单

10.3 与生产模块关联

  • mp_mbom -> pm_task (生成生产任务单)
  • 物料清单下发后生成生产任务

10.4 与基础数据关联

  • itemId -> md_item.itemId (物料档案)
  • bomId -> md_bom.bomId (BOM档案)
  • workshopId -> wm_workshop.workshopId (车间档案)