From a38cb5bb3898f8996321df8f8d537ea18f4af71f Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期五, 30 六月 2023 10:19:11 +0800
Subject: [PATCH] 优化
---
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GuideTask.java | 28 +++++++
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java | 68 +++++++----------
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java | 10 +
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java | 34 ++++++--
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java | 76 ++++++++++++++++--
ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/domain/ArdAlarmRadar.java | 9 ++
6 files changed, 163 insertions(+), 62 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GuideTask.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GuideTask.java
index 7636988..25f1db5 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GuideTask.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GuideTask.java
@@ -16,9 +16,37 @@
@AllArgsConstructor
public class GuideTask {
+ /**
+ * 鐩告満ID
+ */
String cameraId;
+ /**
+ * 鐩告満閫氶亾
+ */
+ Integer chanNum;
+ /**
+ * 鎶ヨID
+ */
String alarmId;
+ /**
+ * 鎶ヨ绫诲瀷
+ */
+ String alarmType;
+ /**
+ * 鎶ヨ浼樺厛绾�
+ */
Integer priority;
+ /**
+ * 鎶ヨ鏃堕棿
+ */
String alarmTime;
+ /**
+ * 鎶ヨ娆℃暟
+ */
Integer num;
+ /**
+ * 褰曞儚瀛樺偍浣嶇疆
+ */
+ Integer recordSn;
+
}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java
index 1a0e990..b90f567 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java
@@ -344,7 +344,7 @@
log.debug("tube鍏ュ簱鎴愬姛锛�" + ardAlarmTube);
String nearbyCamera = getNearbyCamera(new double[]{ardAlarmTube.getLongitude(), ardAlarmTube.getLatitude()});
if (StringUtils.isNotEmpty(nearbyCamera)) {
- messagesEnqueued(nearbyCamera, ardAlarmTube.getId(), "sys_tube_leak", ardAlarmTube.getAlarmTime(), 1);
+ messagesEnqueued(nearbyCamera, ardAlarmTube.getId(), "sys_tube_leak", ardAlarmTube.getAlarmTime(), 1,1);
}
}
//endregion
@@ -357,26 +357,6 @@
int aac = ardAlarmCameraMapper.insertArdAlarmCamera(ardAlarmCamera);
if (aac > 0) {
log.debug("camera鍏ュ簱鎴愬姛锛�" + ardAlarmCamera);
- String nearbyCamera = getNearbyCamera(new double[]{ardAlarmCamera.getLongitude(), ardAlarmCamera.getLatitude()});
- if (StringUtils.isNotEmpty(nearbyCamera)) {
- messagesEnqueued(nearbyCamera, ardAlarmCamera.getId(), "sys_camera", ardAlarmCamera.getAlarmTime(), 1);
- }
- //寮曞褰曞儚
-// CameraCmd cmd = new CameraCmd();
-// cmd.setRecordBucketName("record");
-// cmd.setRecordObjectName("camera");
-// cmd.setOperator("sys_camera");
-// cmd.setExpired(30);
-// cmd.setTargetPosition(new double[]{ardAlarmCamera.getLongitude(), ardAlarmCamera.getLatitude()});
-// boolean res = guideCamera(cmd);
-// if (res) {
-// String url = alarmToRecord(cmd);
-// if (StringUtils.isNotEmpty(url)) {
-// //鏇存柊褰曞儚
-// ardAlarmCamera.setRecordUrl(url);
-// ardAlarmCameraMapper.updateArdAlarmCamera(ardAlarmCamera);
-// }
-// }
}
//endregion
break;
@@ -410,41 +390,36 @@
String cameraIdWithTower = ardAlarmRadarMapper.getCameraByRadar(radarAlarmData.getRadarId());
if (StringUtils.isNotNull(cameraIdWithTower) && StringUtils.isNotEmpty(cameraIdWithTower)) {
//鍏ラ槦鍒楀緟寮曞
- messagesEnqueued(cameraIdWithTower, uuid, alarmType, ardAlarmRadar.getAlarmTime(), 1);
+ messagesEnqueued(cameraIdWithTower, uuid, alarmType, ardAlarmRadar.getAlarmTime(), 1,1);
}
} else {
//5鍒嗛挓鍐呮湁寮曞
ardAlarmRadar.setGuideFlag(0);
int count = ardAlarmRadarMapper.getArdAlarmRadarWithNotGuide(ardAlarmRadar, AlarmRadar.getCreateTime());
+ //鏈紩瀵艰秴杩�3娆★紝鐩存帴鍏ュ簱鍏ラ槦
if (count >= 3) {
- //鏈紩瀵艰秴杩�3娆★紝鐩存帴鍏ュ簱鍏ラ槦
- //5鍒嗛挓鍐呮湭寮曞鐩存帴鍏ュ簱
ardAlarmRadar.setGuideFlag(1);
ardAlarmRadarMapper.insertArdAlarmRadar(ardAlarmRadar);
- //鍏ラ槦鍒楀緟寮曞
+
//鑾峰彇闆疯揪鎵�鍦ㄥ涓婄殑澶у厜鐢�
String cameraIdWithTower = ardAlarmRadarMapper.getCameraByRadar(radarAlarmData.getRadarId());
if (StringUtils.isNotNull(cameraIdWithTower) && StringUtils.isNotEmpty(cameraIdWithTower)) {
//濡傛灉闆疯揪濉斾笂鏈夊厜鐢�
- messagesEnqueued(cameraIdWithTower, uuid, alarmType, ardAlarmRadar.getAlarmTime(), count);
+ messagesEnqueued(cameraIdWithTower, uuid, alarmType, ardAlarmRadar.getAlarmTime(), count,1);
+ }
+ //鑾峰彇鎶ヨ鐐瑰叧鑱旂殑澶у厜鐢�
+ ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(ardAlarmRadar.getName());
+ if(StringUtils.isNotNull(ardAlarmpointsWell) && StringUtils.isNotEmpty(ardAlarmpointsWell.getCameraId()))
+ {
+ String cameraId = ardAlarmpointsWell.getCameraId();
+ //濡傛灉鎶ヨ鐐瑰叧鑱斾簡鍏夌數
+ messagesEnqueued(cameraId, uuid, alarmType, ardAlarmRadar.getAlarmTime(), count,1);
}
} else {
//鏈紩瀵兼湭瓒呰繃3娆★紝鐩存帴鍏ュ簱
ardAlarmRadarMapper.insertArdAlarmRadar(ardAlarmRadar);
}
-
}
-
-
- //鑾峰彇鍏磋叮鐐瑰叧鑱旂殑澶у厜鐢�
-// ArdAlarmpointsWell well=new ArdAlarmpointsWell();
-// well.setWellId(ardAlarmRadar.getName());
-// List<ArdAlarmpointsWell> ardAlarmpointsWells = ardAlarmpointsWellMapper.selectArdAlarmpointsWellList(well);
-// if(ardAlarmpointsWells!=null&&ardAlarmpointsWells.size()>0)
-// {
-// String cameraIdWithWell = ardAlarmpointsWells.get(0).getCameraId();
-// }
-
}
//endregion
break;
@@ -459,16 +434,29 @@
/**
* 娑堟伅鍏ラ槦
*/
- private void messagesEnqueued (String cameraId, String alarmId, String alarmType, Date alarmTime, Integer num) {
+ private void messagesEnqueued(String cameraId, String alarmId, String alarmType, Date alarmTime, Integer num, Integer recordSn) {
+
GuideTask guideTask = new GuideTask();
+ /*閰嶇疆鐩告満ID*/
guideTask.setCameraId(cameraId);
+ /*鏍规嵁閰嶇疆鏃堕棿閰嶇疆閫氶亾*/
+ String dayNightTime = redisCache.getCacheObject("sys_config:dayNightTime");
+ Integer channel = ArdTool.getChannelBydayNightTime(dayNightTime);
+ guideTask.setChanNum(channel);
+ /*閰嶇疆鎶ヨID*/
guideTask.setAlarmId(alarmId);
+ /*閰嶇疆鎶ヨ鏃堕棿*/
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
guideTask.setAlarmTime(fmt.format(alarmTime));
+ /*閰嶇疆鎶ヨ浼樺厛绾�*/
Integer priority = CamPriority.priorityMap.get(alarmType);
guideTask.setPriority(priority);
+ /*閰嶇疆鎶ヨ娆℃暟*/
guideTask.setNum(num);
- queueManager.addTaskToQueue(cameraId,guideTask);
+ /*閰嶇疆褰曞儚瀛樺偍浣嶇疆*/
+ guideTask.setRecordSn(recordSn);
+ /*娑堟伅鍏ラ槦*/
+ queueManager.addTaskToQueue(cameraId, guideTask);
// PriorityBlockingQueue<GuideTask> priorityBlockingQueue = GuidePriorityQueue.cameraQueueMap.get(guideTask.getCameraId());
// priorityBlockingQueue.add(guideTask);
}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java
index 0703126..f9b3861 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java
@@ -13,7 +13,7 @@
/**
* @ClassName QueueManager
- * @Description:
+ * @Description: 闃熷垪绠$悊
* @Author 鍒樿嫃涔�
* @Date 2023/6/29 21:09
* @Version 1.0
@@ -26,6 +26,7 @@
private QueueTaskExecutor taskExecutor;
private Map<String, TaskThread> threadMap = new ConcurrentHashMap<>();
+ /*鍐呴儴闈欐�佺被*/
private static class TaskThread {
private Thread thread;
private GuideTask currentTask;
@@ -48,36 +49,49 @@
}
}
- public void addTaskToQueue(String queueName, GuideTask task) {
- PriorityBlockingQueue<GuideTask> guideTaskQueue = GuidePriorityQueue.cameraQueueMap.get(queueName);
+ /**
+ * 寮曞浠诲姟鍏ラ槦
+ * 鍒樿嫃涔�
+ * 2023/6/30 8:57
+ */
+ public void addTaskToQueue(String cameraId, GuideTask task) {
+ /*閫氳繃鐩告満ID鑾峰彇寮曞闃熷垪锛屽苟灏嗗紩瀵间换鍔″姞鍏ラ槦鍒�*/
+ PriorityBlockingQueue<GuideTask> guideTaskQueue = GuidePriorityQueue.cameraQueueMap.get(cameraId);
guideTaskQueue.add(task);
- TaskThread currentTaskThread = threadMap.get(queueName);
+ /*鑾峰彇璇ョ浉鏈虹殑褰撳墠鎵ц绾跨▼*/
+ TaskThread currentTaskThread = threadMap.get(cameraId);
+ //濡傛灉闃熷垪褰撳墠绾跨▼姝e湪杩愯锛岃嫢鍏ラ槦浠诲姟浼樺厛绾уぇ浜庡綋鍓嶄换鍔′紭鍏堢骇锛屽垯缁堟褰撳墠绾跨▼
if (currentTaskThread != null && task.getPriority() > currentTaskThread.getCurrentTask().getPriority()) {
currentTaskThread.getThread().interrupt();
}
-
- // Start a new thread if no thread is currently running for the queue
+ //濡傛灉闃熷垪褰撳墠娌℃湁绾跨▼姝e湪杩愯锛屽垯鍚姩鏂扮嚎绋�
if (currentTaskThread == null || !currentTaskThread.getThread().isAlive()) {
- Thread newThread = createThread(queueName, guideTaskQueue);
- threadMap.put(queueName, new TaskThread(newThread, task));
+ Thread newThread = createThread(cameraId, guideTaskQueue);
+ threadMap.put(cameraId, new TaskThread(newThread, task));
newThread.start();
}
}
+ /**
+ * 鍒涘缓绾跨▼
+ * 鍒樿嫃涔�
+ * 2023/6/30 9:04
+ */
private Thread createThread(String queueName, PriorityBlockingQueue<GuideTask> queue) {
+
return new Thread(() -> {
while (!Thread.currentThread().isInterrupted()) {
try {
GuideTask task = queue.take();
taskExecutor.processTask(task);
GuidePriorityQueue.printPriorityQueue();
- // Update the current task for the thread
+ // 鏇存柊绾跨▼鐨勫綋鍓嶄换鍔�
TaskThread currentTaskThread = threadMap.get(queueName);
if (currentTaskThread != null) {
currentTaskThread.setCurrentTask(task);
}
} catch (InterruptedException e) {
- // Thread interrupted, exit the loop
+ //绾跨▼涓柇锛岄��鍑哄惊鐜�
Thread.currentThread().interrupt();
}
}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java
index 553da24..3f43366 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java
@@ -1,25 +1,83 @@
package com.ruoyi.alarm.globalAlarm.service.impl;
+import com.ruoyi.alarm.globalAlarm.domain.GuideTask;
+import com.ruoyi.alarm.radarAlarm.domain.ArdAlarmRadar;
+import com.ruoyi.alarm.radarAlarm.service.IArdAlarmRadarService;
+import com.ruoyi.alarm.tubeAlarm.domain.ArdAlarmTube;
+import com.ruoyi.alarm.tubeAlarm.service.IArdAlarmTubeService;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.device.camera.domain.CameraCmd;
+import com.ruoyi.device.hiksdk.service.IHikClientService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
/**
* @ClassName QueueTaskExecutor
- * @Description:
+ * @Description: 闃熷垪浠诲姟鎵ц鍣�
* @Author 鍒樿嫃涔�
* @Date 2023/6/29 21:10
* @Version 1.0
*/
-import com.ruoyi.alarm.globalAlarm.domain.GuideTask;
-import org.springframework.stereotype.Component;
-
@Component
+@Slf4j
public class QueueTaskExecutor {
+ @Resource
+ IHikClientService hikClientService;
+ @Resource
+ IArdAlarmTubeService ardAlarmTubeService;
+ @Resource
+ IArdAlarmRadarService ardAlarmRadarService;
+
public void processTask(GuideTask guideTask) {
- System.out.println("Executing task: " + guideTask.getAlarmId());
try {
- Thread.sleep(30000);
- } catch (InterruptedException e) {
- e.printStackTrace();
+ CameraCmd cmd = new CameraCmd();
+ cmd.setCameraId(guideTask.getCameraId());
+ cmd.setChannelNum(guideTask.getNum());
+ boolean guideRes = hikClientService.guideTargetPosition(cmd);
+ if (guideRes) {
+ hikClientService.controlLock(cmd);//涓婇攣
+ cmd.setEnable(true);//寮�濮嬪綍鍍�
+ hikClientService.recordToMinio(cmd);//寮�濮嬪綍鍍�
+ Thread.sleep(30000);
+ cmd.setEnable(false);//鍋滄褰曞儚
+ cmd.setUploadMinio(true);//涓婁紶minio
+ String url = hikClientService.recordToMinio(cmd);//鍋滄褰曞儚杩斿洖url
+ if (StringUtils.isNotEmpty(url)) {
+ switch (guideTask.getAlarmType()) {
+ case "sys_tube_leak":
+ ArdAlarmTube ardAlarmTube = new ArdAlarmTube();
+ ardAlarmTube.setId(guideTask.getAlarmId());
+ ardAlarmTube.setRecordUrl(url);
+ ardAlarmTubeService.updateArdAlarmTube(ardAlarmTube);
+ break;
+ case "sys_radar_move":
+ ArdAlarmRadar ardAlarmRadar = new ArdAlarmRadar();
+ ardAlarmRadar.setId(guideTask.getAlarmId());
+ if (guideTask.getRecordSn().equals(1)) {
+ ardAlarmRadar.setRecordUrl1(url);
+ } else {
+ ardAlarmRadar.setRecordUrl2(url);
+ }
+ ardAlarmRadarService.updateArdAlarmRadar(ardAlarmRadar);
+ break;
+ case "sys_radar_fire":
+ ardAlarmRadar = new ArdAlarmRadar();
+ ardAlarmRadar.setId(guideTask.getAlarmId());
+ if (guideTask.getRecordSn().equals(1)) {
+ ardAlarmRadar.setRecordUrl1(url);
+ } else {
+ ardAlarmRadar.setRecordUrl2(url);
+ }
+ ardAlarmRadarService.updateArdAlarmRadar(ardAlarmRadar);
+ break;
+ }
+ }
+ }
+ } catch (Exception ex) {
+ log.info("鑷姩寮曞寮傚父:" + ex.getMessage());
}
- System.out.println("finished task: " + guideTask.getAlarmId());
}
}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/domain/ArdAlarmRadar.java b/ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/domain/ArdAlarmRadar.java
index 2a92045..b58c0fb 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/domain/ArdAlarmRadar.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/radarAlarm/domain/ArdAlarmRadar.java
@@ -73,4 +73,13 @@
* 寮曞鏍囪
*/
private Integer guideFlag;
+ /**
+ * 褰曞儚url1
+ */
+ private String recordUrl1;
+ /**
+ * 褰曞儚url2
+ */
+ private String recordUrl2;
+
}
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java
index 674c5bd..7a93710 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java
@@ -6,6 +6,7 @@
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.camera.domain.CameraCmd;
import com.ruoyi.device.camera.service.IArdCamerasService;
+import com.ruoyi.device.hiksdk.common.GlobalVariable;
import com.ruoyi.device.hiksdk.service.IHikClientService;
import org.springframework.stereotype.Component;
@@ -46,14 +47,17 @@
CameraCmd cmd = new CameraCmd();
cmd.setCameraId(camera.getId());
cmd.setChannelNum(1);
- Map<String, Object> ptz = hikClientService.getPtz(cmd);
- if(StringUtils.isNull(ptz))
+ if (!GlobalVariable.loginMap.containsKey(camera.getId()))//鍙帹閫佺櫥褰曟垚鍔熺殑鐩告満
{
+ continue;
+ }
+ Map<String, Object> ptz = hikClientService.getPtz(cmd);
+ if (StringUtils.isNull(ptz)) {
continue;
}
if (ptz.size() > 0) {
ptz.put("cameraId", camera.getId());
- ptz.put("operatorExpired",camera.getOperatorExpired());
+ ptz.put("operatorExpired", camera.getOperatorExpired());
list.add(ptz);
}
}
--
Gitblit v1.9.3