diff --git a/data-center-business-controller/src/main/resources/db/migration/V101__csdj_alarm.sql b/data-center-business-controller/src/main/resources/db/migration/V101__csdj_alarm.sql new file mode 100644 index 0000000..4847598 --- /dev/null +++ b/data-center-business-controller/src/main/resources/db/migration/V101__csdj_alarm.sql @@ -0,0 +1,22 @@ +-- CSDJ告警历史表 +CREATE TABLE csdj_alarm_history ( + id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', + `company_id` bigint DEFAULT NULL, + `raw_hex` text CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '原始HEX报文', + terminal_id VARCHAR(64) NOT NULL COMMENT '终端ID', + terminal_no INT NOT NULL COMMENT '端子番号', + alarm_time DATETIME NOT NULL COMMENT '告警时间(日本时区)', + alarm_timestamp BIGINT NOT NULL COMMENT '告警时间戳(毫秒)', + recovery_time DATETIME COMMENT '恢复时间(日本时区)', + recovery_timestamp BIGINT COMMENT '恢复时间戳(毫秒)', + alarm_state TINYINT(1) DEFAULT 1 COMMENT '告警状态(0=已恢复,1=告警中)', + state_raw INT COMMENT '端子状态原始值', + abnormal_mode INT COMMENT '异常模式', + alert_history_id bigint DEFAULT NULL COMMENT '告警表主键ID', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + INDEX idx_terminal_id (terminal_id), + INDEX idx_alarm_state (alarm_state), + INDEX idx_alarm_time (alarm_time), + INDEX idx_alert_history_id (alert_history_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='CSDJ告警历史表'; \ No newline at end of file diff --git a/data-center-business-controller/src/main/resources/db/migration/V102__csdj_log_analysis.sql b/data-center-business-controller/src/main/resources/db/migration/V102__csdj_log_analysis.sql new file mode 100644 index 0000000..a536012 --- /dev/null +++ b/data-center-business-controller/src/main/resources/db/migration/V102__csdj_log_analysis.sql @@ -0,0 +1,89 @@ +ALTER TABLE csdj_log ADD `parsed_json` text DEFAULT NULL COMMENT '解析json' after `raw_hex`; +ALTER TABLE csdj_log ADD `parsed_content` text DEFAULT NULL COMMENT '解析内容' after `parsed_json`; + + +-- CSDJ设备实时状态表(单字段+JSON双存储) +CREATE TABLE csdj_device_realtime ( + id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', + terminal_id VARCHAR(64) NOT NULL UNIQUE COMMENT '终端ID(唯一)', + company_id BIGINT COMMENT '公司ID', + +-- ===== 通報基础信息 ===== + last_notification_time DATETIME COMMENT '最后通報时间', + last_notification_timestamp BIGINT COMMENT '最后通報时间戳', + last_raw_hex TEXT COMMENT '最后原始HEX报文', + +-- ============================================ +-- ===== デジタル入力端子(单字段+JSON)===== +-- ============================================ +-- 同时保留完整JSON + digital_input_json JSON COMMENT 'デジタル入力端子状态JSON', +-- 单字段(按端子号预留,最多16个) + di_1_no INT COMMENT 'デジタル入力1-端子号', + di_1_is_alarm TINYINT(1) COMMENT 'デジタル入力1-是否告警', + di_1_state_raw INT COMMENT 'デジタル入力1-状态原始值', + di_1_state_text VARCHAR(64) COMMENT 'デジタル入力1-状态文本', + di_1_abnormal_mode INT COMMENT 'デジタル入力1-异常模式', + di_2_no INT COMMENT 'デジタル入力2-端子号', + di_2_is_alarm TINYINT(1) COMMENT 'デジタル入力2-是否告警', + di_2_state_raw INT COMMENT 'デジタル入力2-状态原始值', + di_2_state_text VARCHAR(64) COMMENT 'デジタル入力2-状态文本', + di_2_abnormal_mode INT COMMENT 'デジタル入力2-异常模式', +-- 以此类推,可以继续加 di_3~di_16... + di_3_no INT COMMENT 'デジタル入力3-端子号', + di_3_is_alarm TINYINT(1) COMMENT 'デジタル入力3-是否告警', + di_3_state_raw INT COMMENT 'デジタル入力3-状态原始值', + di_3_state_text VARCHAR(64) COMMENT 'デジタル入力3-状态文本', + di_3_abnormal_mode INT COMMENT 'デジタル入力3-异常模式', + +-- ============================================ +-- ===== アナログ入力端子(单字段+JSON)===== +-- ============================================ + analog_input_json JSON COMMENT 'アナログ入力端子状态JSON', + ai_1_no INT COMMENT 'アナログ入力1-端子号', + ai_1_is_threshold_alarm TINYINT(1) COMMENT 'アナログ入力1-是否阈值告警', + ai_1_threshold_no INT COMMENT 'アナログ入力1-阈值编号', + ai_1_additional_data BIGINT COMMENT 'アナログ入力1-附加数据', + ai_1_state_raw INT COMMENT 'アナログ入力1-状态原始值', + ai_2_no INT COMMENT 'アナログ入力2-端子号', + ai_2_is_threshold_alarm TINYINT(1) COMMENT 'アナログ入力2-是否阈值告警', + ai_2_threshold_no INT COMMENT 'アナログ入力2-阈值编号', + ai_2_additional_data BIGINT COMMENT 'アナログ入力2-附加数据', + ai_2_state_raw INT COMMENT 'アナログ入力2-状态原始值', +-- 以此类推,可以继续加 ai_3~ai_8... + +-- ============================================ +-- ===== デジタル出力端子(单字段+JSON)===== +-- ============================================ + digital_output_json JSON COMMENT 'デジタル出力端子状态JSON', + do_1_no INT COMMENT 'デジタル出力1-端子号', + do_1_output_state VARCHAR(32) COMMENT 'デジタル出力1-输出接点状态', + do_1_state_raw INT COMMENT 'デジタル出力1-状态原始值', + do_1_additional_data BIGINT COMMENT 'デジタル出力1-附加数据', + do_2_no INT COMMENT 'デジタル出力2-端子号', + do_2_output_state VARCHAR(32) COMMENT 'デジタル出力2-输出接点状态', + do_2_state_raw INT COMMENT 'デジタル出力2-状态原始值', + do_2_additional_data BIGINT COMMENT 'デジタル出力2-附加数据', +-- 以此类推,可以继续加 do_3~do_16... + +-- ============================================ +-- ===== システム状態(直接字段存储)===== +-- ============================================ + system_state_no INT COMMENT '系统状态番号', + system_scheduled_time_no INT COMMENT '定时编号', + system_mode_state INT COMMENT '模式状态', + system_is_power_off TINYINT(1) COMMENT '停电状态(0=正常,1=停电)', + system_is_battery_low TINYINT(1) COMMENT '电池状态(0=正常,1=低)', + system_is_line_disconnected TINYINT(1) COMMENT '线路状态(0=正常,1=断开)', + system_is_slave_communication_error TINYINT(1) COMMENT '子机通信状态(0=正常,1=错误)', + system_state_raw INT COMMENT '系统状态原始值', + +-- ===== 时间字段 ===== + created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + + INDEX idx_terminal_id (terminal_id), + INDEX idx_company_id (company_id), + INDEX idx_last_notification_time (last_notification_time), + INDEX idx_di_1_is_alarm (di_1_is_alarm) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='CSDJ设备实时状态表(单字段+JSON双存储)'; \ No newline at end of file diff --git a/data-center-business-controller/src/main/resources/db/migration/V103__black_category.sql b/data-center-business-controller/src/main/resources/db/migration/V103__black_category.sql new file mode 100644 index 0000000..7f9ca52 --- /dev/null +++ b/data-center-business-controller/src/main/resources/db/migration/V103__black_category.sql @@ -0,0 +1,30 @@ +ALTER TABLE dashboard_block_config ADD `category_type` json DEFAULT NULL COMMENT '屏蔽类型,f10=キング通信,csdj=コルソス,main=中央監視' after block_big_class_id; + + + +USE `data_center_aeon_admin`; + +DROP PROCEDURE IF EXISTS `add_authorized_category_type_column`; + +DELIMITER $$ + +CREATE PROCEDURE add_authorized_category_type_column() +BEGIN + -- 姓 + IF NOT EXISTS ( + SELECT 1 + FROM information_schema.columns + WHERE table_schema = 'data_center_aeon_admin' + AND table_name = 'basic_user' + AND column_name = 'authorized_device_category_type' + ) THEN + ALTER TABLE basic_user + ADD `authorized_device_category_type` json DEFAULT NULL COMMENT '可查看的设备类型,f10=キング通信,csdj=コルソス,main=中央監視'; + END IF; +END$$ + +DELIMITER ; + +CALL add_authorized_category_type_column(); + +DROP PROCEDURE IF EXISTS `add_authorized_category_type_column`;