From b7ad0a907f59a2bc0455565e76c12bf152016469 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期五, 27 十月 2023 18:06:46 +0800
Subject: [PATCH] 合并pr 优化sql

---
 src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisAlarmMsgListener.java |  137 ++++++++++++++++++++++++++++-----------------
 1 files changed, 85 insertions(+), 52 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisAlarmMsgListener.java b/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisAlarmMsgListener.java
old mode 100644
new mode 100755
index d99cc98..194e90f
--- a/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisAlarmMsgListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisAlarmMsgListener.java
@@ -1,6 +1,7 @@
 package com.genersoft.iot.vmp.service.redisMsg;
 
-import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSON;
+import com.genersoft.iot.vmp.conf.UserSetting;
 import com.genersoft.iot.vmp.gb28181.bean.*;
 import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
 import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
@@ -38,80 +39,112 @@
     @Autowired
     private IVideoManagerStorage storage;
 
-    private boolean taskQueueHandlerRun = false;
-
     private ConcurrentLinkedQueue<Message> taskQueue = new ConcurrentLinkedQueue<>();
 
     @Qualifier("taskExecutor")
     @Autowired
     private ThreadPoolTaskExecutor taskExecutor;
 
+    @Autowired
+    private UserSetting userSetting;
+
     @Override
     public void onMessage(@NotNull Message message, byte[] bytes) {
+        // 娑堟伅绀轰緥锛�  PUBLISH alarm_receive '{ "gbId": "", "alarmSn": 1, "alarmType": "111", "alarmDescription": "222", }'
         logger.info("鏀跺埌鏉ヨ嚜REDIS鐨凙LARM閫氱煡锛� {}", new String(message.getBody()));
-
+        boolean isEmpty = taskQueue.isEmpty();
         taskQueue.offer(message);
-        if (!taskQueueHandlerRun) {
-            taskQueueHandlerRun = true;
-            logger.info("[绾跨▼姹犱俊鎭痌娲诲姩绾跨▼鏁帮細{}, 鏈�澶х嚎绋嬫暟锛� {}", taskExecutor.getActiveCount(), taskExecutor.getMaxPoolSize());
+        if (isEmpty) {
+//            logger.info("[绾跨▼姹犱俊鎭痌娲诲姩绾跨▼鏁帮細{}, 鏈�澶х嚎绋嬫暟锛� {}", taskExecutor.getActiveCount(), taskExecutor.getMaxPoolSize());
             taskExecutor.execute(() -> {
                 while (!taskQueue.isEmpty()) {
                     Message msg = taskQueue.poll();
+                    try {
+                        AlarmChannelMessage alarmChannelMessage = JSON.parseObject(msg.getBody(), AlarmChannelMessage.class);
+                        if (alarmChannelMessage == null) {
+                            logger.warn("[REDIS鐨凙LARM閫氱煡]娑堟伅瑙f瀽澶辫触");
+                            continue;
+                        }
+                        String gbId = alarmChannelMessage.getGbId();
 
-                    AlarmChannelMessage alarmChannelMessage = JSON.parseObject(msg.getBody(), AlarmChannelMessage.class);
-                    if (alarmChannelMessage == null) {
-                        logger.warn("[REDIS鐨凙LARM閫氱煡]娑堟伅瑙f瀽澶辫触");
-                        continue;
-                    }
-                    String gbId = alarmChannelMessage.getGbId();
+                        DeviceAlarm deviceAlarm = new DeviceAlarm();
+                        deviceAlarm.setCreateTime(DateUtil.getNow());
+                        deviceAlarm.setChannelId(gbId);
+                        deviceAlarm.setAlarmDescription(alarmChannelMessage.getAlarmDescription());
+                        deviceAlarm.setAlarmMethod("" + alarmChannelMessage.getAlarmSn());
+                        deviceAlarm.setAlarmType("" + alarmChannelMessage.getAlarmType());
+                        deviceAlarm.setAlarmPriority("1");
+                        deviceAlarm.setAlarmTime(DateUtil.getNow());
+                        deviceAlarm.setLongitude(0);
+                        deviceAlarm.setLatitude(0);
 
-                    DeviceAlarm deviceAlarm = new DeviceAlarm();
-                    deviceAlarm.setCreateTime(DateUtil.getNow());
-                    deviceAlarm.setChannelId(gbId);
-                    deviceAlarm.setAlarmDescription(alarmChannelMessage.getAlarmDescription());
-                    deviceAlarm.setAlarmMethod("" + alarmChannelMessage.getAlarmSn());
-                    deviceAlarm.setAlarmPriority("1");
-                    deviceAlarm.setAlarmTime(DateUtil.getNowForISO8601());
-                    deviceAlarm.setAlarmType("1");
-                    deviceAlarm.setLongitude(0);
-                    deviceAlarm.setLatitude(0);
+                        if (ObjectUtils.isEmpty(gbId)) {
+                            if (userSetting.getSendToPlatformsWhenIdLost()) {
+                                // 鍙戦�佺粰鎵�鏈夌殑涓婄骇
+                                List<ParentPlatform> parentPlatforms = storage.queryEnableParentPlatformList(true);
+                                if (parentPlatforms.size() > 0) {
+                                    for (ParentPlatform parentPlatform : parentPlatforms) {
+                                        try {
+                                            deviceAlarm.setChannelId(parentPlatform.getDeviceGBId());
+                                            commanderForPlatform.sendAlarmMessage(parentPlatform, deviceAlarm);
+                                        } catch (SipException | InvalidArgumentException | ParseException e) {
+                                            logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 鍙戦�佹姤璀�: {}", e.getMessage());
+                                        }
+                                    }
+                                }
+                            }else {
+                                // 鑾峰彇寮�鍚簡娑堟伅鎺ㄩ�佺殑璁惧鍜屽钩鍙�
+                                List<ParentPlatform> parentPlatforms = storage.queryEnablePlatformListWithAsMessageChannel();
+                                if (parentPlatforms.size() > 0) {
+                                    for (ParentPlatform parentPlatform : parentPlatforms) {
+                                        try {
+                                            deviceAlarm.setChannelId(parentPlatform.getDeviceGBId());
+                                            commanderForPlatform.sendAlarmMessage(parentPlatform, deviceAlarm);
+                                        } catch (SipException | InvalidArgumentException | ParseException e) {
+                                            logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 鍙戦�佹姤璀�: {}", e.getMessage());
+                                        }
+                                    }
+                                }
 
-                    if (ObjectUtils.isEmpty(gbId)) {
-                        // 鍙戦�佺粰鎵�鏈夌殑涓婄骇
-                        List<ParentPlatform> parentPlatforms = storage.queryEnableParentPlatformList(true);
-                        if (parentPlatforms.size() > 0) {
-                            for (ParentPlatform parentPlatform : parentPlatforms) {
-                                try {
-                                    commanderForPlatform.sendAlarmMessage(parentPlatform, deviceAlarm);
-                                } catch (SipException | InvalidArgumentException | ParseException e) {
-                                    logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 鍙戦�佹姤璀�: {}", e.getMessage());
+                            }
+                            // 鑾峰彇寮�鍚簡娑堟伅鎺ㄩ�佺殑璁惧鍜屽钩鍙�
+                            List<Device> devices = storage.queryDeviceWithAsMessageChannel();
+                            if (devices.size() > 0) {
+                                for (Device device : devices) {
+                                    try {
+                                        deviceAlarm.setChannelId(device.getDeviceId());
+                                        commander.sendAlarmMessage(device, deviceAlarm);
+                                    } catch (InvalidArgumentException | SipException | ParseException e) {
+                                        logger.error("[鍛戒护鍙戦�佸け璐 鍙戦�佹姤璀�: {}", e.getMessage());
+                                    }
                                 }
                             }
-                        }
-                    }else {
-                        Device device = storage.queryVideoDevice(gbId);
-                        ParentPlatform platform = storage.queryParentPlatByServerGBId(gbId);
-                        if (device != null && platform == null) {
-                            try {
-                                commander.sendAlarmMessage(device, deviceAlarm);
-                            } catch (InvalidArgumentException | SipException | ParseException e) {
-                                logger.error("[鍛戒护鍙戦�佸け璐 鍙戦�佹姤璀�: {}", e.getMessage());
-                            }
-                        }else if (device == null && platform != null){
-                            try {
-                                commanderForPlatform.sendAlarmMessage(platform, deviceAlarm);
-                            } catch (InvalidArgumentException | SipException | ParseException e) {
-                                logger.error("[鍛戒护鍙戦�佸け璐 鍙戦�佹姤璀�: {}", e.getMessage());
-                            }
+
                         }else {
-                            logger.warn("鏃犳硶纭畾" + gbId + "鏄钩鍙拌繕鏄澶�");
+                            Device device = storage.queryVideoDevice(gbId);
+                            ParentPlatform platform = storage.queryParentPlatByServerGBId(gbId);
+                            if (device != null && platform == null) {
+                                try {
+                                    commander.sendAlarmMessage(device, deviceAlarm);
+                                } catch (InvalidArgumentException | SipException | ParseException e) {
+                                    logger.error("[鍛戒护鍙戦�佸け璐 鍙戦�佹姤璀�: {}", e.getMessage());
+                                }
+                            }else if (device == null && platform != null){
+                                try {
+                                    commanderForPlatform.sendAlarmMessage(platform, deviceAlarm);
+                                } catch (InvalidArgumentException | SipException | ParseException e) {
+                                    logger.error("[鍛戒护鍙戦�佸け璐 鍙戦�佹姤璀�: {}", e.getMessage());
+                                }
+                            }else {
+                                logger.warn("鏃犳硶纭畾" + gbId + "鏄钩鍙拌繕鏄澶�");
+                            }
                         }
+                    }catch (Exception e) {
+                        logger.error("鏈鐞嗙殑寮傚父 ", e);
+                        logger.warn("[REDIS鐨凙LARM閫氱煡] 鍙戠幇鏈鐞嗙殑寮傚父, {}",e.getMessage());
                     }
                 }
-                taskQueueHandlerRun = false;
             });
         }
-
-
     }
 }

--
Gitblit v1.8.0