铜陵经侦
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
3.6 KiB

1 month ago
-- 一级菜单结构重组(PostgreSQL / KingBase)
-- 保留顶层:接报案中心、案件管理、涉案资金、涉案财物、卷宗管理、审议流程、数据大屏、系统设置
-- 其余 parent_id=0 的目录/页面移入「系统设置」下成为二级菜单
BEGIN;
DO $$
DECLARE
v_system_settings_id BIGINT;
v_max_sort INT;
v_next_sort INT;
r RECORD;
v_moved INT := 0;
BEGIN
SELECT menu_id INTO v_system_settings_id
FROM t_menu
WHERE menu_name = '系统设置' AND deleted_flag = 0
ORDER BY menu_id
LIMIT 1;
IF v_system_settings_id IS NULL THEN
INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component,
frame_flag, cache_flag, visible_flag, disabled_flag,
perms_type, icon, deleted_flag, create_user_id, create_time, update_time)
VALUES ('系统设置', 1, 0, 99, '/setting', NULL,
false, false, true, false, 1, 'SettingOutlined', false, 1, NOW(), NOW())
RETURNING menu_id INTO v_system_settings_id;
END IF;
SELECT COALESCE(MAX(sort), 0) INTO v_max_sort
FROM t_menu
WHERE parent_id = v_system_settings_id AND deleted_flag = 0;
v_next_sort := v_max_sort + 10;
-- 卷宗管理提升为一级菜单(位于涉案财物之后)
UPDATE t_menu
SET parent_id = 0, sort = 5, update_time = NOW()
WHERE menu_name = '卷宗管理' AND deleted_flag = 0 AND menu_type = 2;
FOR r IN
SELECT menu_id, menu_name
FROM t_menu
WHERE parent_id = 0
AND deleted_flag = 0
AND menu_type IN (1, 2)
AND menu_name NOT IN (
'接报案中心', '案件管理', '涉案资金', '涉案财物', '卷宗管理',
'审议流程', '数据大屏', '系统设置'
)
ORDER BY sort NULLS LAST, menu_id
LOOP
UPDATE t_menu
SET parent_id = v_system_settings_id,
sort = v_next_sort,
update_time = NOW()
WHERE menu_id = r.menu_id;
RAISE NOTICE '已移入系统设置: % (menu_id=%)', r.menu_name, r.menu_id;
v_next_sort := v_next_sort + 10;
v_moved := v_moved + 1;
END LOOP;
UPDATE t_menu SET sort = 1, update_time = NOW() WHERE menu_name = '接报案中心' AND parent_id = 0 AND menu_type = 1 AND deleted_flag = 0;
UPDATE t_menu SET sort = 2, update_time = NOW() WHERE menu_name = '案件管理' AND parent_id = 0 AND menu_type = 1 AND deleted_flag = 0;
UPDATE t_menu SET sort = 3, update_time = NOW() WHERE menu_name = '涉案资金' AND parent_id = 0 AND menu_type = 1 AND deleted_flag = 0;
UPDATE t_menu SET sort = 4, update_time = NOW() WHERE menu_name = '涉案财物' AND parent_id = 0 AND menu_type = 1 AND deleted_flag = 0;
UPDATE t_menu SET sort = 5, update_time = NOW() WHERE menu_name = '卷宗管理' AND parent_id = 0 AND menu_type = 2 AND deleted_flag = 0;
UPDATE t_menu SET sort = 6, update_time = NOW() WHERE menu_name = '审议流程' AND parent_id = 0 AND menu_type = 1 AND deleted_flag = 0;
UPDATE t_menu SET sort = 7, update_time = NOW() WHERE menu_name = '数据大屏' AND parent_id = 0 AND menu_type = 1 AND deleted_flag = 0;
UPDATE t_menu SET sort = 99, update_time = NOW() WHERE menu_name = '系统设置' AND parent_id = 0 AND menu_type = 1 AND deleted_flag = 0;
RAISE NOTICE '一级菜单重组完成,移入系统设置 % 项', v_moved;
END $$;
COMMIT;
-- 验证顶层菜单
SELECT menu_id, menu_name, sort, parent_id
FROM t_menu
WHERE parent_id = 0 AND deleted_flag = 0 AND menu_type IN (1, 2)
ORDER BY sort, menu_id;