-- 补齐缺失的光伏电站管理 / 光伏逆变器管理菜单及按钮权限。 -- 背景:20260807_energy_storage_monitoring_menu.sql 只对这两个菜单做了改名 UPDATE, -- 但菜单本身从未 INSERT(光伏相关页面/路由一直存在),导致角色编辑里看不到、 -- 后端权限数组里也没有对应 perms,工作台光伏看板按权限展示时永远不显示。 -- 参照 20260725_device_management_energy_storage_menu.sql 模板,幂等可重复执行。 -- 光储监控设备管理目录(原设备管理,path = /deviceManagement) SET @device_monitoring_id := ( SELECT menu_id FROM sys_menu WHERE parent_id = 0 AND menu_type = 'M' AND (path = '/deviceManagement' OR perms = '/deviceManagement') ORDER BY menu_id LIMIT 1 ); -- 1. 光伏电站管理(order 2,与 20260807 改名脚本的排序一致) INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT '光伏电站管理', @device_monitoring_id, 2, '/deviceManagement/photovoltaicStation/list', 'deviceManagement/photovoltaicStation', NULL, 1, 0, 'C', '0', 0, '/deviceManagement/photovoltaicStation', '#', 'admin', NOW(), '光伏电站管理页面' WHERE @device_monitoring_id IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM sys_menu WHERE parent_id = @device_monitoring_id AND (path = '/deviceManagement/photovoltaicStation/list' OR perms = '/deviceManagement/photovoltaicStation') ); SET @photovoltaic_station_id := ( SELECT menu_id FROM sys_menu WHERE parent_id = @device_monitoring_id AND (path = '/deviceManagement/photovoltaicStation/list' OR perms = '/deviceManagement/photovoltaicStation') ORDER BY menu_id LIMIT 1 ); INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT '光伏查询', @photovoltaic_station_id, 1, '', NULL, NULL, 1, 0, 'F', '0', 0, '/deviceManagement/photovoltaicStation/select', '#', 'admin', NOW(), '光伏电站查询按钮权限' WHERE @photovoltaic_station_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE parent_id = @photovoltaic_station_id AND perms = '/deviceManagement/photovoltaicStation/select'); INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT '光伏新增', @photovoltaic_station_id, 2, '', NULL, NULL, 1, 0, 'F', '0', 0, '/deviceManagement/photovoltaicStation/add', '#', 'admin', NOW(), '光伏电站新增按钮权限' WHERE @photovoltaic_station_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE parent_id = @photovoltaic_station_id AND perms = '/deviceManagement/photovoltaicStation/add'); INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT '光伏删除', @photovoltaic_station_id, 3, '', NULL, NULL, 1, 0, 'F', '0', 0, '/deviceManagement/photovoltaicStation/del', '#', 'admin', NOW(), '光伏电站删除按钮权限' WHERE @photovoltaic_station_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE parent_id = @photovoltaic_station_id AND perms = '/deviceManagement/photovoltaicStation/del'); -- 2. 光伏逆变器管理(order 4) INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT '光伏逆变器管理', @device_monitoring_id, 4, '/deviceManagement/photovoltaicInverter/list', 'deviceManagement/photovoltaicInverter', NULL, 1, 0, 'C', '0', 0, '/deviceManagement/photovoltaicInverter', '#', 'admin', NOW(), '光伏逆变器管理页面' WHERE @device_monitoring_id IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM sys_menu WHERE parent_id = @device_monitoring_id AND (path = '/deviceManagement/photovoltaicInverter/list' OR perms = '/deviceManagement/photovoltaicInverter') ); SET @photovoltaic_inverter_id := ( SELECT menu_id FROM sys_menu WHERE parent_id = @device_monitoring_id AND (path = '/deviceManagement/photovoltaicInverter/list' OR perms = '/deviceManagement/photovoltaicInverter') ORDER BY menu_id LIMIT 1 ); INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT '逆变器查询', @photovoltaic_inverter_id, 1, '', NULL, NULL, 1, 0, 'F', '0', 0, '/deviceManagement/photovoltaicInverter/select', '#', 'admin', NOW(), '光伏逆变器查询按钮权限' WHERE @photovoltaic_inverter_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE parent_id = @photovoltaic_inverter_id AND perms = '/deviceManagement/photovoltaicInverter/select'); INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT '逆变器新增', @photovoltaic_inverter_id, 2, '', NULL, NULL, 1, 0, 'F', '0', 0, '/deviceManagement/photovoltaicInverter/add', '#', 'admin', NOW(), '光伏逆变器新增按钮权限' WHERE @photovoltaic_inverter_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE parent_id = @photovoltaic_inverter_id AND perms = '/deviceManagement/photovoltaicInverter/add'); INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT '逆变器修改', @photovoltaic_inverter_id, 3, '', NULL, NULL, 1, 0, 'F', '0', 0, '/deviceManagement/photovoltaicInverter/update', '#', 'admin', NOW(), '光伏逆变器修改按钮权限' WHERE @photovoltaic_inverter_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE parent_id = @photovoltaic_inverter_id AND perms = '/deviceManagement/photovoltaicInverter/update'); INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT '逆变器删除', @photovoltaic_inverter_id, 4, '', NULL, NULL, 1, 0, 'F', '0', 0, '/deviceManagement/photovoltaicInverter/del', '#', 'admin', NOW(), '光伏逆变器删除按钮权限' WHERE @photovoltaic_inverter_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE parent_id = @photovoltaic_inverter_id AND perms = '/deviceManagement/photovoltaicInverter/del'); -- 3. 按 20260807 规范重排目录下子菜单顺序: -- 1=监控摄像头列表 2=光伏电站管理 3=储能电站管理 4=光伏逆变器管理 5=储能能量链管理 UPDATE sys_menu SET order_num = CASE path WHEN '/deviceManagement/list' THEN 1 WHEN '/deviceManagement/photovoltaicStation/list' THEN 2 WHEN '/deviceManagement/energyStorage/list' THEN 3 WHEN '/deviceManagement/photovoltaicInverter/list' THEN 4 WHEN '/deviceManagement/energyChain/list' THEN 5 ELSE order_num END, update_time = NOW() WHERE parent_id = @device_monitoring_id; -- 4. 授权:已拥有"光储监控设备管理"目录的角色,同步获得两个光伏菜单 INSERT IGNORE INTO sys_role_menu (role_id, menu_id) SELECT DISTINCT role_id, m.menu_id FROM sys_role_menu r JOIN sys_menu m ON m.parent_id = @device_monitoring_id AND m.path IN ('/deviceManagement/photovoltaicStation/list', '/deviceManagement/photovoltaicInverter/list') WHERE r.menu_id = @device_monitoring_id; -- 5. 管理员角色(role_id = 1)默认拥有 INSERT IGNORE INTO sys_role_menu (role_id, menu_id) SELECT 1, menu_id FROM sys_menu WHERE parent_id = @device_monitoring_id AND path IN ('/deviceManagement/photovoltaicStation/list', '/deviceManagement/photovoltaicInverter/list');