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
This commit is contained in:
279
sql/bid_tables.sql
Normal file
279
sql/bid_tables.sql
Normal file
@@ -0,0 +1,279 @@
|
||||
-- 智慧报价平台业务表
|
||||
-- 租户表(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());
|
||||
Reference in New Issue
Block a user