采购管理模块 - 数据模型
本文档定义采购管理模块的数据库表结构、实体关系和视图设计。
1. 实体关系图 (ER Diagram)
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)
7.2 采购执行汇总视图 (v_po_order_summary)
7.3 采购到货明细视图 (v_po_checkin_detail)
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 数据权限范围
| 权限类型 |
说明 |
| 全部数据 |
可查看所有数据 |
| 部门数据 |
只能查看本部门数据 |
| 部门及以下数据 |
可查看本部门及下级部门数据 |
| 仅本人数据 |
只能查看自己创建的数据 |