From 113cf98d7d26460363d7ef13990623a775c636a2 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 周四, 01 6月 2023 14:33:47 +0800
Subject: [PATCH] 优化光电巡检手动控制
---
/dev/null | 19 --
ard-work/src/main/java/com/ruoyi/inspect/service/IArdVideoInspectTaskService.java | 2
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java | 2
ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java | 123 +++++++-------
ard-work/src/main/java/com/ruoyi/inspect/controller/TaskController.java | 53 ++++++
ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java | 81 ++++++++++
ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java | 58 +++---
ruoyi-admin/src/main/resources/application-ard.yml | 2
ruoyi-admin/src/main/resources/application.yml | 2
ard-work/src/main/java/com/ruoyi/device/hiksdk/common/GlobalVariable.java | 22 ++
ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java | 2
ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTask.java | 76 +++++++++
12 files changed, 326 insertions(+), 116 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/common/GlobalVariable.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/common/GlobalVariable.java
new file mode 100644
index 0000000..2fd88fc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/common/GlobalVariable.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.hiksdk.common;
+
+import com.ruoyi.device.hiksdk.domain.recordInfo;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @ClassName: globalVariable
+ * @Description: 全局变量
+ * @Author: Administrator
+ * @Date: 2023年01月31日 17:05
+ * @Version: 1.0
+ **/
+@Data
+public class GlobalVariable {
+ //保存相机登录信息
+ public static Map<String, Integer> loginMap = new HashMap<>();
+ //保存录像信息
+ public static Map<Integer, recordInfo> user_real_Map = new HashMap<>();
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/common/global/globalVariable.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/common/global/globalVariable.java
deleted file mode 100644
index 8a45b3c..0000000
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/common/global/globalVariable.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.ruoyi.device.hiksdk.common.global;
-
-import lombok.Data;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @ClassName: globalVariable
- * @Description: 全局变量
- * @Author: Administrator
- * @Date: 2023年01月31日 17:05
- * @Version: 1.0
- **/
-@Data
-public class globalVariable {
- //保存相机登录信息
- public static Map<String,Integer> loginMap=new HashMap<>();
-}
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java
index 58a292a..ab13ecc 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java
@@ -86,8 +86,10 @@
//手动录像
String record(CameraCmd cmd);
+
//手动录像
void recordToMinio(CameraCmd cmd);
+
//引导目标位置
boolean setTargetPosition(CameraCmd cmd);
}
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
index 8ffb5d9..fe82c91 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
@@ -8,7 +8,7 @@
import com.ruoyi.constant.sdkPriority;
import com.ruoyi.device.camera.domain.CameraCmd;
import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
-import com.ruoyi.device.hiksdk.common.global.globalVariable;
+import com.ruoyi.device.hiksdk.common.GlobalVariable;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
import com.ruoyi.device.hiksdk.domain.recordInfo;
@@ -54,7 +54,6 @@
SysUserMapper sysUserMapper;
private static HCNetSDK hCNetSDK;
- private static Map<Integer, recordInfo> user_real_Map = new HashMap<>();
@Override
public void loadHCNetSDKLib() {
@@ -133,10 +132,10 @@
hCNetSDK.NET_DVR_Cleanup();
camera.setLoginId(-1);
}
- if (globalVariable.loginMap.containsKey(camera.getId())) {
- globalVariable.loginMap.remove(camera.getId());
+ if (GlobalVariable.loginMap.containsKey(camera.getId())) {
+ GlobalVariable.loginMap.remove(camera.getId());
}
- globalVariable.loginMap.put(camera.getId(), lUserID);
+ GlobalVariable.loginMap.put(camera.getId(), lUserID);
camera.setLoginId(lUserID);
camera.setChannel((int) m_strDeviceInfo.byStartChan);
@@ -194,13 +193,13 @@
*/
@Override
public boolean loginOut(String cameraId) {
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return false;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
boolean b = hCNetSDK.NET_DVR_Logout(userId);
if (b) {
- globalVariable.loginMap.remove(cameraId);
+ GlobalVariable.loginMap.remove(cameraId);
}
return b;
}
@@ -213,10 +212,10 @@
@Override
public boolean isOnLine(CameraCmd cmd) {
String cameraId = cmd.getCameraId();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return false;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
boolean isOnLine = hCNetSDK.NET_DVR_RemoteControl(userId, HCNetSDK.NET_DVR_CHECK_USER_STATUS, null, 0);
return isOnLine;
}
@@ -239,10 +238,10 @@
Integer channelNum = cmd.getChannelNum();
Integer speed = cmd.getSpeed();
Integer code = cmd.getCode();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return false;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
Integer dwStop;
if (enable) {
dwStop = 0;//开启
@@ -324,10 +323,10 @@
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
Integer dwFocusPos = cmd.getDwFocusPos();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return false;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
NET_DVR_FOCUSMODE_CFG focusmodeCfg = new NET_DVR_FOCUSMODE_CFG();
Pointer point = focusmodeCfg.getPointer();
@@ -351,10 +350,10 @@
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return new HashMap<>();
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
NET_DVR_FOCUSMODE_CFG focusmodeCfg = new NET_DVR_FOCUSMODE_CFG();
Pointer point = focusmodeCfg.getPointer();
@@ -385,10 +384,10 @@
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
Integer PresetIndex = cmd.getPresetIndex();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return false;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, SET_PRESET, PresetIndex);
if (!bool) {
int code = hCNetSDK.NET_DVR_GetLastError();
@@ -408,10 +407,10 @@
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
Integer PresetIndex = cmd.getPresetIndex();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return false;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, GOTO_PRESET, PresetIndex);
if (!bool) {
int code = hCNetSDK.NET_DVR_GetLastError();
@@ -432,10 +431,10 @@
public String getVideoResolution(CameraCmd cmd) {
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return " ";
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
String ResResolution = "";
NET_DVR_COMPRESSIONCFG_V30 resolution = new NET_DVR_COMPRESSIONCFG_V30();
@@ -538,10 +537,10 @@
public Map<String, Object> getPtz(CameraCmd cmd) {
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return null;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
Pointer pioint = m_ptzPosCurrent.getPointer();
@@ -590,10 +589,10 @@
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
Map<String, Double> ptz = cmd.getPtzMap();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return false;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
m_ptzPosCurrent.wAction = 1;
try {
@@ -622,10 +621,10 @@
public boolean setTargetPosition(CameraCmd cmd) {
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return false;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
m_ptzPosCurrent.wAction = 1;
try {
@@ -736,10 +735,10 @@
public int getPTZLockInfo(CameraCmd cmd) {
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return -1;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
NET_DVR_PTZ_LOCKCFG netDvrPtzLockcfg = new NET_DVR_PTZ_LOCKCFG();
Pointer point = netDvrPtzLockcfg.getPointer();
IntByReference ibrBytesReturned = new IntByReference(0);
@@ -769,10 +768,10 @@
public boolean setZeroPtz(CameraCmd cmd) {
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return false;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
NET_DVR_INITIALPOSITIONCTRL initialpositionctrl = new NET_DVR_INITIALPOSITIONCTRL();
initialpositionctrl.dwSize = initialpositionctrl.size();
@@ -801,10 +800,10 @@
public Map<String, Object> getPtzScope(CameraCmd cmd) {
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return new HashMap<>();
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
NET_DVR_PTZSCOPE m_ptzPosCurrent = new NET_DVR_PTZSCOPE();
Pointer point = m_ptzPosCurrent.getPointer();
IntByReference ibrBytesReturned = new IntByReference(0);
@@ -850,10 +849,10 @@
String cameraId = cmd.getCameraId();
boolean enable = cmd.isEnable();
Integer channelNum = cmd.getChannelNum();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return false;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
NET_DVR_CAMERAPARAMCFG_EX struCameraParam = new NET_DVR_CAMERAPARAMCFG_EX();
Pointer point = struCameraParam.getPointer();
IntByReference ibrBytesReturned = new IntByReference(0);
@@ -897,10 +896,10 @@
String cameraId = cmd.getCameraId();
boolean enable = cmd.isEnable();
Integer channelNum = cmd.getChannelNum();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return false;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
NET_DVR_CAMERAPARAMCFG_EX struDayNigh = new NET_DVR_CAMERAPARAMCFG_EX();
Pointer point = struDayNigh.getPointer();
IntByReference ibrBytesReturned = new IntByReference(0);
@@ -946,10 +945,10 @@
String cameraId = cmd.getCameraId();
boolean enable = cmd.isEnable();
Integer channelNum = cmd.getChannelNum();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return false;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG();
Pointer point = struFocusMode.getPointer();
IntByReference ibrBytesReturned = new IntByReference(0);
@@ -993,10 +992,10 @@
String cameraId = cmd.getCameraId();
boolean enable = cmd.isEnable();
Integer channelNum = cmd.getChannelNum();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return false;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
Integer dwStop;
if (enable) {
dwStop = 0;//开启
@@ -1027,10 +1026,10 @@
String cameraId = cmd.getCameraId();
boolean enable = cmd.isEnable();
Integer channelNum = cmd.getChannelNum();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return false;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
NET_DVR_DEVSERVER_CFG struDeicing = new NET_DVR_DEVSERVER_CFG();
Pointer point = struDeicing.getPointer();
IntByReference ibrBytesReturned = new IntByReference(0);
@@ -1065,10 +1064,10 @@
public String captureJPEGPicture(CameraCmd cmd) {
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return "";
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
NET_DVR_WORKSTATE_V30 devwork = new NET_DVR_WORKSTATE_V30();
if (!hCNetSDK.NET_DVR_GetDVRWorkState_V30(userId, devwork)) {
// 返回Boolean值,判断是否获取设备能力
@@ -1137,10 +1136,10 @@
public String picCutCate(CameraCmd cmd) {
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return "";
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
//图片信息
NET_DVR_JPEGPARA jpeg = new NET_DVR_JPEGPARA();
//设置图片分辨率
@@ -1203,10 +1202,10 @@
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
boolean enable = cmd.isEnable();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return "";
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
String path = "";
//预览参数
NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO();
@@ -1220,7 +1219,7 @@
previewinfo.write();
int lRealHandle;
if (enable) {
- if (!user_real_Map.containsKey(userId)) {
+ if (!GlobalVariable.user_real_Map.containsKey(userId)) {
lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null);
if (lRealHandle == -1) {
int iErr = hCNetSDK.NET_DVR_GetLastError();
@@ -1249,9 +1248,9 @@
recordInfo info = new recordInfo();
info.setLRealHandle(lRealHandle);
info.setRecordPath(path);
- user_real_Map.put(userId, info);
+ GlobalVariable.user_real_Map.put(userId, info);
}
- recordInfo info = user_real_Map.get(userId);
+ recordInfo info = GlobalVariable.user_real_Map.get(userId);
if (!hCNetSDK.NET_DVR_SaveRealData_V30(info.getLRealHandle(), 1, info.getRecordPath())) {
log.error("保存视频文件到临时文件夹失败 错误码为: " + hCNetSDK.NET_DVR_GetLastError());
return "保存视频文件到临时文件夹失败 错误码为:" + hCNetSDK.NET_DVR_GetLastError();
@@ -1260,7 +1259,7 @@
//return info.getRecordPath();
return "";
} else {
- recordInfo info = user_real_Map.get(userId);
+ recordInfo info = GlobalVariable.user_real_Map.get(userId);
if (StringUtils.isNull(info)) {
return "";
}
@@ -1288,7 +1287,7 @@
} catch (IOException ex) {
log.error("上传文件异常:" + ex.getMessage());
}
- user_real_Map.remove(userId);
+ GlobalVariable.user_real_Map.remove(userId);
return url;
}
}
@@ -1299,10 +1298,10 @@
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
boolean enable = cmd.isEnable();
- if (!globalVariable.loginMap.containsKey(cameraId)) {
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
return;
}
- Integer userId = globalVariable.loginMap.get(cameraId);
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
String path = "";
//强制I帧结构体对象
HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME(); //新建结构体对象
@@ -1327,7 +1326,7 @@
previewinfo.write();
int lRealHandle;
if (enable) {
- if (!user_real_Map.containsKey(userId)) {
+ if (!GlobalVariable.user_real_Map.containsKey(userId)) {
lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null);
if (lRealHandle == -1) {
log.error("取流失败" + hCNetSDK.NET_DVR_GetLastError());
@@ -1346,16 +1345,16 @@
recordInfo info = new recordInfo();
info.setLRealHandle(lRealHandle);
info.setRecordPath(path);
- user_real_Map.put(userId, info);
+ GlobalVariable.user_real_Map.put(userId, info);
}
- recordInfo info = user_real_Map.get(userId);
+ recordInfo info = GlobalVariable.user_real_Map.get(userId);
if (!hCNetSDK.NET_DVR_SaveRealData_V30(info.getLRealHandle(), 2, info.getRecordPath())) {
log.error("保存视频文件到临时文件夹失败 错误码为: " + hCNetSDK.NET_DVR_GetLastError());
return;
}
log.info("录像开始");
} else {
- recordInfo info = user_real_Map.get(userId);
+ recordInfo info = GlobalVariable.user_real_Map.get(userId);
if (StringUtils.isNull(info)) {
return;
}
@@ -1369,7 +1368,7 @@
boolean b = MinioUtils.uploadObject(BucketName, ObjectName, stream, stream.available(), ContentType);
if (b) {
log.info("上传文件成功!" + MinioClientSingleton.domainUrl + "/"+ BucketName + "/" + ObjectName);
- user_real_Map.remove(userId);
+ GlobalVariable.user_real_Map.remove(userId);
}
}
} catch (Exception ex) {
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/controller/TaskController.java b/ard-work/src/main/java/com/ruoyi/inspect/controller/TaskController.java
new file mode 100644
index 0000000..faf8110
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/inspect/controller/TaskController.java
@@ -0,0 +1,53 @@
+package com.ruoyi.inspect.controller;
+
+import com.ruoyi.common.annotation.Anonymous;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.inspect.domain.ArdVideoInspectTask;
+import com.ruoyi.inspect.service.IArdVideoInspectTaskService;
+import com.ruoyi.inspect.service.impl.InspectionTaskManager;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @Description: 巡检任务
+ * @ClassName: TaskController
+ * @Author: 刘苏义
+ * @Date: 2023年06月01日9:19
+ * @Version: 1.0
+ **/
+@RestController
+@Api(tags = "巡检任务")
+@Anonymous
+public class TaskController {
+ @Autowired
+ private InspectionTaskManager inspectionTaskManager;
+
+ @GetMapping("/startTask/{taskId}")
+ @ApiOperation("手动开启巡检")
+ AjaxResult startTask(@PathVariable String taskId) {
+ // 开启巡检任务
+ inspectionTaskManager.startInspectionTask(taskId);
+ return AjaxResult.success();
+ }
+ @ApiOperation("手动停止巡检")
+ @GetMapping("/stopTask/{taskId}")
+ AjaxResult stopTask(@PathVariable String taskId) {
+ // 停止巡检任务
+ inspectionTaskManager.stopInspectionTask(taskId);
+ return AjaxResult.success();
+ }
+ @ApiOperation("查询已启动任务")
+ @GetMapping("/getTaskList")
+ AjaxResult getTaskList() {
+ // 停止巡检任务
+ Set<String> taskIds = inspectionTaskManager.getTaskMap().keySet();
+ return AjaxResult.success(taskIds);
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/IArdVideoInspectTaskService.java b/ard-work/src/main/java/com/ruoyi/inspect/service/IArdVideoInspectTaskService.java
index 4f070de..92d62ca 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/IArdVideoInspectTaskService.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/IArdVideoInspectTaskService.java
@@ -69,7 +69,7 @@
/**
* 手动巡检任务
*/
- public void manualTaskRun();
+ public void manualTaskRun(String TaskId);
/**
* 巡检任务
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
index 126e3bc..85d6bb1 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
@@ -163,38 +163,33 @@
* 手动巡检任务
*/
@Override
- public void manualTaskRun() {
- /*扫描所有可执行任务1-时间满足2-自动*/
- ArdVideoInspectTask ardVideoInspectTask = new ArdVideoInspectTask();
- ardVideoInspectTask.setInspectMode("手动");
- ardVideoInspectTask.setMenualSwitch("开");
- List<ArdVideoInspectTask> ardVideoInspectTasks = ardVideoInspectTaskMapper.selectArdVideoInspectTaskList(ardVideoInspectTask);
- for (ArdVideoInspectTask videoInspectTask : ardVideoInspectTasks) {
- /*获取当前任务的所有巡检步骤*/
- List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTaskMapper.selectArdVideoInspectTaskById(videoInspectTask.getId()).getArdVideoInspectTaskStepList();
- if (ardVideoInspectTaskStepList.size() == 0) {
- continue;
+ public void manualTaskRun(String TaskId) {
+ ArdVideoInspectTask videoInspectTask = ardVideoInspectTaskMapper.selectArdVideoInspectTaskById(TaskId);
+ if (videoInspectTask.getArdVideoInspectTaskStepList().size() == 0) {
+ return;
+ }
+ String currentStepId = videoInspectTask.getCurrentStepId();
+ String currentStepStartTime = videoInspectTask.getCurrentStepStartTime();
+ if (StringUtils.isNull(currentStepId)||StringUtils.isEmpty(currentStepId)) {
+ //从1号步骤开始
+ videoInspectTask.setCurrentStepId(videoInspectTask.getArdVideoInspectTaskStepList().get(0).getId());
+ if(InspectionTaskManager.taskMap.containsKey(TaskId)) {
+ startRunStep(videoInspectTask);
}
- videoInspectTask.setArdVideoInspectTaskStepList(ardVideoInspectTaskStepList);
- String currentStepId = videoInspectTask.getCurrentStepId();
- if (StringUtils.isNull(currentStepId)) {
- videoInspectTask.setCurrentStepId(ardVideoInspectTaskStepList.get(0).getId());
- startRunStep(videoInspectTask);//开始当前任务的第一个步骤
- } else /*当前任务已经执行,判断是否到期*/ {
- if (StringUtils.isNull(videoInspectTask.getCurrentStepStartTime())) {
- //当前任务启动时间为null,则说明当前步骤被中断,直接启动当前步骤
+ } else /*当前任务已经执行,判断是否到期*/ {
+ if (StringUtils.isNull(currentStepStartTime)||StringUtils.isEmpty(currentStepStartTime)) {
+ //当前任务启动时间为null,则说明当前步骤被中断,直接启动当前步骤
+ startRunStep(videoInspectTask);
+ } else {
+ boolean expird = isExpirdStep(videoInspectTask); /*判断当前步骤时间是否过期*/
+ if (expird) {
+ //停止录像
+ stopRunStep(videoInspectTask);
+ //切换步骤
+ String nextStepId = changeNextStep(videoInspectTask);
+ //开始下一步骤
+ videoInspectTask.setCurrentStepId(nextStepId);
startRunStep(videoInspectTask);
- } else {
- boolean expird = isExpirdStep(videoInspectTask); /*判断当前步骤时间是否过期*/
- if (expird) {
- //停止录像
- stopRunStep(videoInspectTask);
- //切换步骤
- String nextStepId = changeNextStep(videoInspectTask);
- //开始下一步骤
- videoInspectTask.setCurrentStepId(nextStepId);
- startRunStep(videoInspectTask);
- }
}
}
}
@@ -244,6 +239,7 @@
}
}
}
+
@Override
public void taskRun() {
/*扫描所有可执行任务1-时间满足2-自动*/
@@ -346,7 +342,7 @@
ArdVideoInspectTask avit = new ArdVideoInspectTask();
avit.setId(ardVideoInspectTask.getId());
avit.setCurrentStepId(step.getId());
- avit.setCurrentStepStartTime(null);
+ avit.setCurrentStepStartTime("");
ardVideoInspectTaskMapper.updateArdVideoInspectTask(avit);
}
}
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTask.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTask.java
new file mode 100644
index 0000000..3bcf69a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTask.java
@@ -0,0 +1,76 @@
+package com.ruoyi.inspect.service.impl;
+
+import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell;
+import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.device.camera.domain.ArdCameras;
+import com.ruoyi.device.camera.domain.CameraCmd;
+import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
+import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
+import com.ruoyi.device.hiksdk.service.IHikClientService;
+import com.ruoyi.inspect.domain.ArdVideoInspectRecord;
+import com.ruoyi.inspect.domain.ArdVideoInspectTask;
+import com.ruoyi.inspect.domain.ArdVideoInspectTaskStep;
+import com.ruoyi.inspect.mapper.ArdVideoInspectRecordMapper;
+import com.ruoyi.inspect.mapper.ArdVideoInspectTaskMapper;
+import com.ruoyi.inspect.service.IArdVideoInspectTaskService;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+import org.thymeleaf.spring5.context.SpringContextUtils;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+/**
+ * @Description:
+ * @ClassName: InspectionTaskImpl
+ * @Author: 刘苏义
+ * @Date: 2023年06月01日8:57
+ * @Version: 1.0
+ **/
+@Slf4j(topic = "PatrolInspectionTask")
+class InspectionTask implements Runnable {
+
+ private String taskId;
+ private boolean isRunning;
+
+ public InspectionTask(String taskId) {
+ this.taskId = taskId;
+ this.isRunning = false;
+ }
+
+ public void start() {
+ isRunning = true;
+ Thread thread = new Thread(this);
+ thread.start();
+ }
+
+ public void stop() {
+ isRunning = false;
+ }
+
+ @Override
+ public void run() {
+ while (isRunning) {
+ // 巡检任务的具体逻辑
+ log.debug("巡检任务执行中:" + taskId);
+ try {
+ Thread.sleep(5000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ ArdVideoInspectTaskServiceImpl ardVideoInspectTaskService = SpringUtils.getBean(ArdVideoInspectTaskServiceImpl.class);
+ ardVideoInspectTaskService.manualTaskRun(taskId);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java
new file mode 100644
index 0000000..377500d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTaskManager.java
@@ -0,0 +1,81 @@
+package com.ruoyi.inspect.service.impl;
+
+import com.ruoyi.device.camera.domain.CameraCmd;
+import com.ruoyi.device.hiksdk.common.GlobalVariable;
+import com.ruoyi.device.hiksdk.service.IHikClientService;
+import com.ruoyi.device.hiksdk.service.impl.HikClientServiceImpl;
+import com.ruoyi.inspect.domain.ArdVideoInspectTask;
+import com.ruoyi.inspect.mapper.ArdVideoInspectTaskMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @ClassName: InspectionTaskManager
+ * @Author: 刘苏义
+ * @Date: 2023年06月01日10:40
+ * @Version: 1.0
+ **/
+
+@Component
+@Slf4j(topic = "PatrolInspectionTask")
+public class InspectionTaskManager {
+
+ @Resource
+ ArdVideoInspectTaskMapper ardVideoInspectTaskMapper;
+ @Resource
+ private IHikClientService hikClientService;
+
+ public static Map<String, InspectionTask> taskMap;
+
+ public InspectionTaskManager() {
+ taskMap = new HashMap<>();
+ }
+
+ public Map<String, InspectionTask> getTaskMap() {
+ return taskMap;
+ }
+
+ public void startInspectionTask(String taskId) {
+ ArdVideoInspectTask ardVideoInspectTask = ardVideoInspectTaskMapper.selectArdVideoInspectTaskById(taskId);
+ ardVideoInspectTask.setCurrentStepId("");
+ ardVideoInspectTask.setCurrentStepStartTime("");
+ ardVideoInspectTaskMapper.updateArdVideoInspectTask(ardVideoInspectTask);
+
+ InspectionTask task = new InspectionTask(taskId);
+ task.start();
+ taskMap.put(taskId, task);
+ log.info("巡检任务已启动:" + taskId);
+ }
+
+ public void stopInspectionTask(String taskId) {
+ ArdVideoInspectTask ardVideoInspectTask = ardVideoInspectTaskMapper.selectArdVideoInspectTaskById(taskId);
+ ardVideoInspectTask.setCurrentStepId("");
+ ardVideoInspectTask.setCurrentStepStartTime("");
+ ardVideoInspectTaskMapper.updateArdVideoInspectTask(ardVideoInspectTask);
+
+ Integer userId = GlobalVariable.loginMap.get(ardVideoInspectTask.getCameraId());//获取当前相机的登录ID
+ if( GlobalVariable.user_real_Map.containsKey(userId))
+ { //当前相机正在录像,则停止录像
+ CameraCmd cmd = new CameraCmd();
+ cmd.setCameraId(ardVideoInspectTask.getCameraId());
+ cmd.setChannelNum(ardVideoInspectTask.getChannel());
+ cmd.setEnable(false);//停止录像
+ hikClientService.recordToMinio(cmd);
+ }
+ InspectionTask task = taskMap.get(taskId);
+ if (task != null) {
+ task.stop();
+ taskMap.remove(taskId);
+ log.info("巡检任务已停止:" + taskId);
+
+ } else {
+ log.info("找不到指定的巡检任务:" + taskId);
+ }
+ }
+}
diff --git a/ruoyi-admin/src/main/resources/application-ard.yml b/ruoyi-admin/src/main/resources/application-ard.yml
index d1f8fbe..3c47288 100644
--- a/ruoyi-admin/src/main/resources/application-ard.yml
+++ b/ruoyi-admin/src/main/resources/application-ard.yml
@@ -1,6 +1,6 @@
# minio配置
minio:
- endpoint: http://192.168.1.55:9001
+ endpoint: http://192.168.1.15:9001
accessKey: admin
secretKey: xzx12345
# forest配置
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index fa2b341..10a760b 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -70,7 +70,7 @@
# redis 配置
redis:
# 地址
- host: 192.168.1.55
+ host: 192.168.1.15
# 端口,默认为6379
port: 6379
# 数据库索引
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java
index 291f326..da32f82 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java
@@ -38,7 +38,7 @@
//巡检任务
public void scanRun() {
- ardVideoInspectTaskService.taskRun();
+ ardVideoInspectTaskService.autoTaskRun();
}
//自动巡检任务
--
Gitblit v1.9.3