diff --git a/data-center-business-controller/src/main/resources/db/migration/V112__f10_journal_log_sendTs.sql b/data-center-business-controller/src/main/resources/db/migration/V112__f10_journal_log_sendTs.sql new file mode 100644 index 0000000..367fce1 --- /dev/null +++ b/data-center-business-controller/src/main/resources/db/migration/V112__f10_journal_log_sendTs.sql @@ -0,0 +1,46 @@ +-- 1. 添加字段 +ALTER TABLE f10_journal_log + ADD COLUMN send_timestamp bigint DEFAULT NULL COMMENT 'send_date+send_time的毫秒级时间戳' + AFTER receive_timestamp; + + +-- 2. 回填日本时间 -> UTC毫秒时间戳 +UPDATE f10_journal_log +SET send_timestamp = + UNIX_TIMESTAMP( + CONVERT_TZ( + STR_TO_DATE( + CONCAT(send_date, send_time), + '%Y%m%d%H%i%s' + ), + 'Asia/Tokyo', + '+00:00' + ) + ) * 1000 +WHERE send_date IS NOT NULL + AND send_time IS NOT NULL; + + +-- 3. 删除重复,保留id最大 +DELETE t1 +FROM f10_journal_log t1 + JOIN f10_journal_log t2 + ON t1.device_id = t2.device_id + AND t1.instruction_flag = t2.instruction_flag + AND t1.send_timestamp = t2.send_timestamp + AND t1.id < t2.id; + + +-- 4. 删除旧唯一索引 +ALTER TABLE f10_journal_log + DROP INDEX uk_device_alarm_ts; + + +-- 5. 创建新唯一索引 +ALTER TABLE f10_journal_log + ADD UNIQUE KEY uk_device_instruction_send_time + ( + device_id, + instruction_flag, + send_timestamp + ) USING BTREE; \ No newline at end of file diff --git a/data-center-business-controller/src/main/resources/db/migration/V113__idx_alert_history_search.sql b/data-center-business-controller/src/main/resources/db/migration/V113__idx_alert_history_search.sql new file mode 100644 index 0000000..abcc93a --- /dev/null +++ b/data-center-business-controller/src/main/resources/db/migration/V113__idx_alert_history_search.sql @@ -0,0 +1,20 @@ +-- 判断索引是否存在 +SET @index_exists = ( + SELECT COUNT(*) + FROM information_schema.statistics + WHERE table_schema = DATABASE() + AND table_name = 'alert_history' + AND index_name = 'idx_alert_history_search' +); + +-- 根据判断结果生成 SQL +SET @sql = IF( + @index_exists = 0, + 'CREATE INDEX idx_alert_history_search ON alert_history (block_flag, source_type, handle_status)', + 'SELECT "Index idx_alert_history_search already exists." AS message' + ); + +-- 执行 SQL +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; \ No newline at end of file diff --git a/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/AccountServiceImpl.java b/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/AccountServiceImpl.java index 700a047..6f89f19 100644 --- a/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/AccountServiceImpl.java +++ b/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/AccountServiceImpl.java @@ -253,7 +253,7 @@ public class AccountServiceImpl implements AccountService { Map allMenuMap = allMenus.stream() .collect(Collectors.toMap(DashboardTreeMenusDTO::getMenuId, m -> m)); - // 🔥 提前构建 parent -> children 映射(性能优化) + // 提前构建 parent -> children 映射(性能优化) Map> childrenMap = new HashMap<>(); for (DashboardTreeMenusDTO menu : allMenus) { childrenMap