From 113cf98d7d26460363d7ef13990623a775c636a2 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期四, 01 六月 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())) {
-                    //褰撳墠浠诲姟鍚姩鏃堕棿涓簄ull锛屽垯璇存槑褰撳墠姝ラ琚腑鏂紝鐩存帴鍚姩褰撳墠姝ラ
+        } else /*褰撳墠浠诲姟宸茬粡鎵ц锛屽垽鏂槸鍚﹀埌鏈�*/ {
+            if (StringUtils.isNull(currentStepStartTime)||StringUtils.isEmpty(currentStepStartTime)) {
+                //褰撳墠浠诲姟鍚姩鏃堕棿涓簄ull锛屽垯璇存槑褰撳墠姝ラ琚腑鏂紝鐩存帴鍚姩褰撳墠姝ラ
+                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());//鑾峰彇褰撳墠鐩告満鐨勭櫥褰旾D
+        if( GlobalVariable.user_real_Map.containsKey(userId))
+        {   //褰撳墠鐩告満姝e湪褰曞儚锛屽垯鍋滄褰曞儚
+            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