去除供应商类型多余代码

This commit is contained in:
liuminghui
2026-10-28 17:14:42 +08:00
parent 2bd417b84e
commit 1e4711326c
19 changed files with 159 additions and 948 deletions
+31 -81
View File
@@ -1,47 +1,43 @@
-- 数据管理:供应商类型
-- 业务表与字典 bms_supplier_type 使用同一套编码,初始数据与现有供应商档案口径一致
-- 供应商类型只维护在数据字典 bms_supplier_type
-- 供应商档案下拉、列表、导出都读该字典;不再使用业务表和独立菜单
SET NAMES utf8mb4;
CREATE TABLE IF NOT EXISTS bms_supplier_type (
type_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '类型ID',
type_code varchar(32) NOT NULL COMMENT '类型编码(字典键值)',
type_name varchar(100) NOT NULL COMMENT '类型名称',
type_sort int(4) NOT NULL DEFAULT 0 COMMENT '显示排序',
status char(1) NOT NULL DEFAULT '0' COMMENT '状态(0正常 1停用)',
remark varchar(500) DEFAULT NULL COMMENT '备注',
create_by varchar(64) DEFAULT '' COMMENT '创建者',
create_time datetime DEFAULT NULL COMMENT '创建时间',
update_by varchar(64) DEFAULT '' COMMENT '更新者',
update_time datetime DEFAULT NULL COMMENT '更新时间',
del_flag char(1) DEFAULT '0' COMMENT '删除标记(0存在 1删除)',
PRIMARY KEY (type_id),
UNIQUE KEY uk_bms_supplier_type_code (type_code),
UNIQUE KEY uk_bms_supplier_type_name (type_name),
KEY idx_bms_supplier_type_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商类型';
-- 已执行过旧脚本时,拆掉供应商类型业务表和「数据管理 / 供应商类型」菜单
DROP TABLE IF EXISTS bms_supplier_type;
-- 已有供应商档案的类型列只有 1 位,放宽后才能保存新编码
DELETE rm FROM sys_role_menu rm
INNER JOIN sys_menu m ON rm.menu_id = m.menu_id
INNER JOIN sys_menu p ON m.parent_id = p.menu_id
WHERE m.menu_type = 'F'
AND (p.perms = 'data:supplierType:list' OR p.component = 'data/supplierType/index');
DELETE m FROM sys_menu m
INNER JOIN sys_menu p ON m.parent_id = p.menu_id
WHERE m.menu_type = 'F'
AND (p.perms = 'data:supplierType:list' OR p.component = 'data/supplierType/index');
DELETE rm FROM sys_role_menu rm
INNER JOIN sys_menu m ON rm.menu_id = m.menu_id
WHERE m.perms LIKE 'data:supplierType:%'
OR m.component = 'data/supplierType/index';
DELETE FROM sys_menu
WHERE perms LIKE 'data:supplierType:%'
OR component = 'data/supplierType/index';
-- 类型编码不再限制为 1 位,与字典键值对齐
ALTER TABLE sup_supplier
MODIFY COLUMN supplier_type varchar(32) DEFAULT NULL COMMENT '供应商类型(字典 bms_supplier_type)';
INSERT INTO bms_supplier_type (type_code, type_name, type_sort, status, remark, create_by, create_time, del_flag)
SELECT v.type_code, v.type_name, v.type_sort, '0', v.remark, 'admin', sysdate(), '0'
FROM (
SELECT '1' AS type_code, '卡车行' AS type_name, 1 AS type_sort, '原供应商档案口径' AS remark
UNION ALL SELECT '2', '航司代理', 2, '原供应商档案口径'
UNION ALL SELECT '3', '报关行', 3, '原供应商档案口径'
UNION ALL SELECT '4', '清关行', 4, '原供应商档案口径'
UNION ALL SELECT '5', '尾派服务商', 5, '原供应商档案口径'
UNION ALL SELECT '6', '报关代理', 6, '原供应商档案口径'
) v
WHERE NOT EXISTS (
SELECT 1 FROM bms_supplier_type t WHERE t.type_code = v.type_code OR t.type_name = v.type_name
);
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
SELECT '供应商类型', 'bms_supplier_type', '0', 'admin', sysdate(), '供应商档案使用的类型,与供应商类型管理保持一致'
SELECT '供应商类型', 'bms_supplier_type', '0', 'admin', sysdate(), '供应商档案使用的类型,在系统字典中维护'
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'bms_supplier_type');
UPDATE sys_dict_type
SET dict_name = '供应商类型',
remark = '供应商档案使用的类型,在系统字典中维护'
WHERE dict_type = 'bms_supplier_type';
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
SELECT v.type_sort, v.type_name, v.type_code, 'bms_supplier_type', '', 'primary', 'N', '0', 'admin', sysdate(), v.remark
FROM (
@@ -55,49 +51,3 @@ FROM (
WHERE NOT EXISTS (
SELECT 1 FROM sys_dict_data d WHERE d.dict_type = 'bms_supplier_type' AND d.dict_value = v.type_code
);
SET @parentId := (
SELECT menu_id FROM sys_menu
WHERE path = 'data' AND menu_type = 'M'
ORDER BY menu_id ASC LIMIT 1
);
SET @parentId := IFNULL(@parentId, (
SELECT parent_id FROM sys_menu
WHERE perms = 'data:region:list' OR component = 'data/region/index' OR component = 'data/exchangerate/index'
ORDER BY menu_id ASC LIMIT 1
));
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
SELECT 2490, '供应商类型', @parentId, 40, 'supplierType', 'data/supplierType/index', '', 'SupplierType', 1, 0, 'C', '0', '0', 'data:supplierType:list', 'tree', 'admin', sysdate(), '供应商类型维护,并同步字典 bms_supplier_type'
FROM DUAL WHERE @parentId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2490 OR perms = 'data:supplierType:list');
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
SELECT 2491, '查询', 2490, 1, '', NULL, 1, 0, 'F', '0', '0', 'data:supplierType:query', '#', 'admin', sysdate()
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2491);
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
SELECT 2492, '新增', 2490, 2, '', NULL, 1, 0, 'F', '0', '0', 'data:supplierType:add', '#', 'admin', sysdate()
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2492);
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
SELECT 2493, '修改', 2490, 3, '', NULL, 1, 0, 'F', '0', '0', 'data:supplierType:edit', '#', 'admin', sysdate()
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2493);
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
SELECT 2494, '删除', 2490, 4, '', NULL, 1, 0, 'F', '0', '0', 'data:supplierType:remove', '#', 'admin', sysdate()
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2494);
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
SELECT 2495, '导出', 2490, 5, '', NULL, 1, 0, 'F', '0', '0', 'data:supplierType:export', '#', 'admin', sysdate()
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2495);
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
SELECT 2496, '启停', 2490, 6, '', NULL, 1, 0, 'F', '0', '0', 'data:supplierType:changeStatus', '#', 'admin', sysdate()
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2496);
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT 1, m.menu_id FROM (
SELECT 2490 AS menu_id UNION SELECT 2491 UNION SELECT 2492 UNION SELECT 2493
UNION SELECT 2494 UNION SELECT 2495 UNION SELECT 2496
) m
WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = 1 AND rm.menu_id = m.menu_id);
@@ -1,11 +1,40 @@
-- 客户、供应商主表增加合同开始时间、合同结束时间
-- 已存在的库执行本脚本;列已存在时不要重复执行
-- 客户主表增加合同开始时间、合同结束时间
-- 供应商只增加合同结束时间;合同开始时间与原有合作开始日期重复,已有列则删除
-- 客户列已存在时不要重复执行前面的 ALTER
SET NAMES utf8mb4;
-- 先去掉供应商上后加的合同开始时间,避免后续语句失败时这一列还留着
SET @has_supplier_contract_start := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'sup_supplier'
AND COLUMN_NAME = 'contract_start_date'
);
SET @drop_supplier_contract_start := IF(
@has_supplier_contract_start > 0,
'ALTER TABLE sup_supplier DROP COLUMN contract_start_date',
'SELECT 1'
);
PREPARE drop_supplier_contract_start_stmt FROM @drop_supplier_contract_start;
EXECUTE drop_supplier_contract_start_stmt;
DEALLOCATE PREPARE drop_supplier_contract_start_stmt;
ALTER TABLE ctr_customer
ADD COLUMN contract_start_date date DEFAULT NULL COMMENT '合同开始时间' AFTER credit_ed,
ADD COLUMN contract_end_date date DEFAULT NULL COMMENT '合同结束时间' AFTER contract_start_date;
ALTER TABLE sup_supplier
ADD COLUMN contract_start_date date DEFAULT NULL COMMENT '合同开始时间' AFTER cooperation_start_date,
ADD COLUMN contract_end_date date DEFAULT NULL COMMENT '合同结束时间' AFTER contract_start_date;
-- 供应商原有合作开始日期,只补合同结束时间(已有则跳过)
SET @has_supplier_contract_end := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'sup_supplier'
AND COLUMN_NAME = 'contract_end_date'
);
SET @add_supplier_contract_end := IF(
@has_supplier_contract_end = 0,
'ALTER TABLE sup_supplier ADD COLUMN contract_end_date date DEFAULT NULL COMMENT ''合同结束时间'' AFTER cooperation_start_date',
'SELECT 1'
);
PREPARE add_supplier_contract_end_stmt FROM @add_supplier_contract_end;
EXECUTE add_supplier_contract_end_stmt;
DEALLOCATE PREPARE add_supplier_contract_end_stmt;