From ba1e219d97e123b91657dc424f13a2fdeaa85d21 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: Mon, 21 Aug 2023 13:37:01 +0800
Subject: [PATCH] 修改兴趣点列表井号模糊查询
---
ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java | 36 ++++++++++++++++++++----------------
1 files changed, 20 insertions(+), 16 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 a5935ee..0529d64 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
@@ -45,11 +45,13 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
+
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
+
/**
* @Description: 全局报警业务
@@ -499,6 +501,7 @@
//region 处理通用光电报警
ArdAlarmCamera ardAlarmCamera = JSONObject.parseObject(message, ArdAlarmCamera.class);
ardAlarmCamera.setId(IdUtils.simpleUUID());
+ ardAlarmCamera.setCreateTime(new Date());
int aac = ardAlarmCameraMapper.insertArdAlarmCamera(ardAlarmCamera);
if (aac > 0) {
log.debug("camera入库成功:" + ardAlarmCamera);
@@ -507,8 +510,6 @@
break;
case "radar":
//region 处理雷达报警
- // 开始时间
- long stime = System.currentTimeMillis();
RadarAlarmData radarAlarmData = JSONObject.parseObject(message, RadarAlarmData.class);
List<ArdAlarmRadar> ardAlarmRadars = radarAlarmData.getArdAlarmRadars();
for (ArdAlarmRadar ardAlarmRadar : ardAlarmRadars) {
@@ -519,10 +520,9 @@
ardAlarmRadar.setName(ardAlarmRadar.getName() + "(" + radarAlarmData.getRadarName() + ")");//报警点名称
ardAlarmRadar.setCreateTime(new Date());//接收时间
- String alarmType = "";
switch (ardAlarmRadar.getAlarmType()) {
case "运动目标检测":
- alarmType = "sys_radar_move";
+ String alarmType = "sys_radar_move";
break;
case "热源检测":
alarmType = "sys_radar_fire";
@@ -536,11 +536,21 @@
}
break;
}
+ //入库
+ ardAlarmRadarMapper.insertArdAlarmRadar(ardAlarmRadar);
+
+ }
+ //按兴趣点去重,然后按引导逻辑进行引导入队
+ ardAlarmRadars = ardAlarmRadars.stream()
+ .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new java.util.TreeSet<>(java.util.Comparator.comparing(ArdAlarmRadar::getName))), ArrayList::new));
+ for(ArdAlarmRadar ardAlarmRadar : ardAlarmRadars)
+ {
+ //遍历报警数据进行引导
if (StringUtils.isNull(ardAlarmRadar.getLongitude()) || StringUtils.isNull(ardAlarmRadar.getLatitude())) {
+ //坐标为空不引导
continue;
}
double[] coordinate = new double[]{ardAlarmRadar.getLongitude(), ardAlarmRadar.getLatitude()};//报警坐标
-
//从redis中取出当前报警点的5分钟内是否有引导
ArdAlarmRadar AlarmRadar = redisCache.getCacheObject("global_alarm:" + ardAlarmRadar.getName());//从redis中取出最新引导的报警数据
if (AlarmRadar == null) {
@@ -550,7 +560,7 @@
redisCache.setCacheObject("global_alarm:" + ardAlarmRadar.getName(), ardAlarmRadar, 5, TimeUnit.MINUTES);//引导数据写入redis
unGuideCountMap.put(ardAlarmRadar.getName(), 0);
//引导入队
- radarGuide(radarAlarmData.getRadarId(), alarmpointName, alarmType, ardAlarmRadar.getCreateTime(), coordinate);
+ radarGuide(radarAlarmData.getRadarId(), ardAlarmRadar.getName(), ardAlarmRadar.getAlarmType(), ardAlarmRadar.getCreateTime(), coordinate);
} else {
//5分钟内redis中有数据,说明5分钟内有引导数据,获取当前报警点的未引导次数
@@ -563,7 +573,7 @@
redisCache.setCacheObject("global_alarm:" + ardAlarmRadar.getName(), ardAlarmRadar, 5, TimeUnit.MINUTES);
count = 0;
//引导入队
- radarGuide(radarAlarmData.getRadarId(), alarmpointName, alarmType, ardAlarmRadar.getCreateTime(), coordinate);
+ radarGuide(radarAlarmData.getRadarId(), ardAlarmRadar.getName(), ardAlarmRadar.getAlarmType(), ardAlarmRadar.getCreateTime(), coordinate);
} else {
ardAlarmRadar.setGuideFlag(0);
count++;
@@ -573,15 +583,10 @@
count = 0;
}
unGuideCountMap.put(ardAlarmRadar.getName(), count);
+ //更新
+ ardAlarmRadarMapper.updateArdAlarmRadar(ardAlarmRadar);
}
- //入库
- ardAlarmRadarMapper.insertArdAlarmRadar(ardAlarmRadar);
- // 结束时间
- long etime = System.currentTimeMillis();
- // 计算执行时间
- log.debug("雷达报警处理时长:" + (etime - stime) + "毫秒");
}
-
//endregion
break;
case "external":
@@ -691,8 +696,7 @@
guideTask.setReceiveTime(fmt.format(receiveTime));
//报警优先级(通过优先级字典)
String priority = DictUtils.getDictValue("cameras_priority", alarmType);
- if(StringUtils.isEmpty(priority))
- {
+ if (StringUtils.isEmpty(priority)) {
log.debug("未匹配到优先级,请检查优先级字典配置");
return;
}
--
Gitblit v1.9.3