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