-- ============================================= -- 城市地下管网预警管理系统数据库表设计 -- ============================================= -- 1. 预警信息表 DROP TABLE IF EXISTS `early_warning`; CREATE TABLE `early_warning` ( `warning_id` varchar(64) NOT NULL COMMENT '预警ID(主键)', `warning_no` varchar(64) NOT NULL COMMENT '预警编号', `warning_name` varchar(256) NOT NULL COMMENT '预警名称', `warning_type` varchar(64) NOT NULL COMMENT '预警类型', `warning_level` varchar(32) NOT NULL COMMENT '预警级别(1-最高 2-次高 3-一般 4-常态;驾驶舱展示色为1红2黄3蓝4绿)', `warning_special` varchar(128) DEFAULT NULL COMMENT '预警专项', `location` varchar(512) DEFAULT NULL COMMENT '预警位置', `longitude` decimal(15,10) DEFAULT NULL COMMENT '经度', `latitude` decimal(15,10) DEFAULT NULL COMMENT '纬度', `ownership_unit` varchar(256) DEFAULT NULL COMMENT '权属单位', `publisher` varchar(128) DEFAULT NULL COMMENT '发布人', `publish_time` datetime DEFAULT NULL COMMENT '发布时间', `handler` varchar(128) DEFAULT NULL COMMENT '处置人', `status` varchar(32) NOT NULL DEFAULT 'DRAFT' COMMENT '状态(DRAFT-草稿 PENDING-待办 PROCESSING-处置中 RELEASED-已发布 HANDLED-已处置 CLOSED-已解除)', `warning_content` text COMMENT '预警内容描述', `process_instance_id` varchar(128) DEFAULT NULL COMMENT '工作流实例ID', `create_by` varchar(128) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(128) DEFAULT NULL COMMENT '更新人', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `remark` varchar(512) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`warning_id`), UNIQUE KEY `uk_warning_no` (`warning_no`), KEY `idx_warning_type` (`warning_type`), KEY `idx_warning_level` (`warning_level`), KEY `idx_status` (`status`), KEY `idx_publish_time` (`publish_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警信息表'; -- 2. 报警预警关联表 DROP TABLE IF EXISTS `alarm_warning_rel`; CREATE TABLE `alarm_warning_rel` ( `rel_id` varchar(64) NOT NULL COMMENT '关联ID', `warning_id` varchar(64) NOT NULL COMMENT '预警ID', `alarm_id` varchar(64) NOT NULL COMMENT '报警ID', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`rel_id`), KEY `idx_warning_id` (`warning_id`), KEY `idx_alarm_id` (`alarm_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报警预警关联表'; -- 3. 预警报告附件表 DROP TABLE IF EXISTS `warning_attachment`; CREATE TABLE `warning_attachment` ( `attachment_id` varchar(64) NOT NULL COMMENT '附件ID', `warning_id` varchar(64) NOT NULL COMMENT '预警ID', `attachment_name` varchar(256) NOT NULL COMMENT '附件名称', `attachment_url` varchar(512) NOT NULL COMMENT '附件地址', `attachment_type` varchar(255) DEFAULT NULL COMMENT '附件类型(MIME,标准 MIME 可达 70+ 字符)', `attachment_size` bigint DEFAULT NULL COMMENT '附件大小(字节)', `create_by` varchar(128) DEFAULT NULL COMMENT '上传人', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间', PRIMARY KEY (`attachment_id`), KEY `idx_warning_id` (`warning_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警报告附件表'; -- 4. 预警处置记录表 DROP TABLE IF EXISTS `warning_disposal`; CREATE TABLE `warning_disposal` ( `disposal_id` varchar(64) NOT NULL COMMENT '处置记录ID', `warning_id` varchar(64) NOT NULL COMMENT '预警ID', `disposal_type` varchar(32) NOT NULL COMMENT '处置类型(UPGRADE-升级 DOWNGRADE-降级 RESOLVE-解除 RETURN-退回 SUPERVISION-督办 INSTRUCTION-批示)', `old_level` varchar(32) DEFAULT NULL COMMENT '原预警级别', `new_level` varchar(32) DEFAULT NULL COMMENT '新预警级别', `disposal_user` varchar(128) NOT NULL COMMENT '处置人', `disposal_content` text COMMENT '处置内容/意见', `supervision_user` varchar(128) DEFAULT NULL COMMENT '督办人员', `supervision_content` text COMMENT '督办意见', `notification_type` varchar(32) DEFAULT NULL COMMENT '通知方式(SMS-短信 EMAIL-邮件 APP-APP通知)', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '处置时间', PRIMARY KEY (`disposal_id`), KEY `idx_warning_id` (`warning_id`), KEY `idx_disposal_type` (`disposal_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警处置记录表'; -- 5. 预警督办表 DROP TABLE IF EXISTS `warning_supervision`; CREATE TABLE `warning_supervision` ( `supervision_id` varchar(64) NOT NULL COMMENT '督办ID', `warning_id` varchar(64) NOT NULL COMMENT '预警ID', `supervision_user` varchar(128) NOT NULL COMMENT '督办人员', `supervision_content` text NOT NULL COMMENT '督办意见', `notification_type` varchar(32) NOT NULL COMMENT '通知方式', `notification_content` text COMMENT '通知内容', `attachment_url` varchar(512) DEFAULT NULL COMMENT '附件地址', `create_by` varchar(128) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`supervision_id`), KEY `idx_warning_id` (`warning_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警督办表'; -- 6. 领导批示表 DROP TABLE IF EXISTS `leader_instruction`; CREATE TABLE `leader_instruction` ( `instruction_id` varchar(64) NOT NULL COMMENT '批示ID', `warning_id` varchar(64) NOT NULL COMMENT '预警ID', `leader_name` varchar(128) NOT NULL COMMENT '领导姓名', `instruction_content` text NOT NULL COMMENT '批示内容', `sms_receivers` text COMMENT '短信接收人(逗号分隔)', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '批示时间', PRIMARY KEY (`instruction_id`), KEY `idx_warning_id` (`warning_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='领导批示表'; -- 7. 预警待办表(为了快速查询待办已办) DROP TABLE IF EXISTS `warning_todo`; CREATE TABLE `warning_todo` ( `todo_id` varchar(64) NOT NULL COMMENT '待办ID', `warning_id` varchar(64) NOT NULL COMMENT '预警ID', `user_id` varchar(64) NOT NULL COMMENT '用户ID', `user_name` varchar(128) DEFAULT NULL COMMENT '用户姓名', `todo_type` varchar(32) NOT NULL COMMENT '待办类型(TODO-待办 DONE-已办)', `read_status` varchar(32) DEFAULT 'UNREAD' COMMENT '阅读状态(UNREAD-未读 READ-已读)', `task_name` varchar(256) DEFAULT NULL COMMENT '任务名称', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `complete_time` datetime DEFAULT NULL COMMENT '完成时间', PRIMARY KEY (`todo_id`), KEY `idx_user_id` (`user_id`), KEY `idx_warning_id` (`warning_id`), KEY `idx_todo_type` (`todo_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警待办表'; -- ============================================= -- 初始化数据 -- ============================================= -- 初始化预警类型字典 INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (100, '预警类型', 'warning_type', '0', 'admin', NOW(), '', NULL, '预警类型列表'); INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (100, 1, '供水管网预警', 'WATER_PIPE', 'warning_type', '', 'primary', 'N', '0', 'admin', NOW(), '', NULL, '供水管网预警'), (101, 2, '排水管网预警', 'SEWER_PIPE', 'warning_type', '', 'primary', 'N', '0', 'admin', NOW(), '', NULL, '排水管网预警'), (102, 3, '燃气管网预警', 'GAS_PIPE', 'warning_type', '', 'warning', 'N', '0', 'admin', NOW(), '', NULL, '燃气管网预警'), (103, 4, '热力管网预警', 'HEAT_PIPE', 'warning_type', '', 'warning', 'N', '0', 'admin', NOW(), '', NULL, '热力管网预警'), (104, 5, '电力管网预警', 'ELECTRIC_PIPE', 'warning_type', '', 'danger', 'N', '0', 'admin', NOW(), '', NULL, '电力管网预警'), (105, 6, '通信管网预警', 'COMMUNICATION_PIPE', 'warning_type', '', 'info', 'N', '0', 'admin', NOW(), '', NULL, '通信管网预警'); -- 初始化设备类型字典 INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (101, '设备类型', 'equipment_type', '0', 'admin', NOW(), '', NULL, '设备类型列表'); INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (106, 1, '压力传感器', 'PRESSURE', 'equipment_type', '', 'primary', 'N', '0', 'admin', NOW(), '', NULL, '压力传感器'), (107, 2, '流量传感器', 'FLOW', 'equipment_type', '', 'primary', 'N', '0', 'admin', NOW(), '', NULL, '流量传感器'), (108, 3, '液位传感器', 'LEVEL', 'equipment_type', '', 'warning', 'N', '0', 'admin', NOW(), '', NULL, '液位传感器'), (109, 4, '温度传感器', 'TEMPERATURE', 'equipment_type', '', 'info', 'N', '0', 'admin', NOW(), '', NULL, '温度传感器'), (110, 5, '气体传感器', 'GAS', 'equipment_type', '', 'danger', 'N', '0', 'admin', NOW(), '', NULL, '气体传感器'), (111, 6, '阀门控制器', 'VALVE', 'equipment_type', '', 'default', 'N', '0', 'admin', NOW(), '', NULL, '阀门控制器'), (112, 7, '摄像头', 'CAMERA', 'equipment_type', '', 'default', 'N', '0', 'admin', NOW(), '', NULL, '摄像头'); -- 10. 预警归档表 DROP TABLE IF EXISTS `warning_archive`; CREATE TABLE `warning_archive` ( `archive_id` varchar(64) NOT NULL COMMENT '归档ID', `warning_id` varchar(64) NOT NULL COMMENT '预警ID', `archive_no` varchar(64) NOT NULL COMMENT '归档编号', `warning_no` varchar(64) NOT NULL COMMENT '预警编号', `warning_name` varchar(256) NOT NULL COMMENT '预警名称', `warning_type` varchar(64) NOT NULL COMMENT '预警类型', `warning_level` varchar(32) NOT NULL COMMENT '预警级别', `location` varchar(512) DEFAULT NULL COMMENT '预警位置', `longitude` decimal(15,10) DEFAULT NULL COMMENT '经度', `latitude` decimal(15,10) DEFAULT NULL COMMENT '纬度', `ownership_unit` varchar(256) DEFAULT NULL COMMENT '权属单位', `publisher` varchar(128) DEFAULT NULL COMMENT '发布人', `publish_time` datetime DEFAULT NULL COMMENT '发布时间', `handler` varchar(128) DEFAULT NULL COMMENT '处置人', `warning_content` text COMMENT '预警内容', `archive_content` text COMMENT '归档内容', `archive_status` varchar(32) DEFAULT NULL COMMENT '归档状态', `create_by` varchar(128) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`archive_id`), UNIQUE KEY `uk_warning_id` (`warning_id`), KEY `idx_archive_no` (`archive_no`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警归档表'; -- 11. 预警清单表 DROP TABLE IF EXISTS `warning_item`; CREATE TABLE `warning_item` ( `item_id` varchar(64) NOT NULL COMMENT '事项ID', `item_code` varchar(64) NOT NULL COMMENT '事项编码', `item_name` varchar(256) NOT NULL COMMENT '事项名称', `warning_type` varchar(64) NOT NULL COMMENT '预警类型', `warning_level` varchar(32) NOT NULL COMMENT '预警级别', `warning_special` varchar(128) DEFAULT NULL COMMENT '预警专项', `industry` varchar(128) DEFAULT NULL COMMENT '所属行业', `duration` int DEFAULT NULL COMMENT '预警时长(小时)', `link_config` text COMMENT '预警环节配置', `status` varchar(32) DEFAULT 'ENABLED' COMMENT '状态(ENABLED-启用 DISABLED-禁用 INVALID-作废)', `create_by` varchar(128) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(128) DEFAULT NULL COMMENT '更新人', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `remark` varchar(512) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`item_id`), UNIQUE KEY `uk_item_code` (`item_code`), KEY `idx_warning_type` (`warning_type`), KEY `idx_warning_level` (`warning_level`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警清单表'; -- 12. 预警原因库表 DROP TABLE IF EXISTS `warning_reason`; CREATE TABLE `warning_reason` ( `reason_id` varchar(64) NOT NULL COMMENT '原因ID', `reason_code` varchar(64) NOT NULL COMMENT '原因编码', `reason_name` varchar(256) NOT NULL COMMENT '原因名称', `warning_type` varchar(64) NOT NULL COMMENT '预警类型', `warning_level` varchar(32) NOT NULL COMMENT '预警级别', `description` text COMMENT '原因描述', `sort_order` int DEFAULT 0 COMMENT '排序', `status` char(1) DEFAULT '0' COMMENT '状态(0-正常 1-停用)', `create_by` varchar(128) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(128) DEFAULT NULL COMMENT '更新人', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`reason_id`), UNIQUE KEY `uk_reason_code` (`reason_code`), KEY `idx_warning_type` (`warning_type`), KEY `idx_warning_level` (`warning_level`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警原因库表';