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 |   77 +++++++++++++++++++++++---------------
 1 files changed, 46 insertions(+), 31 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 6d761a0..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]
@@ -545,11 +547,12 @@
                         //鍒ゆ柇褰撳墠鎶ヨ鐐�5鍒嗛挓鍐呮槸鍚﹀凡寮曞
                         ardAlarmRadar.setGuideFlag(1);
                        // ArdAlarmRadar AlarmRadar = ardAlarmRadarMapper.getArdAlarmRadarWithGuide(ardAlarmRadar);
-                        ArdAlarmRadar AlarmRadar = redisCache.getCacheObject("global_alarm:guideNew");//浠巖edis涓彇鍑烘渶鏂板紩瀵肩殑鎶ヨ鏁版嵁
-                        if (StringUtils.isNull(AlarmRadar)) {
+                        ArdAlarmRadar AlarmRadar = redisCache.getCacheObject("global_alarm:"+ardAlarmRadar.getName());//浠巖edis涓彇鍑烘渶鏂板紩瀵肩殑鎶ヨ鏁版嵁
+                        if (AlarmRadar==null) {
                             //5鍒嗛挓鍐呮湭寮曞鐩存帴鍏ュ簱
                             ardAlarmRadarMapper.insertArdAlarmRadar(ardAlarmRadar);
-                            redisCache.setCacheObject("global_alarm:guideNew",ardAlarmRadar);//寮曞鏁版嵁鍐欏叆redis
+                            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)) {
@@ -569,41 +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);
-                                redisCache.setCacheObject("global_alarm:guideNew",ardAlarmRadar);//寮曞鏁版嵁鍐欏叆redis
-                                //鑾峰彇闆疯揪鎵�鍦ㄥ涓婄殑澶у厜鐢�
-                                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("鏌ヨAPI鎵ц鏃堕暱锛�"+(etime-stime)+"姣");
+                        log.info("闆疯揪鎶ヨ澶勭悊鏃堕暱锛�"+(etime-stime)+"姣");
                     }
 
                     //endregion

--
Gitblit v1.9.3