CREATE TABLE IF NOT EXISTS `data_alarm_device_rel` (
    `id` bigint(20) NOT NULL COMMENT 'id',
    `alarm_rule_id` bigint(20) DEFAULT NULL,
    `device_id` bigint(20) DEFAULT NULL COMMENT '局部告警的设备id',
    `access_id` varchar(32) DEFAULT NULL COMMENT '设备接入id',
    `sn` varchar(32) DEFAULT NULL COMMENT '设备SN',
    `application_id` bigint(20) DEFAULT NULL COMMENT '应用id',
    `create_at` bigint(20) DEFAULT NULL,
    `update_at` bigint(20) DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='局部告警的设备数据表';

CREATE TABLE IF NOT EXISTS `data_alarm_push` (
    `id` bigint(20) NOT NULL COMMENT 'id',
    `alarm_rule_id` bigint(20) DEFAULT NULL,
    `push_name` varchar(64) DEFAULT NULL COMMENT '通知名称',
    `push_type` varchar(20) DEFAULT NULL,
    `push_type_name` varchar(20) DEFAULT NULL COMMENT '告警通知方式，系统消息，邮件，短信',
    `application_id` bigint(20) DEFAULT NULL COMMENT '应用id',
    `tenant_id` bigint(20) DEFAULT NULL,
    `always_push` tinyint(1) DEFAULT NULL COMMENT '每次都推送，0：否，1：是',
    `cycle_number` int(11) DEFAULT NULL COMMENT '每多少条推送一次',
    `max_number` int(11) DEFAULT NULL COMMENT '最多多少条（结合ignore_number）',
    `interval_minutes` int(11) DEFAULT NULL COMMENT '间隔分钟数',
    `alarm_push_template_id` bigint(20) DEFAULT NULL,
    `enable` tinyint(1) DEFAULT NULL COMMENT '是否可用，0禁用，1可用',
    `push_rule` text COMMENT '告警规则',
    `create_at` bigint(20) DEFAULT NULL,
    `update_at` bigint(20) DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='局部告警的设备数据表';

CREATE TABLE IF NOT EXISTS `data_alarm_push_log` (
    `id` bigint(20) NOT NULL,
    `alarm_rule_id` bigint(20) DEFAULT NULL,
    `alarm_push_id` bigint(20) DEFAULT NULL COMMENT '告警推送配置id',
    `alarm_push_template_id` bigint(20) DEFAULT NULL COMMENT '告警推送模板id',
    `push_content` text COMMENT '推送内容',
    `push_type` varchar(20) DEFAULT NULL COMMENT '推送类型，system，sms，email',
    `status` tinyint(1) DEFAULT NULL COMMENT '推送状态，0：失败；1：成功',
    `indicator_id` bigint(20) DEFAULT NULL COMMENT '监测指标id',
    `monitor_point_id` bigint(20) DEFAULT NULL COMMENT '测点id',
    `device_id` bigint(20) DEFAULT NULL,
    `trigger_type` tinyint(1) DEFAULT NULL COMMENT '触发器类型，0：设备离线；1：设备失联；2：监测要素；3：监测指标；4：特征值告警；5：设备离线比例',
    `level` tinyint(1) unsigned DEFAULT '0' COMMENT '告警等级',
    `push_time` datetime DEFAULT NULL COMMENT '告警推送时间',
    `user_name` varchar(50) DEFAULT NULL COMMENT '用户名称',
    `real_name` varchar(50) DEFAULT NULL COMMENT '用户名',
    `phone_number` varchar(50) DEFAULT NULL COMMENT '手机号',
    `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
    `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
    `application_id` bigint(20) DEFAULT NULL COMMENT '应用id',
    `user_id` bigint(20) DEFAULT NULL,
    `wait_number` int(11) DEFAULT '0',
    `create_at` bigint(20) DEFAULT NULL COMMENT '推送时间',
    `update_at` bigint(20) DEFAULT NULL COMMENT '更新时间',
    PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `data_alarm_push_tag_rel` (
    `id` bigint(20) unsigned NOT NULL COMMENT 'id',
    `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
    `application_id` bigint(20) DEFAULT NULL COMMENT '应用id',
    `tag_key` varchar(20) DEFAULT NULL COMMENT '标签key',
    `tag_value` bigint(20) DEFAULT NULL COMMENT '标签值',
    `alarm_push_id` bigint(20) DEFAULT NULL COMMENT '告警推送id',
    `create_at` bigint(20) DEFAULT NULL,
    `update_at` bigint(20) DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备的模板以及监测指标之间标识的关系';

CREATE TABLE IF NOT EXISTS `data_alarm_push_template` (
    `id` bigint(20) NOT NULL COMMENT 'id',
    `push_type` varchar(20) DEFAULT NULL,
    `push_type_name` varchar(20) DEFAULT NULL COMMENT '告警通知方式，系统消息，邮件，短信',
    `push_template_name` varchar(64) DEFAULT NULL,
    `push_template_content` text,
    `enable` tinyint(1) DEFAULT NULL COMMENT '是否启用1启用 0关闭',
    `remark` varchar(255) DEFAULT NULL,
    `application_id` bigint(20) DEFAULT NULL COMMENT '应用id',
    `tenant_id` bigint(20) DEFAULT NULL,
    `create_at` datetime DEFAULT NULL,
    `update_at` datetime DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='局部告警的设备数据表';

CREATE TABLE IF NOT EXISTS `data_alarm_push_template_tag_rel` (
    `id` bigint(20) unsigned NOT NULL COMMENT 'id',
    `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
    `application_id` bigint(20) DEFAULT NULL COMMENT '应用id',
    `tag_key` varchar(20) DEFAULT NULL COMMENT '标签key',
    `tag_value` bigint(20) DEFAULT NULL COMMENT '标签值',
    `alarm_push_template_id` bigint(20) DEFAULT NULL COMMENT '告警推送模板id',
    `create_at` bigint(20) DEFAULT NULL,
    `update_at` bigint(20) DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备的模板以及监测指标之间标识的关系';

CREATE TABLE IF NOT EXISTS `data_alarm_push_user` (
    `id` bigint(20) unsigned NOT NULL COMMENT 'id',
    `alarm_rule_id` bigint(20) DEFAULT NULL,
    `user_id` bigint(20) DEFAULT NULL,
    `user_name` varchar(50) DEFAULT NULL COMMENT '用户名',
    `real_name` varchar(50) DEFAULT NULL,
    `phone_number` varchar(50) DEFAULT NULL,
    `email` varchar(50) DEFAULT NULL,
    `alarm_push_id` bigint(20) DEFAULT NULL COMMENT '告警推送id',
    `create_at` bigint(20) DEFAULT NULL,
    `update_at` bigint(20) DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备的模板以及监测指标之间标识的关系';

CREATE TABLE IF NOT EXISTS `data_alarm_sub_rule` (
    `id` bigint(20) NOT NULL COMMENT 'id',
    `alarm_rule_id` bigint(20) DEFAULT NULL COMMENT '告警规则 json格式',
    `level` tinyint(1) DEFAULT '1' COMMENT '告警等级',
    `alarm_rule` text COMMENT '具体告警配置',
    `dead_zone` double DEFAULT NULL COMMENT '死区',
    `offline_duration` int(11) DEFAULT NULL COMMENT '离线时长检测',
    `duration` int(11) DEFAULT NULL,
    `offline_times` int(11) DEFAULT NULL,
    `offline_percent` int(11) DEFAULT NULL,
    `aviator` varchar(255) DEFAULT NULL COMMENT '规则表达式',
    `ignore_aviator` varchar(255) DEFAULT NULL COMMENT '死区、步长设置，用于判断数据是否忽略告警',
    `alarm_value_field` varchar(32) DEFAULT NULL,
    `create_at` bigint(20) DEFAULT NULL,
    `update_at` bigint(20) DEFAULT NULL,
    PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `data_alarm_rule` (
    `id` bigint(20) unsigned NOT NULL COMMENT 'id',
    `unique_id` varchar(64) DEFAULT NULL,
    `application_id` bigint(20) DEFAULT NULL COMMENT '应用id',
    `template_id` bigint(20) DEFAULT NULL COMMENT '模板id',
    `device_id` bigint(20) DEFAULT NULL COMMENT '设备id',
    `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
    `product_id` bigint(20) DEFAULT NULL,
    `monitor_point_id` bigint(20) DEFAULT NULL COMMENT '测点id',
    `alarm_name` varchar(255) DEFAULT NULL COMMENT '告警名称',
    `global_flag` tinyint(1) unsigned DEFAULT '0' COMMENT '使用范围 默认0全局 1局部',
    `enable` tinyint(1) DEFAULT '1' COMMENT '是否启用1启用 0关闭',
    `alarm_object` tinyint(1) DEFAULT '1' COMMENT '告警对象，0：设备；1：测点。',
    `line_type` tinyint(1) DEFAULT '0' COMMENT '组合形式，0：按等级排序；1：and；2：or。',
    `alarm_device_type` tinyint(1) DEFAULT '0' COMMENT '告警设备类型，0：具体设备；1：同产品型号设备；2：同租户设备；3：同应用设备；4：同设备模板设备',
    `trigger_type` tinyint(1) DEFAULT '0' COMMENT '触发器类型，0：设备离线；1：设备失联；2：监测要素；3：监测指标；4：特征值告警；5：设备离线比例',
    `user_name` varchar(32) DEFAULT NULL COMMENT '用户名',
    `whether_summary` bigint(20) DEFAULT NULL COMMENT '是否汇总',
    `alarm_msg` varchar(128) DEFAULT NULL,
    `create_at` datetime DEFAULT NULL,
    `update_at` datetime DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用于设定监测的告警类型、推送规则以及相关规则';

CREATE TABLE IF NOT EXISTS `data_device_alarm_rel` (
    `id` bigint(20) NOT NULL COMMENT 'id',
    `device_id` bigint(20) DEFAULT NULL COMMENT '局部告警的设备id',
    `application_id` bigint(20) DEFAULT NULL COMMENT '应用id',
    `create_at` bigint(20) DEFAULT NULL,
    `update_at` bigint(20) DEFAULT NULL,
    PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='局部告警的设备数据表';

ALTER TABLE `data_alarm_summary`
    ADD COLUMN `alarm_rule_id` bigint(20) NULL AFTER `id`,
MODIFY COLUMN `monitor_tags_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL AFTER `push_condition_id`;

ALTER TABLE `data_alarm_push_user`
    ADD COLUMN `tenant_id` bigint(20) NULL,
    ADD COLUMN `application_id` bigint(20) NULL,
    ADD COLUMN `user_center_super` tinyint(1) unsigned DEFAULT '0' COMMENT='用户中心超管，1是，0否',
    ADD COLUMN `application_super` tinyint(1) unsigned DEFAULT '0' COMMENT='应用超管，1是，0否';


--ALTER TABLE `data_alarm_push_log`
--    MODIFY COLUMN `user_name`  varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '用户名称' AFTER `push_time`,
--    MODIFY COLUMN `real_name`  varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '用户名' AFTER `user_name`,
--    MODIFY COLUMN `phone_number`  varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '手机号' AFTER `real_name`,
--    MODIFY COLUMN `email`  varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '邮箱' AFTER `phone_number`;

--ALTER TABLE `data_alarm_push_user`
--    MODIFY COLUMN `user_name`  varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '用户名' AFTER `user_id`,
--    MODIFY COLUMN `real_name`  varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL AFTER `user_name`,
--    MODIFY COLUMN `phone_number`  varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL AFTER `real_name`,
--    MODIFY COLUMN `email`  varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL AFTER `phone_number`;

ALTER TABLE `data_alarm_push_user`
    ADD COLUMN `user_center_super`  tinyint(1) NULL AFTER `tenant_id`,
    ADD COLUMN `application_super`  tinyint(1) NULL AFTER `user_center_super`;
