Files
ShiErFeng/shierfeng-fastapi-backend/sql/patches/20261009_master_excel_mysql.sql
T

76 lines
4.5 KiB
SQL

-- 基础资料导入导出:MySQL 8 单次菜单增量。
-- 执行前必须停写并完成备份。由 DBA 审核后在明确选定的目标库单次执行。
-- 本脚本仅随代码交付,不在应用启动时执行;本次开发未连接数据库、未运行 SQL。
-- 权限只新增 sys_menu,不写 sys_role_menu;上线后由管理员按现场职责手动授权。
DELIMITER $$
CREATE PROCEDURE migrate_master_excel_20261009()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
RESIGNAL;
END;
IF DATABASE() IS NULL THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Select the target database before migration';
END IF;
IF SUBSTRING_INDEX(VERSION(), '.', 1) <> '8' THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'MySQL 8 is required';
END IF;
IF EXISTS (
SELECT 1 FROM sys_menu
WHERE menu_id BETWEEN 1120 AND 1133
OR perms IN (
'master:strain:import', 'master:strain:export',
'master:customer:import', 'master:customer:export',
'master:site:import', 'master:site:export',
'master:line:import', 'master:line:export',
'master:warehouse:import', 'master:warehouse:export',
'master:pallet:import', 'master:pallet:export',
'master:tunnel:import', 'master:tunnel:export'
)
) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Master excel menu ids or permissions already exist';
END IF;
IF EXISTS (SELECT 1 FROM sys_role_menu WHERE menu_id BETWEEN 1120 AND 1133) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Orphan role grants for master excel menus must be reviewed first';
END IF;
IF (SELECT COUNT(*) FROM sys_menu
WHERE (menu_id = 502 AND perms = 'master:strain:list' AND menu_type = 'C')
OR (menu_id = 503 AND perms = 'master:customer:list' AND menu_type = 'C')
OR (menu_id = 504 AND perms = 'master:site:list' AND menu_type = 'C')
OR (menu_id = 505 AND perms = 'master:line:list' AND menu_type = 'C')
OR (menu_id = 506 AND perms = 'master:warehouse:list' AND menu_type = 'C')
OR (menu_id = 507 AND perms = 'master:pallet:list' AND menu_type = 'C')
OR (menu_id = 520 AND perms = 'master:tunnel:list' AND menu_type = 'C')) <> 7 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Master parent menus do not match the expected contract';
END IF;
START TRANSACTION;
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, update_by, update_time, remark
) VALUES
(1120, '菌种导入', 502, 4, '', '', '', '', 1, 0, 'F', '0', '0', 'master:strain:import', '#', 'admin', SYSDATE(), '', NULL, ''),
(1121, '菌种导出', 502, 5, '', '', '', '', 1, 0, 'F', '0', '0', 'master:strain:export', '#', 'admin', SYSDATE(), '', NULL, ''),
(1122, '客户导入', 503, 4, '', '', '', '', 1, 0, 'F', '0', '0', 'master:customer:import', '#', 'admin', SYSDATE(), '', NULL, ''),
(1123, '客户导出', 503, 5, '', '', '', '', 1, 0, 'F', '0', '0', 'master:customer:export', '#', 'admin', SYSDATE(), '', NULL, ''),
(1124, '现场导入', 504, 6, '', '', '', '', 1, 0, 'F', '0', '0', 'master:site:import', '#', 'admin', SYSDATE(), '', NULL, ''),
(1125, '现场导出', 504, 7, '', '', '', '', 1, 0, 'F', '0', '0', 'master:site:export', '#', 'admin', SYSDATE(), '', NULL, ''),
(1126, '产线导入', 505, 4, '', '', '', '', 1, 0, 'F', '0', '0', 'master:line:import', '#', 'admin', SYSDATE(), '', NULL, ''),
(1127, '产线导出', 505, 5, '', '', '', '', 1, 0, 'F', '0', '0', 'master:line:export', '#', 'admin', SYSDATE(), '', NULL, ''),
(1128, '仓库导入', 506, 6, '', '', '', '', 1, 0, 'F', '0', '0', 'master:warehouse:import', '#', 'admin', SYSDATE(), '', NULL, ''),
(1129, '仓库导出', 506, 7, '', '', '', '', 1, 0, 'F', '0', '0', 'master:warehouse:export', '#', 'admin', SYSDATE(), '', NULL, ''),
(1130, '托盘导入', 507, 6, '', '', '', '', 1, 0, 'F', '0', '0', 'master:pallet:import', '#', 'admin', SYSDATE(), '', NULL, ''),
(1131, '托盘导出', 507, 7, '', '', '', '', 1, 0, 'F', '0', '0', 'master:pallet:export', '#', 'admin', SYSDATE(), '', NULL, ''),
(1132, '隧道导入', 520, 4, '', '', '', '', 1, 0, 'F', '0', '0', 'master:tunnel:import', '#', 'admin', SYSDATE(), '', NULL, ''),
(1133, '隧道导出', 520, 5, '', '', '', '', 1, 0, 'F', '0', '0', 'master:tunnel:export', '#', 'admin', SYSDATE(), '', NULL, '');
COMMIT;
END$$
DELIMITER ;
CALL migrate_master_excel_20261009();
DROP PROCEDURE migrate_master_excel_20261009;