面料管理系统 - 数据库表设计
一、系统基础表
1. sys_user 系统用户表
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK, AUTO_INCREMENT |
主键 |
| employee_no |
VARCHAR(64) |
UNIQUE |
员工号 |
| username |
VARCHAR(64) |
UNIQUE, NOT NULL |
登录用户名 |
| password |
VARCHAR(128) |
NOT NULL |
密码(加密存储) |
| real_name |
VARCHAR(64) |
|
真实姓名 |
| phone |
VARCHAR(32) |
|
手机号 |
| email |
VARCHAR(128) |
|
邮箱 |
| avatar_attachment_id |
BIGINT |
FK |
头像附件(关联sys_attachment.id) |
| role |
VARCHAR(32) |
NOT NULL |
角色(admin/operator/sales等) |
| status |
TINYINT |
NOT NULL DEFAULT 1 |
状态 1启用 0停用 |
| c_time |
DATETIME |
NOT NULL |
创建时间 |
| u_time |
DATETIME |
NOT NULL |
更新时间 |
2. sys_message 系统消息表
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK, AUTO_INCREMENT |
主键 |
| user_id |
BIGINT |
FK, NOT NULL |
接收用户 |
| title |
VARCHAR(128) |
NOT NULL |
消息标题 |
| content |
TEXT |
NOT NULL |
消息内容 |
| type |
VARCHAR(32) |
NOT NULL |
消息类型(inventory_alert/system/business等) |
| biz_type |
VARCHAR(64) |
|
关联业务类型(sample_spu/bulk_contract等) |
| biz_id |
BIGINT |
|
关联业务ID |
| is_read |
TINYINT |
NOT NULL DEFAULT 0 |
是否已读 0未读 1已读 |
| c_time |
DATETIME |
NOT NULL |
创建时间 |
| u_time |
DATETIME |
NOT NULL |
更新时间 |
3. sys_attachment 附件表
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK, AUTO_INCREMENT |
主键 |
| file_name |
VARCHAR(256) |
NOT NULL |
原始文件名 |
| file_path |
VARCHAR(512) |
NOT NULL |
存储路径 |
| file_size |
BIGINT |
|
文件大小(字节) |
| file_type |
VARCHAR(64) |
|
文件MIME类型 |
| biz_type |
VARCHAR(64) |
NOT NULL |
关联业务类型(sample_spu/bulk_contract等) |
| uploader_id |
BIGINT |
FK |
上传人 |
| c_time |
DATETIME |
NOT NULL |
创建时间 |
| u_time |
DATETIME |
NOT NULL |
更新时间 |
4. api_call_log API调用日志表
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK, AUTO_INCREMENT |
主键 |
| request_url |
VARCHAR(512) |
NOT NULL |
请求URL |
| api_name |
VARCHAR(50) |
|
接口名称 |
| request_method |
VARCHAR(16) |
NOT NULL |
请求方法 |
| request_headers |
TEXT |
|
请求头 |
| request_body |
TEXT |
|
请求体 |
| response_status |
INT |
|
响应状态码 |
| response_body |
TEXT |
|
响应体 |
| client_ip |
VARCHAR(64) |
|
客户端IP |
| user_id |
BIGINT |
|
操作用户ID |
| duration_ms |
BIGINT |
|
耗时(毫秒) |
| c_time |
DATETIME |
NOT NULL |
创建时间 |
| u_time |
DATETIME |
NOT NULL |
更新时间 |
二、面料样品业务表
5. sample_spu 面料样品SPU表
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK, AUTO_INCREMENT |
主键 |
| spu_code |
VARCHAR(64) |
UNIQUE, NOT NULL |
SPU编码 |
| name |
VARCHAR(128) |
NOT NULL |
品名(如"玫瑰公主") |
| brand |
VARCHAR(64) |
|
品牌 |
| category |
VARCHAR(64) |
|
面料分类 |
| material |
VARCHAR(128) |
|
材质成分 |
| specification |
VARCHAR(256) |
|
规格说明 |
| season |
VARCHAR(32) |
|
季节(如"2026春夏") |
| unit |
VARCHAR(16) |
NOT NULL |
计量单位(m/kg等) |
| factory_name |
VARCHAR(128) |
|
工厂名称 |
| image_attachment_id |
BIGINT |
FK |
主图附件(关联sys_attachment.id) |
| reference_unit_price |
DECIMAL(10,2) |
|
工厂报价/参考大货单价 |
| stock_alert_threshold |
DECIMAL(12,2) |
|
库存预警值(SPU级:该SPU下所有SKU库存总和低于此值触发预警) |
| remark |
VARCHAR(512) |
|
备注 |
| status |
TINYINT |
NOT NULL DEFAULT 1 |
状态 1启用 0停用 |
| c_time |
DATETIME |
NOT NULL |
创建时间 |
| u_time |
DATETIME |
NOT NULL |
更新时间 |
6. sample_sku 面料样品SKU表
SKU N:1 SPU,库存直接存储在SKU表中。
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK, AUTO_INCREMENT |
主键 |
| spu_id |
BIGINT |
FK, NOT NULL |
所属SPU |
| sku_code |
VARCHAR(64) |
UNIQUE, NOT NULL |
SKU编码 |
| color |
VARCHAR(64) |
|
颜色 |
| pattern |
VARCHAR(64) |
|
花型/印花 |
| weight |
DECIMAL(8,2) |
|
克重(g/㎡) |
| width |
DECIMAL(8,2) |
|
幅宽(cm) |
| attribute_json |
JSON |
|
其他SKU属性(扩展用) |
| image_attachment_ids |
JSON |
|
SKU图片附件ID列表(如[1,2,3],关联sys_attachment.id,支持多张) |
| stock_quantity |
DECIMAL(12,2) |
NOT NULL DEFAULT 0 |
当前库存数量 |
| stock_alert_threshold |
DECIMAL(12,2) |
|
库存预警值(SKU级:该SKU库存低于此值触发预警) |
| remark |
VARCHAR(512) |
|
备注 |
| status |
TINYINT |
NOT NULL DEFAULT 1 |
状态 1启用 0停用 |
| c_time |
DATETIME |
NOT NULL |
创建时间 |
| u_time |
DATETIME |
NOT NULL |
更新时间 |
7. sample_inbound 面料样品入库表
每行对应一个SKU的一次入库记录,同一次入库操作可产生多行(不同SKU)。通过 inbound_no 关联同一次操作。入库不存在分次付款。
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK, AUTO_INCREMENT |
主键 |
| inbound_no |
VARCHAR(64) |
NOT NULL |
入库操作编号(同一次操作共享) |
| sku_id |
BIGINT |
FK, NOT NULL |
关联SKU |
| source_type |
TINYINT |
NOT NULL |
来源类型 1研发 2购买 |
| quantity |
DECIMAL(12,2) |
NOT NULL |
入库数量 |
| unit_cost |
DECIMAL(10,2) |
|
单位成本 |
| total_cost |
DECIMAL(12,2) |
|
总成本(数量×单价) |
| supplier |
VARCHAR(128) |
|
供应商(购买来源时填写) |
| dt |
DATE |
NOT NULL |
业务日期(用于利润聚合计算) |
| operator_id |
BIGINT |
FK |
操作人 |
| remark |
VARCHAR(512) |
|
备注 |
| is_deleted |
TINYINT |
NOT NULL DEFAULT 0 |
软删除 0正常 1已删除 |
| c_time |
DATETIME |
NOT NULL |
创建时间 |
| u_time |
DATETIME |
NOT NULL |
更新时间 |
8. sample_transaction 面料样品交易表
交易主表,每次交易一行。收款信息内联(样品不分期),利润可基于入库成本(sample_inbound)和交易价格按 dt 实时计算,无需独立利润表。
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK, AUTO_INCREMENT |
主键 |
| transaction_no |
VARCHAR(64) |
UNIQUE, NOT NULL |
交易编号 |
| total_original_price |
DECIMAL(12,2) |
NOT NULL |
原价合计 |
| total_discounted_price |
DECIMAL(12,2) |
NOT NULL |
折扣价合计(实际应收) |
| received_amount |
DECIMAL(12,2) |
NOT NULL DEFAULT 0 |
实际已收金额 |
| is_completed |
TINYINT |
NOT NULL DEFAULT 0 |
是否已收款 0未收款 1已收款 |
| payment_method |
VARCHAR(32) |
|
支付方式(转账/现金/支票等) |
| payment_date |
DATE |
|
收款日期 |
| payment_attachment_id |
BIGINT |
FK |
收款凭证附件(关联sys_attachment.id) |
| invoice_attachment_id |
BIGINT |
FK |
发票附件(关联sys_attachment.id) |
| dt |
DATE |
NOT NULL |
业务日期(用于利润聚合计算) |
| operator_id |
BIGINT |
FK |
操作人 |
| remark |
VARCHAR(512) |
|
备注 |
| is_deleted |
TINYINT |
NOT NULL DEFAULT 0 |
软删除 0正常 1已删除 |
| c_time |
DATETIME |
NOT NULL |
创建时间 |
| u_time |
DATETIME |
NOT NULL |
更新时间 |
9. sample_outbound 面料样品出库明细表
交易出库明细,每行对应一个SKU的出库情况,记录单价和长度。
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK, AUTO_INCREMENT |
主键 |
| transaction_id |
BIGINT |
FK, NOT NULL |
所属交易 |
| sku_id |
BIGINT |
FK, NOT NULL |
关联SKU |
| unit_original_price |
DECIMAL(10,2) |
NOT NULL |
原始单价 |
| unit_discounted_price |
DECIMAL(10,2) |
NOT NULL |
折扣单价 |
| quantity |
DECIMAL(12,2) |
NOT NULL |
出库长度/数量 |
| damage_quantity |
DECIMAL(12,2) |
NOT NULL DEFAULT 0 |
折损量 |
| actual_quantity |
DECIMAL(12,2) |
NOT NULL |
实际量(客户实收) |
| remark |
VARCHAR(512) |
|
备注 |
| is_deleted |
TINYINT |
NOT NULL DEFAULT 0 |
软删除 0正常 1已删除 |
| c_time |
DATETIME |
NOT NULL |
创建时间 |
| u_time |
DATETIME |
NOT NULL |
更新时间 |
10. non_business_expense
表
记录与系统业务无直接关系的费用支出,如差旅费、报销等。
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK, AUTO_INCREMENT |
主键 |
| expense_type |
VARCHAR(64) |
NOT NULL |
费用类型(差旅/报销/办公用品等) |
| amount |
DECIMAL(12,2) |
NOT NULL |
金额 |
| description |
VARCHAR(512) |
|
详细描述 |
| attachment_ids |
VARCHAR(512) |
|
附件ID列表(JSON数组,如"[1,2,3]") |
| dt |
DATE |
NOT NULL |
业务日期(用于费用聚合计算) |
| operator_id |
BIGINT |
FK |
申请人 |
| c_time |
DATETIME |
NOT NULL |
创建时间 |
| u_time |
DATETIME |
NOT NULL |
更新时间 |
三、大货合同交易业务表
11. bulk_client 客户表
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK, AUTO_INCREMENT |
主键 |
| client_name |
VARCHAR(128) |
NOT NULL |
客户名称 |
| contact_person |
VARCHAR(64) |
|
联系人 |
| phone |
VARCHAR(32) |
|
联系电话 |
| email |
VARCHAR(128) |
|
邮箱 |
| address |
VARCHAR(256) |
|
地址 |
| remark |
VARCHAR(512) |
|
备注 |
| status |
TINYINT |
NOT NULL DEFAULT 1 |
状态 1启用 0停用 |
| c_time |
DATETIME |
NOT NULL |
创建时间 |
| u_time |
DATETIME |
NOT NULL |
更新时间 |
12. bulk_transaction 大货交易表
大货为背对背交易:一个买家对应多个卖家,每个卖家对应一份合同,这些主体和合同共同构成一次交易。
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK, AUTO_INCREMENT |
主键 |
| transaction_no |
VARCHAR(64) |
UNIQUE, NOT NULL |
交易编号 |
| buyer_client_id |
BIGINT |
FK, NOT NULL |
买家(关联bulk_client.id) |
| transaction_status |
TINYINT |
NOT NULL DEFAULT 0 |
交易状态 0草稿/洽谈中 10合同签署中 20执行中 30财务结算中 40已完成 99已取消 |
| remark |
VARCHAR(512) |
|
备注 |
| is_deleted |
TINYINT |
NOT NULL DEFAULT 0 |
软删除 0正常 1已删除 |
| operator_id |
BIGINT |
FK |
负责人 |
| c_time |
DATETIME |
NOT NULL |
创建时间 |
| u_time |
DATETIME |
NOT NULL |
更新时间 |
13. bulk_contract 大货合同表
每份合同属于一次交易,公司作为中间商,合同可以是与买方的销售合同或与卖方的采购合同。分期收付款计划拆分至 bulk_contract_stage 表管理。
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK, AUTO_INCREMENT |
主键 |
| contract_no |
VARCHAR(64) |
UNIQUE, NOT NULL |
合同编号 |
| transaction_id |
BIGINT |
FK, NOT NULL |
所属交易 |
| contract_type |
TINYINT |
NOT NULL |
合同类型 1采购合同(对卖家) 2销售合同(对买家) |
| client_id |
BIGINT |
FK, NOT NULL |
对方客户(买方或卖方,关联bulk_client.id) |
| title |
VARCHAR(256) |
|
合同标题 |
| total_amount |
DECIMAL(14,2) |
|
合同总金额 |
| paid_amount |
DECIMAL(14,2) |
DEFAULT 0 |
已付/已收金额 |
| tax_rate |
DECIMAL(5,4) |
|
税率(如 0.1300 = 13%) |
| tax_amount |
DECIMAL(14,2) |
|
税额 |
| is_tax_inclusive |
TINYINT |
|
合同金额是否含税 1含税 0不含税 |
| contract_status |
TINYINT |
NOT NULL DEFAULT 0 |
合同状态 0待执行 1执行中 2已完成 3已取消 |
| contract_attachment_id |
BIGINT |
FK |
合同文件附件(关联sys_attachment.id) |
| sign_date |
DATE |
|
签约日期 |
| delivery_date |
DATE |
|
预计交货日期 |
| dt |
DATE |
NOT NULL |
业务日期(用于利润聚合计算) |
| operator_id |
BIGINT |
FK |
负责人 |
| remark |
VARCHAR(512) |
|
备注 |
| is_deleted |
TINYINT |
NOT NULL DEFAULT 0 |
软删除 0正常 1已删除 |
| c_time |
DATETIME |
NOT NULL |
创建时间 |
| u_time |
DATETIME |
NOT NULL |
更新时间 |
14. bulk_contract_stage 合同收付款阶段表
管理合同的分期付款/收款计划与执行状态,替代原 JSON 字段。每个阶段可关联多笔 bulk_payment 流水。
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK, AUTO_INCREMENT |
主键 |
| contract_id |
BIGINT |
FK, NOT NULL |
所属合同 |
| stage_name |
VARCHAR(64) |
NOT NULL |
阶段名称(定金/生产款/尾款/质保金) |
| stage_type |
TINYINT |
NOT NULL |
1收款计划(销售合同) 2付款计划(采购合同) |
| plan_amount |
DECIMAL(14,2) |
NOT NULL |
计划金额 |
| plan_ratio |
DECIMAL(5,4) |
|
计划比例(如 0.3000 = 30%) |
| plan_date |
DATE |
|
计划日期(用于生成催款/付款提醒) |
| actual_paid_amount |
DECIMAL(14,2) |
NOT NULL DEFAULT 0 |
实际已收/已付金额(通过流水表聚合更新) |
| is_completed |
TINYINT |
NOT NULL DEFAULT 0 |
该阶段是否结清 0未结清 1已结清 |
| sort_order |
INT |
NOT NULL DEFAULT 0 |
显示排序 |
| c_time |
DATETIME |
NOT NULL |
创建时间 |
| u_time |
DATETIME |
NOT NULL |
更新时间 |
15. bulk_contract_item 大货合同明细表
合同内的面料明细,存储完整的SPU/SKU描述信息(与样品SPU/SKU无强关联)。
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK, AUTO_INCREMENT |
主键 |
| contract_id |
BIGINT |
FK, NOT NULL |
所属合同 |
| spu_name |
VARCHAR(128) |
NOT NULL |
面料品名 |
| sku_name |
VARCHAR(128) |
|
SKU名称/描述 |
| material |
VARCHAR(128) |
|
材质成分 |
| color |
VARCHAR(64) |
|
颜色 |
| pattern |
VARCHAR(64) |
|
花型/印花 |
| specification |
VARCHAR(256) |
|
规格说明 |
| unit |
VARCHAR(16) |
NOT NULL |
单位 |
| unit_price |
DECIMAL(10,2) |
NOT NULL |
单价 |
| quantity |
DECIMAL(12,2) |
NOT NULL |
数量 |
| total_price |
DECIMAL(14,2) |
NOT NULL |
总价 |
| delivered_quantity |
DECIMAL(12,2) |
DEFAULT 0 |
已交货数量 |
| is_completed |
TINYINT |
NOT NULL DEFAULT 0 |
该明细是否完成 0未完成 1已完成 |
| dt |
DATE |
NOT NULL |
业务日期(用于利润聚合计算) |
| remark |
VARCHAR(512) |
|
备注 |
| is_deleted |
TINYINT |
NOT NULL DEFAULT 0 |
软删除 0正常 1已删除 |
| c_time |
DATETIME |
NOT NULL |
创建时间 |
| u_time |
DATETIME |
NOT NULL |
更新时间 |
16. bulk_payment 大货合同收付款记录表
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK, AUTO_INCREMENT |
主键 |
| contract_id |
BIGINT |
FK, NOT NULL |
所属合同 |
| contract_stage_id |
BIGINT |
FK |
所属收付款阶段(关联bulk_contract_stage.id,可为空) |
| amount |
DECIMAL(14,2) |
NOT NULL |
金额 |
| payment_type |
TINYINT |
NOT NULL |
类型 1收款 2付款 |
| payment_method |
VARCHAR(32) |
|
支付方式(转账/现金/支票等) |
| payment_date |
DATE |
NOT NULL |
收付款日期 |
| image_attachment_id |
BIGINT |
FK |
收付款凭证图片附件(关联sys_attachment.id) |
| dt |
DATE |
NOT NULL |
业务日期(用于利润聚合计算) |
| operator_id |
BIGINT |
FK |
操作人 |
| remark |
VARCHAR(512) |
|
备注 |
| is_deleted |
TINYINT |
NOT NULL DEFAULT 0 |
软删除 0正常 1已删除 |
| c_time |
DATETIME |
NOT NULL |
创建时间 |
| u_time |
DATETIME |
NOT NULL |
更新时间 |
表关系概览
sys_user
├──< sys_message (user_id)
├──< sample_inbound (operator_id)
├──< sample_transaction (operator_id)
├──< bulk_transaction (operator_id)
└──< bulk_contract (operator_id)
sys_attachment
├──> sys_user (avatar_attachment_id)
├──> sample_spu (image_attachment_id)
├──> sample_sku (image_attachment_ids, JSON多张)
├──> sample_transaction (invoice_attachment_id, payment_attachment_id)
├──> bulk_contract (contract_attachment_id)
└──> bulk_payment (image_attachment_id)
sample_spu 1──N sample_sku
sample_sku
├──< sample_inbound (sku_id)
└──< sample_outbound (sku_id)
sample_transaction
└──< sample_outbound (transaction_id)
bulk_client
├──< bulk_transaction (buyer_client_id, 作为买家)
└──< bulk_contract (client_id, 作为买方或卖方)
bulk_transaction 1──N bulk_contract (transaction_id)
bulk_contract
├──< bulk_contract_stage (contract_id)
├──< bulk_contract_item (contract_id)
└──< bulk_payment (contract_id)
bulk_contract_stage
└──< bulk_payment (contract_stage_id, 可为空)
non_business_expense (独立,不关联业务表)
评论区