From 167d184121945c0d6098b92fcaeec5e3c8fd4fa3 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期一, 07 八月 2023 11:56:27 +0800
Subject: [PATCH] 优化雷达报警

---
 ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java |   90 +++++++++++++++++++++++++++-----------------
 1 files changed, 55 insertions(+), 35 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
index 074021f..1ae7064 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
@@ -52,6 +52,7 @@
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.PriorityBlockingQueue;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -431,6 +432,7 @@
         }
     }
 
+    private  Map<String,Integer> guideCountMap=new HashMap<>();
     /**
      * @鎻忚堪 寮傛澶勭悊鎺ユ敹鐨勬姤璀�
      * @鍙傛暟 [topic, message]
@@ -544,14 +546,13 @@
 
                         //鍒ゆ柇褰撳墠鎶ヨ鐐�5鍒嗛挓鍐呮槸鍚﹀凡寮曞
                         ardAlarmRadar.setGuideFlag(1);
-                        ArdAlarmRadar AlarmRadar = ardAlarmRadarMapper.getArdAlarmRadarWithGuide(ardAlarmRadar);
-                        // 缁撴潫鏃堕棿
-                        long etime = System.currentTimeMillis();
-                        // 璁$畻鎵ц鏃堕棿
-                        log.info("鏌ヨAPI鎵ц鏃堕暱锛�"+(etime-stime)+"姣");
-                        if (StringUtils.isNull(AlarmRadar)) {
+                       // ArdAlarmRadar AlarmRadar = ardAlarmRadarMapper.getArdAlarmRadarWithGuide(ardAlarmRadar);
+                        ArdAlarmRadar AlarmRadar = redisCache.getCacheObject("global_alarm:"+ardAlarmRadar.getName());//浠巖edis涓彇鍑烘渶鏂板紩瀵肩殑鎶ヨ鏁版嵁
+                        if (AlarmRadar==null) {
                             //5鍒嗛挓鍐呮湭寮曞鐩存帴鍏ュ簱
                             ardAlarmRadarMapper.insertArdAlarmRadar(ardAlarmRadar);
+                            redisCache.setCacheObject("global_alarm:"+ardAlarmRadar.getName(),ardAlarmRadar,5, TimeUnit.MINUTES);//寮曞鏁版嵁鍐欏叆redis
+                            guideCountMap.put(ardAlarmRadar.getName(),0);
                             //鑾峰彇闆疯揪鎵�鍦ㄥ涓婄殑澶у厜鐢�
                             String cameraIdWithTower = ardAlarmRadarMapper.getCameraByRadar(radarAlarmData.getRadarId());
                             if (StringUtils.isNotNull(cameraIdWithTower) && StringUtils.isNotEmpty(cameraIdWithTower)) {
@@ -563,7 +564,7 @@
                             ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(alarmpointName);
                             if (StringUtils.isNotNull(ardAlarmpointsWell) && StringUtils.isNotEmpty(ardAlarmpointsWell.getCameraId())) {
                                 String cameraId = ardAlarmpointsWell.getCameraId();
-                                if (cameraIdWithTower.equals(cameraId)) {
+                                if (cameraId.equals(cameraIdWithTower)) {
                                     return;
                                 }
                                 log.info("鑾峰彇鍒版姤璀︾偣鍏宠仈鐨勫厜鐢�:" + cameraId);
@@ -571,36 +572,53 @@
                                 messagesEnqueued(cameraId, uuid, alarmType, ardAlarmRadar.getCreateTime(), 1, 2, coordinate);
                             }
                         } else {
-                            //5鍒嗛挓鍐呮湁寮曞
-                            ardAlarmRadar.setGuideFlag(0);
-                            int count = ardAlarmRadarMapper.getArdAlarmRadarWithNotGuide(ardAlarmRadar, AlarmRadar.getCreateTime());
-                            //鏈紩瀵艰秴杩�3娆★紝鐩存帴鍏ュ簱鍏ラ槦
-                            if (count >= 3) {
-                                ardAlarmRadar.setGuideFlag(1);
-                                ardAlarmRadarMapper.insertArdAlarmRadar(ardAlarmRadar);
-                                //鑾峰彇闆疯揪鎵�鍦ㄥ涓婄殑澶у厜鐢�
-                                String cameraIdWithTower = ardAlarmRadarMapper.getCameraByRadar(radarAlarmData.getRadarId());
-                                if (StringUtils.isNotNull(cameraIdWithTower) && StringUtils.isNotEmpty(cameraIdWithTower)) {
-                                    log.info("鑾峰彇鍒伴浄杈惧涓婄殑鍏夌數:" + cameraIdWithTower);
-                                    //濡傛灉闆疯揪濉斾笂鏈夊厜鐢�
-                                    messagesEnqueued(cameraIdWithTower, uuid, alarmType, ardAlarmRadar.getCreateTime(), count, 1, coordinate);
-                                }
-                                //鑾峰彇鎶ヨ鐐瑰叧鑱旂殑澶у厜鐢�
-                                ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(alarmpointName);
-                                if (StringUtils.isNotNull(ardAlarmpointsWell) && StringUtils.isNotEmpty(ardAlarmpointsWell.getCameraId())) {
-                                    String cameraId = ardAlarmpointsWell.getCameraId();
-                                    if (cameraId.equals(cameraIdWithTower)) {
-                                        return;
+                            //鑾峰彇褰撳墠鎶ヨ鐐圭殑鏈紩瀵兼鏁�
+                            Integer count = guideCountMap.get(ardAlarmRadar.getName());
+                            if(count!=null)
+                            {
+                                if(count>2)
+                                {
+                                    ardAlarmRadar.setGuideFlag(1);
+                                    redisCache.setCacheObject("global_alarm:"+ardAlarmRadar.getName(),ardAlarmRadar,5, TimeUnit.MINUTES);//寮曞鏁版嵁鍐欏叆redis
+                                    count=0;
+
+                                    //鑾峰彇闆疯揪鎵�鍦ㄥ涓婄殑澶у厜鐢�
+                                    String cameraIdWithTower = ardAlarmRadarMapper.getCameraByRadar(radarAlarmData.getRadarId());
+                                    if (StringUtils.isNotNull(cameraIdWithTower) && StringUtils.isNotEmpty(cameraIdWithTower)) {
+                                        log.info("鑾峰彇鍒伴浄杈惧涓婄殑鍏夌數:" + cameraIdWithTower);
+                                        //濡傛灉闆疯揪濉斾笂鏈夊厜鐢�
+                                        messagesEnqueued(cameraIdWithTower, uuid, alarmType, ardAlarmRadar.getCreateTime(), count, 1, coordinate);
                                     }
-                                    log.info("鑾峰彇鍒版姤璀︾偣鍏宠仈鐨勫厜鐢�:" + cameraId);
-                                    //濡傛灉鎶ヨ鐐瑰叧鑱斾簡鍏夌數
-                                    messagesEnqueued(cameraId, uuid, alarmType, ardAlarmRadar.getCreateTime(), count, 2, coordinate);
+                                    //鑾峰彇鎶ヨ鐐瑰叧鑱旂殑澶у厜鐢�
+                                    ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(alarmpointName);
+                                    if (StringUtils.isNotNull(ardAlarmpointsWell) && StringUtils.isNotEmpty(ardAlarmpointsWell.getCameraId())) {
+                                        String cameraId = ardAlarmpointsWell.getCameraId();
+                                        if (cameraId.equals(cameraIdWithTower)) {
+                                            return;
+                                        }
+                                        log.info("鑾峰彇鍒版姤璀︾偣鍏宠仈鐨勫厜鐢�:" + cameraId);
+                                        //濡傛灉鎶ヨ鐐瑰叧鑱斾簡鍏夌數
+                                        messagesEnqueued(cameraId, uuid, alarmType, ardAlarmRadar.getCreateTime(), count, 2, coordinate);
+                                    }
                                 }
-                            } else {
-                                //鏈紩瀵兼湭瓒呰繃3娆★紝鐩存帴鍏ュ簱
-                                ardAlarmRadarMapper.insertArdAlarmRadar(ardAlarmRadar);
+                                else
+                                {
+                                    ardAlarmRadar.setGuideFlag(0);
+                                    count++;
+                                }
                             }
+                            else
+                            {
+                                ardAlarmRadar.setGuideFlag(0);
+                                count=0;
+                            }
+                            guideCountMap.put(ardAlarmRadar.getName(),count);
+                            ardAlarmRadarMapper.insertArdAlarmRadar(ardAlarmRadar);
                         }
+                        // 缁撴潫鏃堕棿
+                        long etime = System.currentTimeMillis();
+                        // 璁$畻鎵ц鏃堕棿
+                        log.info("闆疯揪鎶ヨ澶勭悊鏃堕暱锛�"+(etime-stime)+"姣");
                     }
 
                     //endregion
@@ -736,8 +754,10 @@
     private Boolean IsEnableGuide(String cameraId) {
         boolean enabled = false;
         ArdCameras ardCameras = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-        if (ardCameras.getCamAlarmGuideEnable().equals(1)) {
-            enabled = true;
+        if(ardCameras!=null) {
+            if (ardCameras.getCamAlarmGuideEnable().equals(1)) {
+                enabled = true;
+            }
         }
         return enabled;
     }

--
Gitblit v1.9.3