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