-- =============================================
-- 物联感知设备与管网基础设施管理
-- 包含：设备管理增强、管网基础信息、监控点管理、预警阈值
-- =============================================

-- -----------------------------------------------------
-- 1. 对现有表进行字段补充
-- -----------------------------------------------------

-- 补充设备基础表字段
ALTER TABLE `equipment_base` 
ADD COLUMN IF NOT EXISTS `equipment_location` VARCHAR(512) COMMENT '设备位置描述' AFTER `latitude`,
ADD COLUMN IF NOT EXISTS `install_time` DATETIME COMMENT '安装时间' AFTER `equipment_location`,
ADD COLUMN IF NOT EXISTS `maintainer` VARCHAR(128) COMMENT '设备维护人员' AFTER `install_time`,
ADD COLUMN IF NOT EXISTS `maintainer_phone` VARCHAR(32) COMMENT '联系方式' AFTER `maintainer`,
ADD COLUMN IF NOT EXISTS `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' AFTER `remark`,
ADD COLUMN IF NOT EXISTS `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' AFTER `create_time`;

-- 补充设备维护记录表字段
ALTER TABLE `equipment_maintain` 
ADD COLUMN IF NOT EXISTS `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' AFTER `maintain_remark`;

-- 补充设备状态表字段
ALTER TABLE `equipment_status` 
ADD COLUMN IF NOT EXISTS `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' AFTER `status_update_time`;

-- -----------------------------------------------------
-- 2. 管网基础信息表（5.2.4.1.2）
-- -----------------------------------------------------
DROP TABLE IF EXISTS `pipe_network_base`;
CREATE TABLE `pipe_network_base` (
  `network_id` VARCHAR(64) NOT NULL COMMENT '管网设施ID（主键）',
  `network_code` VARCHAR(64) NOT NULL COMMENT '设施编码',
  `network_name` VARCHAR(256) NOT NULL COMMENT '设施名称',
  `network_type` VARCHAR(64) NOT NULL COMMENT '设施类型（GAS-燃气 DRAINAGE-排水 WATER_SUPPLY-供水 BRIDGE-桥梁 ROAD-道路等）',
  `network_level` VARCHAR(32) COMMENT '等级',
  `management_unit` VARCHAR(256) COMMENT '管养单位',
  `location` VARCHAR(512) COMMENT '位置描述',
  `start_longitude` DECIMAL(15, 10) COMMENT '管网起点WGS84经度',
  `start_latitude` DECIMAL(15, 10) COMMENT '管网起点WGS84纬度',
  `end_longitude` DECIMAL(15, 10) COMMENT '管网终点WGS84经度',
  `end_latitude` DECIMAL(15, 10) COMMENT '管网终点WGS84纬度',
  `length` DECIMAL(10, 2) COMMENT '长度（米）',
  `diameter` DECIMAL(10, 2) COMMENT '管径（毫米）',
  `material` VARCHAR(128) COMMENT '材质',
  `build_date` DATE COMMENT '建设日期',
  `status` VARCHAR(32) DEFAULT 'NORMAL' COMMENT '状态（NORMAL-正常 MAINTENANCE-维护中 ABNORMAL-异常）',
  `remark` TEXT COMMENT '备注',
  `create_by` VARCHAR(128) COMMENT '创建人',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by` VARCHAR(128) COMMENT '更新人',
  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`network_id`),
  UNIQUE KEY `uk_network_code` (`network_code`),
  KEY `idx_network_type` (`network_type`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管网基础设施信息表';

-- -----------------------------------------------------
-- 3. 关键监控点位表（5.2.4.1.3）
-- -----------------------------------------------------
DROP TABLE IF EXISTS `monitor_point`;
CREATE TABLE `monitor_point` (
  `point_id` VARCHAR(64) NOT NULL COMMENT '监测点ID（主键）',
  `point_code` VARCHAR(64) NOT NULL COMMENT '监测点编码',
  `point_name` VARCHAR(256) NOT NULL COMMENT '监测点名称',
  `network_id` VARCHAR(64) COMMENT '关联管网设施ID',
  `point_type` VARCHAR(64) COMMENT '监测点类型（水位、流量、压力、温度等）',
  `location` VARCHAR(512) COMMENT '位置描述',
  `longitude` DECIMAL(15, 10) COMMENT '经度',
  `latitude` DECIMAL(15, 10) COMMENT '纬度',
  `installation_date` DATE COMMENT '安装日期',
  `status` VARCHAR(32) DEFAULT 'NORMAL' COMMENT '状态（NORMAL-正常 ABNORMAL-异常 OFFLINE-离线）',
  `remark` TEXT COMMENT '备注',
  `create_by` VARCHAR(128) COMMENT '创建人',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by` VARCHAR(128) COMMENT '更新人',
  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`point_id`),
  UNIQUE KEY `uk_point_code` (`point_code`),
  KEY `idx_network_id` (`network_id`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='关键监控点位表';

-- -----------------------------------------------------
-- 4. 设备-监控点关联表
-- -----------------------------------------------------
DROP TABLE IF EXISTS `equipment_point_rel`;
CREATE TABLE `equipment_point_rel` (
  `rel_id` VARCHAR(64) NOT NULL COMMENT '关联ID',
  `equipment_id` VARCHAR(64) NOT NULL COMMENT '设备ID',
  `point_id` VARCHAR(64) NOT NULL COMMENT '监测点ID',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`rel_id`),
  KEY `idx_equipment_id` (`equipment_id`),
  KEY `idx_point_id` (`point_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备-监控点关联表';

-- -----------------------------------------------------
-- 5. 补充现有预警阈值表字段
-- -----------------------------------------------------
-- 对已有的 warning_threshold 表补充字段（项目已有该表）
-- 注意：只保留阈值相关字段，不包含预警联动、通知等业务逻辑
ALTER TABLE `warning_threshold` 
ADD COLUMN IF NOT EXISTS `min_value` DECIMAL(10, 2) COMMENT '预警最小值，小于等于该值视为报警' AFTER `warning_code`,
ADD COLUMN IF NOT EXISTS `max_value` DECIMAL(10, 2) COMMENT '预警最大值，大于等于该值视为报警' AFTER `min_value`;

-- 移除旧字段（如果存在）
-- 注意：实际执行时请根据需要取消注释
-- ALTER TABLE `warning_threshold` DROP COLUMN IF EXISTS `warning_value`;
-- ALTER TABLE `warning_threshold` DROP COLUMN IF EXISTS `operator`;
-- ALTER TABLE `warning_threshold` DROP COLUMN IF EXISTS `device_name`;
-- ALTER TABLE `warning_threshold` DROP COLUMN IF EXISTS `device_type`;
-- ALTER TABLE `warning_threshold` DROP COLUMN IF EXISTS `equipment_id`;
-- ALTER TABLE `warning_threshold` DROP COLUMN IF EXISTS `point_id`;
-- ALTER TABLE `warning_threshold` DROP COLUMN IF EXISTS `monitor_type`;
-- ALTER TABLE `warning_threshold` DROP COLUMN IF EXISTS `warning_level`;

-- -----------------------------------------------------
-- 6. 设备测试记录表
-- -----------------------------------------------------
DROP TABLE IF EXISTS `equipment_test`;
CREATE TABLE `equipment_test` (
  `test_id` VARCHAR(64) NOT NULL COMMENT '测试记录ID',
  `equipment_id` VARCHAR(64) NOT NULL COMMENT '设备ID',
  `test_type` VARCHAR(64) COMMENT '测试类型（CONNECT-连接测试 DATA-数据传输 FUNCTION-功能测试）',
  `test_result` VARCHAR(32) COMMENT '测试结果（SUCCESS-成功 FAIL-失败）',
  `test_detail` TEXT COMMENT '测试详情',
  `test_time` DATETIME COMMENT '测试时间',
  `test_user` VARCHAR(128) COMMENT '测试人',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`test_id`),
  KEY `idx_equipment_id` (`equipment_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备测试记录表';

-- -----------------------------------------------------
-- 7. 初始化数据
-- -----------------------------------------------------

-- 初始化管网设施类型字典
INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES
(102, '管网设施类型', 'network_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
(113, 1, '燃气管道', 'GAS', 'network_type', '', 'danger', 'N', '0', 'admin', NOW(), '', NULL, '燃气管道'),
(114, 2, '排水管道', 'DRAINAGE', 'network_type', '', 'primary', 'N', '0', 'admin', NOW(), '', NULL, '排水管道'),
(115, 3, '供水管道', 'WATER_SUPPLY', 'network_type', '', 'primary', 'N', '0', 'admin', NOW(), '', NULL, '供水管道'),
(116, 4, '热力管道', 'HEAT', 'network_type', '', 'warning', 'N', '0', 'admin', NOW(), '', NULL, '热力管道'),
(117, 5, '电力管道', 'ELECTRIC', 'network_type', '', 'info', 'N', '0', 'admin', NOW(), '', NULL, '电力管道'),
(118, 6, '通信管道', 'COMMUNICATION', 'network_type', '', 'info', 'N', '0', 'admin', NOW(), '', NULL, '通信管道'),
(119, 7, '桥梁', 'BRIDGE', 'network_type', '', 'default', 'N', '0', 'admin', NOW(), '', NULL, '桥梁'),
(120, 8, '道路', 'ROAD', 'network_type', '', 'default', '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
(103, '监测点类型', 'monitor_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
(121, 1, '水位监测', 'WATER_LEVEL', 'monitor_type', '', 'primary', 'N', '0', 'admin', NOW(), '', NULL, '水位监测'),
(122, 2, '流量监测', 'FLOW', 'monitor_type', '', 'primary', 'N', '0', 'admin', NOW(), '', NULL, '流量监测'),
(123, 3, '压力监测', 'PRESSURE', 'monitor_type', '', 'warning', 'N', '0', 'admin', NOW(), '', NULL, '压力监测'),
(124, 4, '温度监测', 'TEMPERATURE', 'monitor_type', '', 'info', 'N', '0', 'admin', NOW(), '', NULL, '温度监测'),
(125, 5, '气体监测', 'GAS', 'monitor_type', '', 'danger', 'N', '0', 'admin', NOW(), '', NULL, '气体监测'),
(126, 6, '视频监控', 'VIDEO', 'monitor_type', '', 'default', 'N', '0', 'admin', NOW(), '', NULL, '视频监控');
