Files
erp-next/deploy/init-sql/03-bid-tables.sql
FAD Dev 2941cd23c4 feat: 福安德智慧报价平台 - 完整业务模块
基于RuoYi-Vue2构建的智慧采购报价平台,包含:

后端(Spring Boot + MyBatis):
- 物料管理 (BizMaterial)
- 供应商管理 (BizSupplier)
- 报价请求RFQ (BizRfq)
- 供应商报价单 (BizQuotation)
- 智慧比价分析 (BizComparison)
- 采购单 (BizPurchaseOrder)
- 供应商评价 (BizSupplierEvaluation)
- 订单异议 (BizOrderObjection)
- 交易记录 (BizTransaction)
- 租户管理-SaaS数据隔离 (BizTenant)

前端(Vue2 + Element UI):
- 10个业务模块完整页面
- ERPNext风格主题(蓝色系)
- 福安德品牌logo

部署:
- Docker Compose一键部署
- MySQL 8.0 + Redis 7 + Nginx
- 前端端口 10031
2026-05-22 09:36:01 +08:00

280 lines
13 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 智慧报价平台业务表
-- 租户表SaaS买方隔离
CREATE TABLE IF NOT EXISTS biz_tenant (
tenant_id BIGINT NOT NULL AUTO_INCREMENT,
tenant_name VARCHAR(100) NOT NULL COMMENT '租户名称',
contact VARCHAR(50) COMMENT '联系人',
phone VARCHAR(20) COMMENT '联系电话',
email VARCHAR(100) COMMENT '邮箱',
status CHAR(1) DEFAULT '0' COMMENT '0正常 1停用',
create_by VARCHAR(64) DEFAULT '',
create_time DATETIME,
update_by VARCHAR(64) DEFAULT '',
update_time DATETIME,
remark VARCHAR(500) DEFAULT NULL,
PRIMARY KEY (tenant_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户表';
INSERT IGNORE INTO biz_tenant(tenant_id,tenant_name,contact,phone,email,status,create_by,create_time)
VALUES(1,'默认租户','管理员','','admin@example.com','0','admin',NOW());
-- 给 sys_user 增加 tenant_id 字段用于SaaS隔离
ALTER TABLE sys_user ADD COLUMN IF NOT EXISTS tenant_id BIGINT DEFAULT 1 COMMENT '所属租户';
-- 物料分类
CREATE TABLE IF NOT EXISTS biz_material_category (
category_id BIGINT NOT NULL AUTO_INCREMENT,
tenant_id BIGINT NOT NULL DEFAULT 1,
category_name VARCHAR(100) NOT NULL,
parent_id BIGINT DEFAULT 0,
ancestors VARCHAR(500) DEFAULT '',
sort INT DEFAULT 0,
status CHAR(1) DEFAULT '0',
create_by VARCHAR(64) DEFAULT '',
create_time DATETIME,
PRIMARY KEY (category_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物料分类';
-- 物料
CREATE TABLE IF NOT EXISTS biz_material (
material_id BIGINT NOT NULL AUTO_INCREMENT,
tenant_id BIGINT NOT NULL DEFAULT 1,
category_id BIGINT DEFAULT 0,
material_code VARCHAR(50) NOT NULL COMMENT '物料编码',
material_name VARCHAR(200) NOT NULL COMMENT '物料名称',
spec VARCHAR(500) DEFAULT '' COMMENT '规格型号',
unit VARCHAR(50) DEFAULT '' COMMENT '单位',
brand VARCHAR(100) DEFAULT '' COMMENT '品牌',
description TEXT COMMENT '描述',
status CHAR(1) DEFAULT '0',
create_by VARCHAR(64) DEFAULT '',
create_time DATETIME,
update_by VARCHAR(64) DEFAULT '',
update_time DATETIME,
remark VARCHAR(500) DEFAULT NULL,
PRIMARY KEY (material_id),
UNIQUE KEY uk_code_tenant (tenant_id, material_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物料';
-- 供应商
CREATE TABLE IF NOT EXISTS biz_supplier (
supplier_id BIGINT NOT NULL AUTO_INCREMENT,
tenant_id BIGINT NOT NULL DEFAULT 1,
supplier_name VARCHAR(200) NOT NULL,
contact VARCHAR(50) DEFAULT '',
phone VARCHAR(20) DEFAULT '',
email VARCHAR(100) DEFAULT '',
address VARCHAR(500) DEFAULT '',
user_id BIGINT DEFAULT NULL COMMENT '关联系统用户',
status CHAR(1) DEFAULT '0',
create_by VARCHAR(64) DEFAULT '',
create_time DATETIME,
update_by VARCHAR(64) DEFAULT '',
update_time DATETIME,
remark VARCHAR(500) DEFAULT NULL,
PRIMARY KEY (supplier_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商';
-- 报价请求RFQ
CREATE TABLE IF NOT EXISTS biz_rfq (
rfq_id BIGINT NOT NULL AUTO_INCREMENT,
tenant_id BIGINT NOT NULL DEFAULT 1,
rfq_no VARCHAR(50) NOT NULL COMMENT 'RFQ编号',
rfq_title VARCHAR(200) NOT NULL COMMENT 'RFQ标题',
deadline DATETIME DEFAULT NULL COMMENT '截止日期',
delivery_addr VARCHAR(500) DEFAULT '' COMMENT '交货地址',
status VARCHAR(20) DEFAULT 'draft' COMMENT 'draft/published/closed/completed',
remark TEXT,
create_by VARCHAR(64) DEFAULT '',
create_time DATETIME,
update_by VARCHAR(64) DEFAULT '',
update_time DATETIME,
PRIMARY KEY (rfq_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报价请求';
-- RFQ物料明细
CREATE TABLE IF NOT EXISTS biz_rfq_item (
item_id BIGINT NOT NULL AUTO_INCREMENT,
rfq_id BIGINT NOT NULL,
material_id BIGINT DEFAULT 0,
material_name VARCHAR(200) NOT NULL,
spec VARCHAR(500) DEFAULT '',
unit VARCHAR(50) DEFAULT '',
quantity DECIMAL(15,4) NOT NULL,
expected_price DECIMAL(15,4) DEFAULT NULL COMMENT '预期单价',
remark VARCHAR(500) DEFAULT '',
PRIMARY KEY (item_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='RFQ物料明细';
-- RFQ邀请供应商
CREATE TABLE IF NOT EXISTS biz_rfq_supplier (
id BIGINT NOT NULL AUTO_INCREMENT,
rfq_id BIGINT NOT NULL,
supplier_id BIGINT NOT NULL,
invited_time DATETIME DEFAULT NULL,
quoted_time DATETIME DEFAULT NULL,
status VARCHAR(20) DEFAULT 'pending' COMMENT 'pending/quoted/declined',
PRIMARY KEY (id),
UNIQUE KEY uk_rfq_supplier (rfq_id, supplier_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='RFQ邀请供应商';
-- 供应商报价单
CREATE TABLE IF NOT EXISTS biz_quotation (
quotation_id BIGINT NOT NULL AUTO_INCREMENT,
tenant_id BIGINT NOT NULL DEFAULT 1,
rfq_id BIGINT NOT NULL,
supplier_id BIGINT NOT NULL,
quote_no VARCHAR(50) DEFAULT '' COMMENT '报价单编号',
valid_days INT DEFAULT 30 COMMENT '报价有效天数',
delivery_days INT DEFAULT 0 COMMENT '交货天数',
total_amount DECIMAL(15,4) DEFAULT 0 COMMENT '总金额',
currency VARCHAR(10) DEFAULT 'CNY',
status VARCHAR(20) DEFAULT 'draft' COMMENT 'draft/submitted/accepted/rejected',
note TEXT,
submit_time DATETIME DEFAULT NULL,
create_by VARCHAR(64) DEFAULT '',
create_time DATETIME,
update_time DATETIME,
PRIMARY KEY (quotation_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商报价单';
-- 报价明细
CREATE TABLE IF NOT EXISTS biz_quotation_item (
item_id BIGINT NOT NULL AUTO_INCREMENT,
quotation_id BIGINT NOT NULL,
rfq_item_id BIGINT NOT NULL,
material_name VARCHAR(200) DEFAULT '',
spec VARCHAR(500) DEFAULT '',
unit VARCHAR(50) DEFAULT '',
quantity DECIMAL(15,4) DEFAULT 0,
unit_price DECIMAL(15,4) NOT NULL,
total_price DECIMAL(15,4) DEFAULT 0,
delivery_days INT DEFAULT 0,
remark VARCHAR(500) DEFAULT '',
PRIMARY KEY (item_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报价明细';
-- 采购单
CREATE TABLE IF NOT EXISTS biz_purchase_order (
po_id BIGINT NOT NULL AUTO_INCREMENT,
tenant_id BIGINT NOT NULL DEFAULT 1,
po_no VARCHAR(50) NOT NULL COMMENT '采购单编号',
rfq_id BIGINT DEFAULT NULL,
supplier_id BIGINT NOT NULL,
total_amount DECIMAL(15,4) DEFAULT 0,
currency VARCHAR(10) DEFAULT 'CNY',
delivery_addr VARCHAR(500) DEFAULT '',
delivery_date DATE DEFAULT NULL,
status VARCHAR(20) DEFAULT 'draft' COMMENT 'draft/confirmed/delivered/closed/disputed',
remark TEXT,
create_by VARCHAR(64) DEFAULT '',
create_time DATETIME,
update_by VARCHAR(64) DEFAULT '',
update_time DATETIME,
PRIMARY KEY (po_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购单';
-- 采购单明细
CREATE TABLE IF NOT EXISTS biz_purchase_order_item (
item_id BIGINT NOT NULL AUTO_INCREMENT,
po_id BIGINT NOT NULL,
material_id BIGINT DEFAULT 0,
material_name VARCHAR(200) NOT NULL,
spec VARCHAR(500) DEFAULT '',
unit VARCHAR(50) DEFAULT '',
quantity DECIMAL(15,4) NOT NULL,
unit_price DECIMAL(15,4) NOT NULL,
total_price DECIMAL(15,4) DEFAULT 0,
remark VARCHAR(500) DEFAULT '',
PRIMARY KEY (item_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购单明细';
-- 供应商评价
CREATE TABLE IF NOT EXISTS biz_supplier_evaluation (
eval_id BIGINT NOT NULL AUTO_INCREMENT,
tenant_id BIGINT NOT NULL DEFAULT 1,
po_id BIGINT NOT NULL,
supplier_id BIGINT NOT NULL,
quality_score INT DEFAULT 5 COMMENT '质量评分1-5',
delivery_score INT DEFAULT 5 COMMENT '交期评分1-5',
service_score INT DEFAULT 5 COMMENT '服务评分1-5',
price_score INT DEFAULT 5 COMMENT '价格评分1-5',
total_score DECIMAL(3,1) DEFAULT 5.0,
comment TEXT,
evaluator VARCHAR(64) DEFAULT '',
eval_time DATETIME,
PRIMARY KEY (eval_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商评价';
-- 订单异议
CREATE TABLE IF NOT EXISTS biz_order_objection (
objection_id BIGINT NOT NULL AUTO_INCREMENT,
tenant_id BIGINT NOT NULL DEFAULT 1,
po_id BIGINT NOT NULL,
supplier_id BIGINT NOT NULL,
reason TEXT NOT NULL COMMENT '异议原因',
attachment VARCHAR(500) DEFAULT '' COMMENT '附件',
status VARCHAR(20) DEFAULT 'pending' COMMENT 'pending/processing/resolved/rejected',
resolution TEXT COMMENT '处理结果',
create_by VARCHAR(64) DEFAULT '',
create_time DATETIME,
resolve_time DATETIME DEFAULT NULL,
PRIMARY KEY (objection_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单异议';
-- 交易记录
CREATE TABLE IF NOT EXISTS biz_transaction (
tx_id BIGINT NOT NULL AUTO_INCREMENT,
tenant_id BIGINT NOT NULL DEFAULT 1,
po_id BIGINT DEFAULT NULL,
supplier_id BIGINT DEFAULT NULL,
tx_type VARCHAR(50) DEFAULT '' COMMENT '类型:RFQ/QUOTE/PO/EVAL',
tx_no VARCHAR(50) DEFAULT '',
amount DECIMAL(15,4) DEFAULT NULL,
currency VARCHAR(10) DEFAULT 'CNY',
description TEXT,
operator VARCHAR(64) DEFAULT '',
tx_time DATETIME,
create_time DATETIME,
PRIMARY KEY (tx_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交易记录';
-- 系统菜单(智慧报价平台业务菜单)
INSERT IGNORE INTO sys_menu(menu_id,menu_name,parent_id,order_num,path,component,query,is_frame,is_cache,menu_type,visible,status,perms,icon,create_by,create_time,update_by,update_time,remark)
VALUES
(2000,'智慧报价',0,5,'bid',NULL,NULL,'1','0','M','0','0','','#','admin',NOW(),'','',''),
(2001,'物料管理',2000,1,'material','bid/material/index',NULL,'1','0','C','0','0','bid:material:list','component','admin',NOW(),'','',''),
(2002,'供应商管理',2000,2,'supplier','bid/supplier/index',NULL,'1','0','C','0','0','bid:supplier:list','user','admin',NOW(),'','',''),
(2003,'报价请求',2000,3,'rfq','bid/rfq/index',NULL,'1','0','C','0','0','bid:rfq:list','form','admin',NOW(),'','',''),
(2004,'供应商报价',2000,4,'quotation','bid/quotation/index',NULL,'1','0','C','0','0','bid:quotation:list','money','admin',NOW(),'','',''),
(2005,'智慧比价',2000,5,'comparison','bid/comparison/index',NULL,'1','0','C','0','0','bid:comparison:list','chart','admin',NOW(),'','',''),
(2006,'采购单',2000,6,'purchaseorder','bid/purchaseorder/index',NULL,'1','0','C','0','0','bid:purchaseorder:list','shopping','admin',NOW(),'','',''),
(2007,'供应商评价',2000,7,'evaluation','bid/evaluation/index',NULL,'1','0','C','0','0','bid:evaluation:list','star','admin',NOW(),'','',''),
(2008,'订单异议',2000,8,'objection','bid/objection/index',NULL,'1','0','C','0','0','bid:objection:list','warning','admin',NOW(),'','',''),
(2009,'交易记录',2000,9,'transaction','bid/transaction/index',NULL,'1','0','C','0','0','bid:transaction:list','list','admin',NOW(),'','',''),
(2010,'租户管理',2000,10,'tenant','bid/tenant/index',NULL,'1','0','C','0','0','bid:tenant:list','peoples','admin',NOW(),'','','');
-- 菜单按钮权限
INSERT IGNORE INTO sys_menu(menu_id,menu_name,parent_id,order_num,path,component,query,is_frame,is_cache,menu_type,visible,status,perms,icon,create_by,create_time)
VALUES
(2101,'物料查询',2001,1,'','','','1','0','F','0','0','bid:material:query','#','admin',NOW()),
(2102,'物料新增',2001,2,'','','','1','0','F','0','0','bid:material:add','#','admin',NOW()),
(2103,'物料修改',2001,3,'','','','1','0','F','0','0','bid:material:edit','#','admin',NOW()),
(2104,'物料删除',2001,4,'','','','1','0','F','0','0','bid:material:remove','#','admin',NOW()),
(2201,'供应商查询',2002,1,'','','','1','0','F','0','0','bid:supplier:query','#','admin',NOW()),
(2202,'供应商新增',2002,2,'','','','1','0','F','0','0','bid:supplier:add','#','admin',NOW()),
(2203,'供应商修改',2002,3,'','','','1','0','F','0','0','bid:supplier:edit','#','admin',NOW()),
(2204,'供应商删除',2002,4,'','','','1','0','F','0','0','bid:supplier:remove','#','admin',NOW()),
(2301,'RFQ查询',2003,1,'','','','1','0','F','0','0','bid:rfq:query','#','admin',NOW()),
(2302,'RFQ新增',2003,2,'','','','1','0','F','0','0','bid:rfq:add','#','admin',NOW()),
(2303,'RFQ修改',2003,3,'','','','1','0','F','0','0','bid:rfq:edit','#','admin',NOW()),
(2304,'RFQ删除',2003,4,'','','','1','0','F','0','0','bid:rfq:remove','#','admin',NOW()),
(2305,'发布RFQ',2003,5,'','','','1','0','F','0','0','bid:rfq:publish','#','admin',NOW()),
(2401,'报价查询',2004,1,'','','','1','0','F','0','0','bid:quotation:query','#','admin',NOW()),
(2402,'报价新增',2004,2,'','','','1','0','F','0','0','bid:quotation:add','#','admin',NOW()),
(2403,'报价修改',2004,3,'','','','1','0','F','0','0','bid:quotation:edit','#','admin',NOW()),
(2601,'采购单查询',2006,1,'','','','1','0','F','0','0','bid:purchaseorder:query','#','admin',NOW()),
(2602,'采购单新增',2006,2,'','','','1','0','F','0','0','bid:purchaseorder:add','#','admin',NOW()),
(2603,'采购单修改',2006,3,'','','','1','0','F','0','0','bid:purchaseorder:edit','#','admin',NOW()),
(2604,'采购单删除',2006,4,'','','','1','0','F','0','0','bid:purchaseorder:remove','#','admin',NOW());