SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;


-- ----------------------------
-- Table structure for monitor_device 监控设备表
-- ----------------------------
DROP TABLE IF EXISTS `monitor_device`;
CREATE TABLE `monitor_device` (
  `id` VARCHAR(50) NOT NULL COMMENT '设备唯一标识符，UUID',  -- 设备唯一标识符，UUID
  `device_name` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '设备名称',  -- 设备名称
  `device_code` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '设备编码',  -- 设备编码
  `model_name` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '设备型号',  -- 设备型号
  `last_heartbeat_time` DATETIME NULL DEFAULT NULL COMMENT '最后心跳时间',  -- 设备最后心跳时间
  `status` CHAR(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '设备状态（1:正常，2：闲置）',  -- 设备状态
  `sensor_count` INT NULL DEFAULT NULL COMMENT '传感器路数',  -- 传感器的路数
  `last_login_time` TIMESTAMP NULL DEFAULT NULL COMMENT '最近登录时间',  -- 最近登录时间
  `sort_code` INT NULL DEFAULT NULL COMMENT '排序码',  -- 排序码
  `extra_info` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '扩展信息，存储额外的JSON数据',  -- 扩展信息，存储JSON
  `is_deleted` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '删除标志，标记是否删除',  -- 删除标志
  `created_at` DATETIME NULL DEFAULT NULL COMMENT '记录创建时间',  -- 记录的创建时间
  `created_by` VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '记录创建用户',  -- 创建用户
  `updated_at` DATETIME NULL DEFAULT NULL COMMENT '记录修改时间',  -- 记录的修改时间
  `updated_by` VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '记录修改用户',  -- 修改用户
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '监控设备管理表，存储设备信息及其状态管理' ROW_FORMAT = Dynamic;



-- ----------------------------
-- Table structure for monitor_target  监控目标
-- ----------------------------
DROP TABLE IF EXISTS `monitor_target`;
CREATE TABLE `monitor_target`  (
  `id` VARCHAR(50) NOT NULL,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称001',
  `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态（1：正常，2：闲置）',
  `monitor_point` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '监控位置区域',
  `sensor_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '传感器类型',
  `monitor_device_id` VARCHAR(50) NULL DEFAULT NULL COMMENT '监控设备编号',  -- 监控目标设备的UUID
  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '冷链编号',
  `limit_up` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '报警上限',
  `limit_down` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '报警下限',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '目标设备管理' ROW_FORMAT = Dynamic;



DROP TABLE IF EXISTS `monitor_target_region`;
CREATE TABLE `monitor_target_region` (
  `id` VARCHAR(50) NOT NULL COMMENT '区域唯一标识符，UUID',  -- 区域唯一标识符
  `name` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '区域名称',  -- 区域名称
  `parent_id` VARCHAR(50) NULL DEFAULT NULL COMMENT '上级区域ID，若无则为NULL',  -- 上级区域ID
  `monitor_target_id` VARCHAR(50) NULL DEFAULT NULL COMMENT '监控目标设备',
  `sensor_code` VARCHAR(50) NOT NULL COMMENT '传感器编号，如：X001、C001',
  `sensor_type` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '传感器类型，如：温湿度传感器、二氧化碳传感器',
  `sensor_route` INT NOT NULL COMMENT '传感器路数，如：路数1、路数2',
  `created_at` DATETIME NULL DEFAULT NULL COMMENT '记录创建时间',  -- 记录创建时间
  `created_by` VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '记录创建用户',  -- 创建用户
  `updated_at` DATETIME NULL DEFAULT NULL COMMENT '记录修改时间',  -- 记录修改时间
  `updated_by` VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '记录修改用户',  -- 修改用户
  PRIMARY KEY (`region_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '区域管理表，用于管理设备区域结构' ROW_FORMAT = Dynamic;


DROP TABLE IF EXISTS `monitor_monitor_target`;
CREATE TABLE `monitor_monitor_target` (
  `monitor_device_id` VARCHAR(50) NOT NULL COMMENT '监控设备ID（外键，来自monitor_device表）',  -- 监控设备ID
  `monitor_target_id` VARCHAR(50) NOT NULL COMMENT '目标设备ID（外键，来自monitor_target表）',  -- 目标设备ID
  `monitor_target_region_id` VARCHAR(50) NULL COMMENT '目标设备区域ID（外键，来自monitor_target表）',  -- 目标设备ID
  `sensor_route` INT NULL DEFAULT NULL COMMENT '传感器路数',  -- 传感器的路数（例如路数1、路数2等）
  `created_at` DATETIME NULL DEFAULT NULL COMMENT '记录创建时间',  -- 记录创建时间
  `created_by` VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '记录创建用户',  -- 创建用户
  `updated_at` DATETIME NULL DEFAULT NULL COMMENT '记录修改时间',  -- 记录修改时间
  `updated_by` VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '记录修改用户'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '监控设备与目标设备关系表，管理传感器监控的目标设备' ROW_FORMAT = Dynamic;


CREATE TABLE monitor_device_parameters (
    id VARCHAR(50) PRIMARY KEY COMMENT '主键，唯一标识每个记录',        -- 主键，唯一标识每个记录
    monitor_device_id INT NOT NULL COMMENT '监控设备ID，关联到设备',                   -- 设备ID，关联到设备
    param_id INT NOT NULL COMMENT '参数ID，每个参数的唯一标识',                    -- 参数ID
    param_type VARCHAR(20) NOT NULL COMMENT '参数类型 (如 STRING, INT16U, IP, FLOAT)',          -- 参数类型
    description VARCHAR(255) NOT NULL COMMENT '参数描述，简短的参数解释',        -- 参数描述
    value VARCHAR(255) NOT NULL COMMENT '参数值，存储该参数的当前值',              -- 参数值
    length INT DEFAULT 0 COMMENT '参数长度，通常用于表示字符串的长度',                     -- 参数长度
    min_value INT DEFAULT 0 COMMENT '参数的最小值，用于数值类型的参数',                  -- 最小值
    max_value INT DEFAULT 0 COMMENT '参数的最大值，用于数值类型的参数',                  -- 最大值
    value_description TEXT COMMENT '可选的值描述，存储该参数可能的取值描述或枚举值',                   -- 可选的值描述 (如关联继电器)
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', -- 创建时间
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间', -- 更新时间
    UNIQUE KEY(id, param_id) COMMENT '确保每个设备的每个参数唯一'           -- 唯一约束，确保每个设备的每个参数唯一
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='存储设备参数及其配置的数据表';  -- 表级注释



INSERT INTO monitor_device_parameters (id, device_id, param_id, param_type, description, value, length, min_value, max_value, value_description, created_at, updated_at)
VALUES
('1', 30067080, 2, 'STRING', '网口服务器1URL地址', '10.0.1.125', 64, 0, 0, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('2', 30067080, 3, 'INT16U', '网口服务器1源端口', '-25132', 0, 0, 0, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('3', 30067080, 13, 'IP', '网口静态IP', '55.1.168.192', 0, 0, 0, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('4', 30067080, 14, 'IP', '网口子网掩码', '0.255.255.255', 0, 0, 0, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('5', 30067080, 15, 'IP', '网口网关', '0.1.168.192', 0, 0, 0, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('6', 30067080, 16, 'INT8U', '网口IP获取方式', '1', 0, 0, 0, '{"0":"静态IP", "1":"自动获取IP"}', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('7', 30067080, 30, 'INT16U', '网口登陆帧间隔（秒）', '2', 0, 1, 65535, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('8', 30067080, 31, 'INT16U', '网口心跳帧间隔（秒）', '10', 0, 1, 65535, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('9', 30067080, 32, 'INT16U', '网口数据帧间隔（秒）', '5', 0, 1, 65535, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('10', 30067080, 33, 'FLOAT', '标识设备坐标经度 其中-180-0代表西经', '0.0', 0, -180, 180, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('11', 30067080, 34, 'FLOAT', '标识设备坐标维度 其中-90-0代表南纬', '0.0', 0, -90, 90, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('12', 30067080, 38, 'INT16U', '主机正常数据记录间隔（分）', '1', 0, 1, 65535, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('13', 30067080, 39, 'INT16U', '主机报警数据记录间隔（分）', '2', 0, 1, 65535, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('14', 30067080, 40, 'INT8U', '主机数据存储配型', '2', 0, 0, 0, '{"0":"关闭", "1":"关闭", "2":"开启", "3":"自动"}', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('15', 30067080, 44, 'INT8U', '主机存储数据是否主动上传', '0', 0, 0, 0, '{"0":"否", "1":"是"}', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('16', 30067080, 247, 'INT16U', '通道1报警延时（秒）', '0', 0, 0, 65535, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('17', 30067080, 248, 'FLOAT', '通道1模拟量1上限', '80.0', 0, 0, 0, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('18', 30067080, 249, 'FLOAT', '通道1模拟量1下限', '-80.0', 0, 0, 0, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('19', 30067080, 250, 'FLOAT', '通道1模拟量1控制回差', '0.0', 0, 0, 0, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('20', 30067080, 257, 'INT8U', '通道1模拟量1上限关联继电器', '0', 0, 0, 0, '{"0":"不关联","1":"关联1号继电器","2":"关联2号继电器","3":"关联3号继电器","4":"关联4号继电器","5":"关联5号继电器","6":"关联6号继电器","7":"关联7号继电器","8":"关联8号继电器"}', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('21', 30067080, 258, 'INT8U', '通道1模拟量1下限关联继电器', '0', 0, 0, 0, '{"0":"不关联","1":"关联1号继电器","2":"关联2号继电器","3":"关联3号继电器","4":"关联4号继电器","5":"关联5号继电器","6":"关联6号继电器","7":"关联7号继电器","8":"关联8号继电器"}', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
('22', 30067080, 252, 'FLOAT', '通道1模拟量1系数B', '0.0', 0, 0, 0, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);


SET FOREIGN_KEY_CHECKS = 1;
