-- ============================================================ -- 电力数转增强 - 第七阶段(工艺设计)数据库变更 -- 适用:MySQL 8.4+ -- 说明:工序电力工艺分类 + 应急处置预案新表 + 字典 + 菜单(幂等) -- 注意:本脚本不包含 tenant_id(项目未启用多租户) -- ============================================================ -- ---------- 1. 工序表:电力工艺分类 ---------- SET @col = (SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'mes_pro_process' AND column_name = 'type'); SET @sql = IF(@col = 0, 'ALTER TABLE mes_pro_process ADD COLUMN type INT NULL COMMENT ''电力工艺分类(字典 mes_pro_process_type)'' AFTER name', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- ---------- 2. 应急处置预案表 ---------- CREATE TABLE IF NOT EXISTS `mes_pro_emergency_plan` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号', `code` varchar(64) NOT NULL COMMENT '预案编码', `name` varchar(200) DEFAULT NULL COMMENT '预案名称', `plan_type` tinyint DEFAULT NULL COMMENT '预案类型(1=停电,2=设备故障,3=火灾,4=自然灾害,5=其他)', `content` text COMMENT '处置内容', `org_unit` varchar(200) DEFAULT NULL COMMENT '责任单位/部门', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0=草稿,10=已发布)', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `creator` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_code` (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='MES 应急处置预案'; -- ---------- 3. 字典:电力工艺分类 / 预案类型 ---------- INSERT INTO `system_dict_type` (`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES ('MES 电力工艺分类', 'mes_pro_process_type', 0, 'MES 电力工艺分类(1=电网调度,2=变电运维,3=线路巡检,4=发电运维,5=储能充放电)', '1', NOW(), '1', NOW(), b'0', NULL), ('MES 应急处置预案类型', 'mes_pro_emergency_plan_type', 0, 'MES 应急处置预案类型(1=停电,2=设备故障,3=火灾,4=自然灾害,5=其他)', '1', NOW(), '1', NOW(), b'0', NULL) ON DUPLICATE KEY UPDATE `name` = VALUES(`name`); INSERT INTO `system_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, '电网调度', '1', 'mes_pro_process_type', 0, 'primary', '', '电网调度工艺', '1', NOW(), '1', NOW(), b'0'), (2, '变电运维', '2', 'mes_pro_process_type', 0, 'warning', '', '变电运维工艺', '1', NOW(), '1', NOW(), b'0'), (3, '线路巡检', '3', 'mes_pro_process_type', 0, 'info', '', '线路巡检工艺', '1', NOW(), '1', NOW(), b'0'), (4, '发电运维', '4', 'mes_pro_process_type', 0, 'success', '', '发电运维工艺', '1', NOW(), '1', NOW(), b'0'), (5, '储能充放电', '5', 'mes_pro_process_type', 0, 'danger', '', '储能充放电工艺', '1', NOW(), '1', NOW(), b'0'), (1, '停电', '1', 'mes_pro_emergency_plan_type', 0, 'danger', '', '停电处置', '1', NOW(), '1', NOW(), b'0'), (2, '设备故障', '2', 'mes_pro_emergency_plan_type', 0, 'warning', '', '设备故障处置', '1', NOW(), '1', NOW(), b'0'), (3, '火灾', '3', 'mes_pro_emergency_plan_type', 0, 'error', '', '火灾处置', '1', NOW(), '1', NOW(), b'0'), (4, '自然灾害', '4', 'mes_pro_emergency_plan_type', 0, 'processing', '', '自然灾害处置', '1', NOW(), '1', NOW(), b'0'), (5, '其他', '5', 'mes_pro_emergency_plan_type', 0, 'default', '', '其他应急', '1', NOW(), '1', NOW(), b'0') ON DUPLICATE KEY UPDATE `label` = VALUES(`label`), `sort` = VALUES(`sort`); -- ---------- 4. 菜单:应急处置预案(父菜单 6809 工艺设计) ---------- INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1065235, '应急处置预案', '', 2, 99, 6809, 'emergency-plan', 'ep:warning', 'mes/pro/emergencyplan/index', 'MesProEmergencyPlan', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), (1065236, '应急预案查询', 'mes:pro-emergency-plan:query', 3, 1, 1065235, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), (1065237, '应急预案创建', 'mes:pro-emergency-plan:create', 3, 2, 1065235, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), (1065238, '应急预案更新', 'mes:pro-emergency-plan:update', 3, 3, 1065235, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'), (1065239, '应急预案删除', 'mes:pro-emergency-plan:delete', 3, 4, 1065235, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0') ON DUPLICATE KEY UPDATE `name` = VALUES(`name`); -- 角色授权(普通角色2 / 租户管理员109、111) INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) SELECT r.role_id, m.menu_id, '1', NOW(), '1', NOW(), b'0', 1 FROM (SELECT 2 AS role_id UNION ALL SELECT 109 UNION ALL SELECT 111) r CROSS JOIN (SELECT 1065235 AS menu_id UNION ALL SELECT 1065236 UNION ALL SELECT 1065237 UNION ALL SELECT 1065238 UNION ALL SELECT 1065239) m LEFT JOIN `system_role_menu` existing ON existing.role_id = r.role_id AND existing.menu_id = m.menu_id AND existing.deleted = b'0' WHERE existing.id IS NULL;