462 lines
17 KiB
Markdown
462 lines
17 KiB
Markdown
# 生产计划模块 - 数据模型
|
|
|
|
> 本文档定义生产计划模块的数据库表结构、实体关系和视图设计。
|
|
|
|
---
|
|
|
|
## 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)
|
|
|
|
```sql
|
|
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)
|
|
|
|
```sql
|
|
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)
|
|
|
|
```sql
|
|
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` (车间档案)
|