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

18 KiB

销售管理模块 - 数据模型规范

本文档定义销售管理模块的数据库表结构和实体关系,供前后端开发参考。

注意: 字段命名采用驼峰命名法 (camelCase),与后端 API 返回格式保持一致。

1. 实体关系图 (ER Diagram)

┌─────────────────┐       ┌─────────────────┐       ┌─────────────────┐
│    sl_client    │       │   sl_contract   │       │    sl_order     │
│   (客户档案)     │<──────│   (销售合同)     │<──────│   (销售订单)     │
└─────────────────┘       └─────────────────┘       └─────────────────┘
         │                         │                        │
         │                         │                        │
         │                         ▼                        ▼
         │                ┌─────────────────┐       ┌─────────────────┐
         │                │sl_contract_salve│       │  sl_order_salve │
         │                │  (合同产品明细)  │       │  (订单物料明细)  │
         └───────────────>└─────────────────┘       └─────────────────┘
                                                            │
         ┌──────────────────────────────────────────────────┘
         │
         ▼
┌─────────────────┐       ┌─────────────────┐       ┌─────────────────┐
│   sl_deliver    │       │   sl_invoice    │       │   sl_saleback   │
│  (发货通知单)    │       │  (开票结算单)    │       │  (退货通知单)    │
└─────────────────┘       └─────────────────┘       └─────────────────┘
         │                        │                        │
         ▼                        ▼                        ▼
┌─────────────────┐       ┌─────────────────┐       ┌─────────────────┐
│sl_deliver_salve │       │sl_invoice_salve │       │sl_saleback_salve│
│  (发货明细)      │       │  (开票明细)      │       │  (退货明细)      │
└─────────────────┘       └─────────────────┘       └─────────────────┘

                    ┌─────────────────┐
                    │     md_item     │
                    │   (物料主数据)   │
                    └─────────────────┘
                            │
                            ▼
                    ┌─────────────────┐
                    │   wm_warehouse  │
                    │     (仓库)      │
                    └─────────────────┘

2. 客户档案 (sl_client)

2.1 主表结构 (SlClient)

API 路径: /sl/client

字段名 类型 长度 允许空 默认值 说明
clientId bigint - N - 客户ID (主键)
clientCode varchar 32 N - 客户编码
clientName varchar 100 N - 客户名称
clientNick varchar 50 Y - 客户简称
clientEn varchar 100 Y - 英文名称
clientDes varchar 500 Y - 客户描述
clientLogo varchar 200 Y - 客户Logo
clientType varchar 20 Y - 客户类型
clientLevel varchar 10 Y 'B' 客户级别(A/B/C/D)
clientSource varchar 50 Y - 客户来源
clientIndustry varchar 50 Y - 所属行业
address varchar 200 Y - 地址
website varchar 200 Y - 网址
email varchar 100 Y - 邮箱
tel varchar 20 Y - 电话
contact1 varchar 50 Y - 联系人1
contact1Tel varchar 20 Y - 联系人1电话
contact2 varchar 50 Y - 联系人2
contact2Tel varchar 20 Y - 联系人2电话
creditCode varchar 30 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 开票信息 (客户表扩展字段)

字段名 类型 长度 允许空 说明
bankName varchar 100 Y 开户银行
bankAccount varchar 30 Y 银行账号
taxNo varchar 20 Y 税号
invoiceAddress varchar 200 Y 开票地址电话

3. 销售订单 (sl_order)

3.1 主表结构 (SlOrderMaster)

API 路径: /sl/order

字段名 类型 长度 允许空 默认值 说明
orderId bigint - N - 订单ID (主键)
orderCode varchar 32 N - 订单编号
orderName varchar 100 Y - 订单名称
orderDate date - N - 订单日期
orderStatus varchar 20 N 'DRAFT' 订单状态
clientId bigint - N - 客户ID
clientCode varchar 32 Y - 客户编码(冗余)
clientName varchar 100 Y - 客户名称(冗余)
deliveryDate date - Y - 交货日期
totalAmount decimal 18,2 Y 0 订单总金额
remark varchar 500 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

订单状态枚举 (orderStatus)

说明
DRAFT 草稿
SUBMITTED 已提交
APPROVED 已审批
REJECTED 已驳回
CLOSED 已关闭
CANCELLED 已取消

3.2 明细表结构 (SlOrderSalve)

字段名 类型 长度 允许空 说明
lineId bigint - N 行ID (主键)
orderId bigint - N 订单ID (外键)
itemId bigint - N 物料ID
itemCode varchar 32 Y 物料编码
itemName varchar 100 Y 物料名称
specification varchar 100 Y 规格型号
unitOfMeasure varchar 20 Y 计量单位
quantity decimal 18,4 N 数量
unitPrice decimal 18,4 Y 单价
amount decimal 18,2 Y 金额
deliveredQty decimal 18,4 Y 已发货数量
remark varchar 500 Y 备注
delFlag char 1 N 删除标志

3.3 索引设计

-- 主表索引
CREATE INDEX idx_sl_order_code ON sl_order(orderCode);
CREATE INDEX idx_sl_order_client ON sl_order(clientId);
CREATE INDEX idx_sl_order_date ON sl_order(orderDate);
CREATE INDEX idx_sl_order_status ON sl_order(orderStatus);
CREATE INDEX idx_sl_order_tenant ON sl_order(tenantId);

-- 明细表索引
CREATE INDEX idx_sl_order_salve_order ON sl_order_salve(orderId);
CREATE INDEX idx_sl_order_salve_item ON sl_order_salve(itemId);

4. 发货单 (sl_deliver)

4.1 主表结构 (SlDeliverMaster)

API 路径: /sl/deliver

字段名 类型 长度 允许空 说明
deliverId bigint - N 发货单ID (主键)
deliverCode varchar 32 N 发货单编号
deliverName varchar 100 Y 发货单名称
deliverDate date - N 发货日期
orderId bigint - Y 销售订单ID
clientId bigint - N 客户ID
clientName varchar 100 Y 客户名称
warehouseId bigint - N 发货仓库ID
warehouseName varchar 50 Y 仓库名称
status varchar 20 N 状态
remark varchar 500 Y 备注
delFlag char 1 N 删除标志
createBy varchar 64 Y 创建者
createTime datetime - Y 创建时间
updateBy varchar 64 Y 更新者
updateTime datetime - Y 更新时间
tenantId varchar 20 N 租户ID

4.2 明细表结构 (SlDeliverSalve)

字段名 类型 长度 允许空 说明
lineId bigint - N 行ID (主键)
deliverId bigint - N 发货单ID (外键)
orderId bigint - Y 来源订单ID
orderLineId bigint - Y 来源订单明细ID
itemId bigint - N 物料ID
itemCode varchar 32 Y 物料编码
itemName varchar 100 Y 物料名称
specification varchar 100 Y 规格型号
unitOfMeasure varchar 20 Y 计量单位
orderQty decimal 18,4 Y 订单数量
deliveredQty decimal 18,4 Y 已发数量
deliverQty decimal 18,4 N 本次发货数量
remark varchar 500 Y 备注
delFlag char 1 N 删除标志

5. 销售发票 (sl_invoice)

5.1 主表结构 (SlInvoiceMaster)

API 路径: /sl/invoice

字段名 类型 长度 允许空 说明
invoiceId bigint - N 发票ID (主键)
invoiceCode varchar 32 N 发票编号
invoiceName varchar 100 Y 发票名称
invoiceDate date - N 发票日期
clientId bigint - N 客户ID
clientName varchar 100 Y 客户名称
invoiceTitle varchar 100 Y 开票名称
taxRate decimal 5,2 Y 税率
invoiceType varchar 20 Y 发票类型
bankName varchar 100 Y 开户行
bankAccount varchar 30 Y 银行账号
taxNo varchar 20 Y 税号
totalAmount decimal 18,2 Y 总金额
taxAmount decimal 18,2 Y 税额
status varchar 20 N 状态
remark varchar 500 Y 备注
delFlag char 1 N 删除标志
createBy varchar 64 Y 创建者
createTime datetime - Y 创建时间
updateBy varchar 64 Y 更新者
updateTime datetime - Y 更新时间
tenantId varchar 20 N 租户ID

5.2 明细表结构 (SlInvoiceSalve)

字段名 类型 长度 允许空 说明
lineId bigint - N 行ID (主键)
invoiceId bigint - N 发票ID (外键)
deliverId bigint - Y 来源发货单ID
deliverLineId bigint - Y 来源发货明细ID
itemId bigint - N 物料ID
itemCode varchar 32 Y 物料编码
itemName varchar 100 Y 物料名称
specification varchar 100 Y 规格型号
unitOfMeasure varchar 20 Y 计量单位
quantity decimal 18,4 N 数量
unitPrice decimal 18,4 Y 单价
amount decimal 18,2 Y 金额
remark varchar 500 Y 备注
delFlag char 1 N 删除标志

6. 退货单 (sl_saleback)

6.1 主表结构 (SlSalebackMaster)

API 路径: /sl/saleback

字段名 类型 长度 允许空 说明
salebackId bigint - N 退货单ID (主键)
salebackCode varchar 32 N 退货单编号
salebackDate date - N 退货日期
orderId bigint - Y 原销售订单ID
clientId bigint - N 客户ID
clientName varchar 100 Y 客户名称
reason varchar 200 Y 退货原因
status varchar 20 N 状态
remark varchar 500 Y 备注
delFlag char 1 N 删除标志
createBy varchar 64 Y 创建者
createTime datetime - Y 创建时间
updateBy varchar 64 Y 更新者
updateTime datetime - Y 更新时间
tenantId varchar 20 N 租户ID

6.2 明细表结构 (SlSalebackSalve)

字段名 类型 长度 允许空 说明
lineId bigint - N 行ID (主键)
salebackId bigint - N 退货单ID (外键)
deliverId bigint - Y 来源发货单ID
deliverLineId bigint - Y 来源发货明细ID
itemId bigint - N 物料ID
itemCode varchar 32 Y 物料编码
itemName varchar 100 Y 物料名称
specification varchar 100 Y 规格型号
unitOfMeasure varchar 20 Y 计量单位
deliveredQty decimal 18,4 Y 已发数量
returnQty decimal 18,4 N 退货数量
remark varchar 500 Y 备注
delFlag char 1 N 删除标志

7. 物料主数据 (md_item)

7.1 主表结构 (MdItem)

API 路径: /md/item

字段名 类型 长度 允许空 说明
itemId bigint - N 物料ID (主键)
itemCode varchar 32 N 物料编码
itemName varchar 100 N 物料名称
specification varchar 100 Y 规格型号
unitOfMeasure varchar 20 Y 计量单位
itemTypeId bigint - Y 物料分类ID
itemTypeName varchar 50 Y 物料分类名称
itemOrProduct varchar 20 Y 物料/产品 (ITEM/PRODUCT)
safeStockFlag char 1 Y 是否启用安全库存(Y/N)
minStock decimal 18,4 Y 最小库存
maxStock decimal 18,4 Y 最大库存
enableFlag char 1 N 启用状态(Y/N)
remark varchar 500 Y 备注
delFlag char 1 N 删除标志
createBy varchar 64 Y 创建者
createTime datetime - Y 创建时间
updateBy varchar 64 Y 更新者
updateTime datetime - Y 更新时间
tenantId varchar 20 N 租户ID

7.2 物料分类 (MdItemType)

API 路径: /md/itemtype

字段名 类型 长度 允许空 说明
itemTypeId bigint - N 分类ID (主键)
itemTypeCode varchar 32 N 分类编码
itemTypeName varchar 50 N 分类名称
parentTypeId bigint - Y 父分类ID
orderNum int - Y 排序号
enableFlag char 1 N 启用状态(Y/N)

8. 仓库 (wm_warehouse)

8.1 仓库主表

API 路径: /wm/warehouse

字段名 类型 长度 允许空 说明
warehouseId bigint - N 仓库ID (主键)
warehouseCode varchar 32 N 仓库编码
warehouseName varchar 50 N 仓库名称
location varchar 100 Y 位置
area decimal 10,2 Y 面积
charge varchar 50 Y 负责人
enableFlag char 1 N 启用状态(Y/N)

8.2 库存 (wm_stock)

API 路径: /wm/stock

字段名 类型 长度 允许空 说明
stockId bigint - N 库存ID (主键)
itemId bigint - N 物料ID
itemCode varchar 32 Y 物料编码
itemName varchar 100 Y 物料名称
warehouseId bigint - N 仓库ID
warehouseName varchar 50 Y 仓库名称
quantityOnHand decimal 18,4 Y 在库数量
quantityLocked decimal 18,4 Y 锁定数量
quantityAvailable decimal 18,4 Y 可用数量

9. 视图设计

9.1 销售订单明细视图 (v_sl_order_detail)

CREATE VIEW v_sl_order_detail AS
SELECT 
    o.orderId,
    o.orderCode,
    o.orderDate,
    o.orderStatus,
    o.clientId,
    o.clientName,
    o.deliveryDate,
    o.totalAmount,
    s.lineId,
    s.itemId,
    s.itemCode,
    s.itemName,
    s.specification,
    s.unitOfMeasure,
    s.quantity,
    s.unitPrice,
    s.amount,
    s.deliveredQty,
    (s.quantity - COALESCE(s.deliveredQty, 0)) AS undeliveredQty
FROM sl_order o
LEFT JOIN sl_order_salve s ON o.orderId = s.orderId AND s.delFlag = '0'
WHERE o.delFlag = '0';

9.2 7天交货明细视图 (v_sl_7day_delivery)

CREATE VIEW v_sl_7day_delivery AS
SELECT 
    o.orderId,
    o.orderCode,
    o.orderDate,
    o.clientId,
    o.clientName,
    o.deliveryDate,
    s.itemId,
    s.itemCode,
    s.itemName,
    s.quantity AS orderQty,
    s.deliveredQty,
    (s.quantity - COALESCE(s.deliveredQty, 0)) AS undeliveredQty
FROM sl_order o
LEFT JOIN sl_order_salve s ON o.orderId = s.orderId AND s.delFlag = '0'
WHERE o.delFlag = '0'
  AND o.orderStatus = 'APPROVED'
  AND o.deliveryDate BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 7 DAY)
  AND (s.quantity - COALESCE(s.deliveredQty, 0)) > 0;

10. 状态枚举定义

10.1 单据状态 (status / orderStatus)

状态值 说明
DRAFT 草稿
SUBMITTED 已提交
APPROVED 已审批
REJECTED 已驳回
CLOSED 已关闭
CANCELLED 已取消

10.2 启用状态 (enableFlag)

状态值 说明
Y 启用
N 停用

10.3 物料类型 (itemOrProduct)

状态值 说明
ITEM 物料
PRODUCT 产品

11. API 模块路径对照

模块 API路径前缀 说明
销售模块 /sl Sales
仓库模块 /wm Warehouse Management
物料模块 /md Master Data
采购模块 /po Procurement
生产模块 /pd Production
计划模块 /pl Planning
研发模块 /rd Research & Development
委外模块 /pu Outsourcing
财务模块 /fd Finance