-- ============================================================================= -- 任务编号 2026092005 增加"中期功率预测"菜单(PostgreSQL, 幂等) -- 依赖表: data_medium_term_power_forecast_* (DDL 见 20260924_中期预报表.sql) -- ============================================================================= -- 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, update_by, update_time, remark) SELECT nextval(pg_get_serial_sequence('sys_menu', 'menu_id')), '中期功率预测', (SELECT menu_id FROM sys_menu t WHERE t.menu_name = '功率预测'), 5, 'medium-term-power', 'ufo/electricity/forecast/MediumTermPowerForecasting', '', 'MediumTermPowerForecasting', 1, 0, 'C', '0', '0', 'electricity:forecast:mediumtermpower', 'area-chart', 'admin', now(), '', NULL, '中期功率预测菜单' WHERE NOT EXISTS (SELECT 1 FROM sys_menu t WHERE t.menu_name = '中期功率预测'); INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, (SELECT menu_id FROM sys_menu t WHERE t.menu_name = '中期功率预测') WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu t WHERE t.role_id = 1 AND t.menu_id = (SELECT menu_id FROM sys_menu t WHERE t.menu_name = '中期功率预测')); -- 2. 中期预测日报(挂在"数据报表"菜单下) 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) SELECT nextval(pg_get_serial_sequence('sys_menu', 'menu_id')), '中期预测日报', (SELECT menu_id FROM sys_menu t WHERE t.menu_name = '数据报表'), 10, 'medium-term-forecast-daily', 'ufo/electricity/datareport/mediumTermForecastDailyReport', '', 'MediumTermForecastDailyReport', 1, 0, 'C', '0', '0', 'data:mediumTermForecastReport:daily', 'StockOutlined', 'admin', now(), '', NULL, '中期预测日报页面' WHERE NOT EXISTS (SELECT 1 FROM sys_menu t WHERE t.menu_name = '中期预测日报'); INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, (SELECT menu_id FROM sys_menu t WHERE t.menu_name = '中期预测日报') WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu t WHERE t.role_id = 1 AND t.menu_id = (SELECT menu_id FROM sys_menu t WHERE t.menu_name = '中期预测日报')); -- 3. 中期预测月报 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) SELECT nextval(pg_get_serial_sequence('sys_menu', 'menu_id')), '中期预测月报', (SELECT menu_id FROM sys_menu t WHERE t.menu_name = '数据报表'), 11, 'medium-term-forecast-monthly', 'ufo/electricity/datareport/mediumTermForecastMonthlyReport', '', 'MediumTermForecastMonthlyReport', 1, 0, 'C', '0', '0', 'data:mediumTermForecastReport:monthly', 'LineChartOutlined', 'admin', now(), '', NULL, '中期预测月报页面' WHERE NOT EXISTS (SELECT 1 FROM sys_menu t WHERE t.menu_name = '中期预测月报'); INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, (SELECT menu_id FROM sys_menu t WHERE t.menu_name = '中期预测月报') WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu t WHERE t.role_id = 1 AND t.menu_id = (SELECT menu_id FROM sys_menu t WHERE t.menu_name = '中期预测月报')); -- 4. 中期预测年报 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) SELECT nextval(pg_get_serial_sequence('sys_menu', 'menu_id')), '中期预测年报', (SELECT menu_id FROM sys_menu t WHERE t.menu_name = '数据报表'), 12, 'medium-term-forecast-yearly', 'ufo/electricity/datareport/mediumTermForecastYearlyReport', '', 'MediumTermForecastYearlyReport', 1, 0, 'C', '0', '0', 'data:mediumTermForecastReport:yearly', 'AreaChartOutlined', 'admin', now(), '', NULL, '中期预测年报页面' WHERE NOT EXISTS (SELECT 1 FROM sys_menu t WHERE t.menu_name = '中期预测年报'); INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, (SELECT menu_id FROM sys_menu t WHERE t.menu_name = '中期预测年报') WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu t WHERE t.role_id = 1 AND t.menu_id = (SELECT menu_id FROM sys_menu t WHERE t.menu_name = '中期预测年报'));