Files
my-mom-system/prd/采购管理-数据模型.md
panchengyong c28ada5050 commit content
2026-03-06 02:02:59 +08:00

21 KiB

采购管理模块 - 数据模型

本文档定义采购管理模块的数据库表结构、实体关系和视图设计。


1. 实体关系图 (ER Diagram)

┌─────────────────┐      1:N       ┌─────────────────┐
│   po_supplier   │◄─────────────►│    po_order     │
│    (供应商)     │                │   (采购订单)    │
└─────────────────┘                └────────┬────────┘
                                            │ 1:N
                                            ▼
                                   ┌─────────────────┐
                                   │ po_order_line   │
                                   │ (采购订单明细)  │
                                   └────────┬────────┘
                                            │
            ┌───────────────────────────────┼───────────────────────────────┐
            │                               │                               │
            ▼ 1:N                          ▼ 1:N                           ▼ 1:N
┌─────────────────┐              ┌─────────────────┐              ┌─────────────────┐
│   po_checkin    │              │   po_invoice    │              │   po_reject     │
│   (采购到货)    │              │   (采购发票)    │              │   (采购退货)    │
└────────┬────────┘              └────────┬────────┘              └────────┬────────┘
         │ 1:N                            │ 1:N                            │ 1:N
         ▼                                ▼                                ▼
┌─────────────────┐              ┌─────────────────┐              ┌─────────────────┐
│ po_checkin_line │              │ po_invoice_line │              │ po_reject_line  │
│ (到货单明细)    │              │ (发票明细)      │              │ (退货单明细)    │
└─────────────────┘              └─────────────────┘              └─────────────────┘

关联表:
┌─────────────────┐
│    md_item      │ ◄──── 采购订单明细、到货明细、退货明细关联
│    (物料档案)   │
└─────────────────┘

┌─────────────────┐
│   wm_warehouse  │ ◄──── 到货单、入库单关联
│    (仓库)       │
└─────────────────┘

2. 供应商档案表 (po_supplier)

API 路径: /po/supplier

2.1 主表结构

字段名 类型 长度 允许空 默认值 说明
supplierId bigint - N - 供应商ID (主键)
supplierCode varchar 32 N - 供应商编码
supplierName varchar 100 N - 供应商名称
supplierAlias varchar 100 Y - 供应商别名
supplierNick varchar 50 Y - 供应商简称
supplierType varchar 20 Y - 供应商分类
supplierLevel varchar 10 Y 'B' 供应商等级(A/B/C/D)
province varchar 50 Y - 省份
city varchar 50 Y - 城市
address varchar 200 Y - 公司地址
zipCode varchar 10 Y - 邮编
tel varchar 20 Y - 电话
fax varchar 20 Y - 传真
email varchar 100 Y - 邮箱
website varchar 200 Y - 网址
contact1 varchar 50 Y - 业务联系人
contact1Tel varchar 20 Y - 业务联系人电话
contact2 varchar 50 Y - 财务联系人
contact2Tel varchar 20 Y - 财务联系人电话
bankName varchar 100 Y - 开户银行
bankAccount varchar 30 Y - 银行账号
bankAddress varchar 200 Y - 开票地址电话
taxNo varchar 30 Y - 税号
supplyItems varchar 500 Y - 供应料品(逗号分隔)
remark varchar 500 Y - 备注
enableFlag char 1 N 'Y' 启用状态(Y/N)
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 索引设计

索引名 索引字段 类型 说明
pk_supplier supplierId 主键 主键索引
uk_supplier_code supplierCode, tenantId 唯一 供应商编码唯一
idx_supplier_name supplierName 普通 名称查询
idx_supplier_tenant tenantId 普通 租户筛选

3. 采购订单表 (po_order)

API 路径: /po/order

3.1 主表结构

字段名 类型 长度 允许空 默认值 说明
orderId bigint - N - 订单ID (主键)
orderCode varchar 32 N - 订单编码
orderDate date - N - 订单日期
status varchar 20 N 'DRAFT' 单据状态
businessStatus varchar 20 Y 'NORMAL' 业务状态
businessType varchar 20 N - 业务类型
orderType varchar 20 N - 单据类型
materialNeed varchar 20 N - 用料需求
supplierId bigint - Y - 供应商ID
supplierName varchar 100 Y - 供应商名称
deptId bigint - Y - 采购部门ID
deptName varchar 50 Y - 采购部门名称
userId bigint - Y - 采购人员ID
userName varchar 50 Y - 采购人员名称
deliveryDate date - Y - 到货日期
contractNo varchar 50 Y - 合同号
contractFile varchar 500 Y - 合同附件
totalQuantity decimal 18,4 Y 0 总数量
totalAmount decimal 18,2 Y 0 总金额
arrivedQuantity 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

3.2 明细表结构 (po_order_line)

字段名 类型 长度 允许空 默认值 说明
lineId bigint - N - 明细ID (主键)
orderId bigint - N - 订单ID (外键)
orderCode varchar 32 N - 订单编码
lineNo int - N - 行号
trackCode varchar 32 Y - 跟单编号
planCode varchar 32 Y - 计划单号
planLineId bigint - Y - 计划明细ID
itemId bigint - N - 物料ID
itemCode varchar 32 N - 物料编码
itemName varchar 100 N - 物料名称
specification varchar 200 Y - 型号规格
unitId bigint - Y - 计量单位ID
unitName varchar 20 Y - 计量单位
needDate date - Y - 需求日期
quantity decimal 18,4 N 0 采购数量
unitPrice decimal 18,4 Y 0 采购单价
amount decimal 18,2 Y 0 金额
arrivedQuantity decimal 18,4 Y 0 已到货数量
remark varchar 200 Y - 采购说明
delFlag char 1 N '0' 删除标志
createTime datetime - Y - 创建时间
tenantId varchar 20 N - 租户ID

3.3 索引设计

索引名 索引字段 类型 说明
pk_order orderId 主键 主键索引
uk_order_code orderCode, tenantId 唯一 订单编码唯一
idx_order_supplier supplierId 普通 供应商查询
idx_order_date orderDate 普通 日期查询
idx_order_status status 普通 状态查询
pk_order_line lineId 主键 明细主键
idx_line_order orderId 普通 订单关联
idx_line_item itemId 普通 物料查询

4. 采购到货单表 (po_checkin)

API 路径: /po/checkin

4.1 主表结构

字段名 类型 长度 允许空 默认值 说明
checkinId bigint - N - 到货单ID (主键)
checkinCode varchar 32 N - 到货单编码
checkinDate date - N - 到货日期
status varchar 20 N 'DRAFT' 单据状态
businessType varchar 20 N - 业务类型
orderId bigint - Y - 采购订单ID
orderCode varchar 32 Y - 采购订单编码
supplierId bigint - Y - 供应商ID
supplierName varchar 100 Y - 供应商名称
warehouseId bigint - Y - 仓库ID
warehouseName varchar 50 Y - 仓库名称
totalQuantity decimal 18,4 Y 0 总到货数量
stockedQuantity 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

4.2 明细表结构 (po_checkin_line)

字段名 类型 长度 允许空 默认值 说明
lineId bigint - N - 明细ID (主键)
checkinId bigint - N - 到货单ID (外键)
checkinCode varchar 32 N - 到货单编码
lineNo int - N - 行号
orderLineId bigint - Y - 采购订单明细ID
trackCode varchar 32 Y - 跟单编号
itemId bigint - N - 物料ID
itemCode varchar 32 N - 物料编码
itemName varchar 100 N - 物料名称
specification varchar 200 Y - 型号规格
unitName varchar 20 Y - 计量单位
orderQuantity decimal 18,4 Y 0 订单数量
quantity decimal 18,4 N 0 到货数量
stockedQuantity decimal 18,4 Y 0 已入库数量
remark varchar 200 Y - 备注
delFlag char 1 N '0' 删除标志
createTime datetime - Y - 创建时间
tenantId varchar 20 N - 租户ID

5. 采购发票表 (po_invoice)

API 路径: /po/invoice

5.1 主表结构

字段名 类型 长度 允许空 默认值 说明
invoiceId bigint - N - 发票ID (主键)
invoiceCode varchar 32 N - 发票单据编码
invoiceDate date - N - 单据日期
status varchar 20 N 'DRAFT' 单据状态
financeStatus varchar 20 N 'RECORDED' 财务状态
businessType varchar 20 N - 业务类型
supplierId bigint - N - 供应商ID
supplierName varchar 100 N - 供应商名称
invoiceNo varchar 50 Y - 发票号码
invoiceAmount decimal 18,2 N 0 发票金额(不含税)
taxRate decimal 5,2 Y 0 税率(%)
taxAmount decimal 18,2 Y 0 税额
totalAmount decimal 18,2 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.2 明细表结构 (po_invoice_line)

字段名 类型 长度 允许空 默认值 说明
lineId bigint - N - 明细ID (主键)
invoiceId bigint - N - 发票ID (外键)
invoiceCode varchar 32 N - 发票单据编码
lineNo int - N - 行号
checkinLineId bigint - Y - 到货明细ID
itemId bigint - N - 物料ID
itemCode varchar 32 N - 物料编码
itemName varchar 100 N - 物料名称
specification varchar 200 Y - 型号规格
unitName varchar 20 Y - 计量单位
quantity decimal 18,4 N 0 开票数量
unitPrice decimal 18,4 Y 0 单价
amount decimal 18,2 Y 0 金额
taxAmount decimal 18,2 Y 0 税额
remark varchar 200 Y - 备注
delFlag char 1 N '0' 删除标志
createTime datetime - Y - 创建时间
tenantId varchar 20 N - 租户ID

6. 采购退货单表 (po_reject)

API 路径: /po/reject

6.1 主表结构

字段名 类型 长度 允许空 默认值 说明
rejectId bigint - N - 退货单ID (主键)
rejectCode varchar 32 N - 退货单编码
rejectDate date - N - 退货日期
status varchar 20 N 'DRAFT' 单据状态
businessType varchar 20 N - 业务类型
supplierId bigint - N - 供应商ID
supplierName varchar 100 N - 供应商名称
checkinId bigint - Y - 到货单ID
checkinCode varchar 32 Y - 到货单编码
totalQuantity decimal 18,4 Y 0 退货总数量
outQuantity decimal 18,4 Y 0 已出库数量
returnQuantity decimal 18,4 Y 0 补收数量
reason varchar 500 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

6.2 明细表结构 (po_reject_line)

字段名 类型 长度 允许空 默认值 说明
lineId bigint - N - 明细ID (主键)
rejectId bigint - N - 退货单ID (外键)
rejectCode varchar 32 N - 退货单编码
lineNo int - N - 行号
checkinLineId bigint - Y - 到货明细ID
trackCode varchar 32 Y - 跟单编号
itemId bigint - N - 物料ID
itemCode varchar 32 N - 物料编码
itemName varchar 100 N - 物料名称
specification varchar 200 Y - 型号规格
unitName varchar 20 Y - 计量单位
quantity decimal 18,4 N 0 退货数量
outQuantity decimal 18,4 Y 0 已出库数量
returnQuantity decimal 18,4 Y 0 补收数量
reason varchar 200 Y - 退货原因
remark varchar 200 Y - 备注
delFlag char 1 N '0' 删除标志
createTime datetime - Y - 创建时间
tenantId varchar 20 N - 租户ID

7. 视图设计

7.1 采购订单明细视图 (v_po_order_detail)

CREATE VIEW v_po_order_detail AS
SELECT 
    l.lineId,
    l.orderId,
    o.orderCode,
    o.orderDate,
    o.status,
    o.businessType,
    o.materialNeed,
    o.supplierId,
    o.supplierName,
    l.trackCode,
    l.planCode,
    l.itemId,
    l.itemCode,
    l.itemName,
    l.specification,
    l.unitName,
    l.needDate,
    l.quantity AS orderQuantity,
    l.unitPrice,
    l.amount,
    l.arrivedQuantity,
    (l.quantity - IFNULL(l.arrivedQuantity, 0)) AS pendingQuantity,
    o.tenantId
FROM po_order_line l
INNER JOIN po_order o ON l.orderId = o.orderId
WHERE l.delFlag = '0' AND o.delFlag = '0';

7.2 采购执行汇总视图 (v_po_order_summary)

CREATE VIEW v_po_order_summary AS
SELECT 
    i.itemTypeCode AS itemTypeCode,
    i.itemTypeName AS itemTypeName,
    l.itemId,
    l.itemCode,
    l.itemName,
    SUM(l.quantity) AS totalOrderQty,
    SUM(IFNULL(l.arrivedQuantity, 0)) AS totalArrivedQty,
    SUM(l.quantity - IFNULL(l.arrivedQuantity, 0)) AS totalPendingQty,
    o.tenantId
FROM po_order_line l
INNER JOIN po_order o ON l.orderId = o.orderId AND o.status = 'APPROVED'
LEFT JOIN md_item i ON l.itemId = i.itemId
WHERE l.delFlag = '0' AND o.delFlag = '0'
GROUP BY i.itemTypeCode, i.itemTypeName, l.itemId, l.itemCode, l.itemName, o.tenantId;

7.3 采购到货明细视图 (v_po_checkin_detail)

CREATE VIEW v_po_checkin_detail AS
SELECT 
    l.lineId,
    l.checkinId,
    c.checkinCode,
    c.checkinDate,
    c.status,
    c.businessType,
    c.orderCode,
    c.supplierId,
    c.supplierName,
    l.trackCode,
    l.itemId,
    l.itemCode,
    l.itemName,
    l.specification,
    l.unitName,
    l.orderQuantity,
    l.quantity AS checkinQuantity,
    l.stockedQuantity,
    c.tenantId
FROM po_checkin_line l
INNER JOIN po_checkin c ON l.checkinId = c.checkinId
WHERE l.delFlag = '0' AND c.delFlag = '0';

8. 状态枚举定义

8.1 单据状态 (status)

枚举值 中文名 说明
DRAFT 开立 草稿,可编辑
APPROVED 审核 已审核,不可编辑
CLOSED 关闭 已关闭
RETURNED 退回 已退回(发票专用)

8.2 财务状态 (financeStatus)

枚举值 中文名 说明
RECORDED 录入 已录入
ENTERED 入账 已入账

8.3 业务状态 (businessStatus)

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

8.4 业务类型 (businessType)

枚举值 中文名 说明
RAW_MATERIAL 原材料 原材料采购
PARTS 零部件 零部件采购
ASSEMBLY 装配件 装配件采购
FINISHED 成品 成品采购
HARDWARE 五金件 五金件采购
PACKAGING 包装物 包装物采购

8.5 用料需求 (materialNeed)

枚举值 中文名 说明
ORDER_USE 订单用料 按订单需求采购
STOCK_USE 备库用料 备库采购

9. API 模块路径对照

业务模块 API前缀 说明
供应商 /po/supplier 供应商档案
采购订单 /po/order 采购订单
采购到货 /po/checkin 采购到货单
采购发票 /po/invoice 采购发票
采购退货 /po/reject 采购退货单
采购报表 /po/report 采购统计报表

10. 数据权限说明

10.1 租户隔离

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

10.2 数据权限范围

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