From 4269d20178cfab9253aacac15e1c02905c192428 Mon Sep 17 00:00:00 2001
From: aijinhui <aijinhui>
Date: 星期五, 15 十二月 2023 13:33:52 +0800
Subject: [PATCH] 设备健康列表
---
ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java | 113 +++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 94 insertions(+), 19 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
index 7c36f42..8bf60c2 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
@@ -2,8 +2,10 @@
import com.ruoyi.alarm.global.domain.GuidePriorityQueue;
import com.ruoyi.alarm.global.domain.GuideTask;
+import com.ruoyi.alarm.global.service.impl.QueueHandler;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.common.utils.file.MimeTypeUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.device.camera.service.IArdCamerasService;
import com.ruoyi.device.camera.factory.CameraSDK;
@@ -52,7 +54,10 @@
private IArdChannelService ardChannelService;
@Resource
private IVtduService vtduService;
+ @Resource
+ private QueueHandler queueHandler;
+ public Object _lock=new Object();
public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK;
private static HCNetSDK.FExceptionCallBack fExceptionCallBack;//寮傚父鍥炶皟
@@ -214,7 +219,7 @@
//鍚屾鐧诲綍
int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
if (lUserID < 0) {
- log.debug("Login Failed [ " + camera.getIp() + ":" + camera.getPort() + " ],閿欒鐮侊細" + hCNetSDK.NET_DVR_GetLastError());
+ log.debug("Login Failed 銆� " + camera.getIp() + ":" + camera.getPort() + " 銆�,Error Code锛�" + hCNetSDK.NET_DVR_GetLastError());
camera.setChanNum(0);
camera.setLoginId(-1);
camera.setState("0");
@@ -224,18 +229,19 @@
return;
}
- log.debug("Login Success [ " + camera.getIp() + ":" + camera.getPort() + " ]");
- if (fExceptionCallBack == null) {
- fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟
- //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑)
- if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
- log.debug("Set fExceptionCallBack function fail");
- return;
- } else {
- log.debug("Set fExceptionCallBack function successfully!");
+ log.debug("Login Success 銆� " + camera.getIp() + ":" + camera.getPort() + " 銆�");
+ synchronized (_lock) {
+ if (fExceptionCallBack == null) {
+ fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟
+ //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑)
+ if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
+ log.debug("Set fExceptionCallBack function fail");
+ return;
+ } else {
+ log.debug("Set fExceptionCallBack function successfully!");
+ }
}
}
-
if (GlobalVariable.loginMap.containsKey(camera.getId())) {
GlobalVariable.loginMap.remove(camera.getId());
}
@@ -264,16 +270,26 @@
//娣诲姞鍒版祦濯掍綋
addVtdu(camera);
//鍒涘缓寮曞闃熷垪
- if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
- Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
- PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
- GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
- }
+ createGuideQueue(camera);
} catch (Exception ex) {
log.error("娉ㄥ唽璁惧寮傚父", ex);
}
}
+ //鍒涘缓寮曞闃熷垪
+ private void createGuideQueue(ArdCameras camera) {
+ if(camera.getCamAlarmGuideEnable()!=null) {
+ if (camera.getCamAlarmGuideEnable() == 1) {
+ if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
+ Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
+ PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
+ GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
+ //鍚姩闃熷垪澶勭悊鍣�
+ queueHandler.process(camera.getId());
+ }
+ }
+ }
+ }
//娣诲姞鍒版祦濯掍綋
private void addVtdu(ArdCameras camera) {
try {
@@ -921,8 +937,8 @@
* @鍒涘缓鏃堕棿 2023/1/17 16:36
* @淇敼浜哄拰鍏跺畠淇℃伅 娉ㄦ剰淇话瑙掑害璐熷�奸渶瑕佸姞涓�360寰楀埌鐨勬鍊艰繘琛岃缃�
*/
- @Override
- public boolean setPtz(CameraCmd cmd) {
+
+ public boolean setPtz1(CameraCmd cmd) {
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChanNo();
Map<String, Double> ptz = cmd.getPtzMap();
@@ -944,7 +960,7 @@
boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_PTZPOS, channelNum, point, m_ptzPosCurrent.size());
if (!bool) {
int code = hCNetSDK.NET_DVR_GetLastError();
- log.error("璁剧疆ptz澶辫触,璇风◢鍚庨噸璇�" + code);
+ log.error("璁剧疆PTZ鍙傛暟澶辫触,璇风◢鍚庨噸璇�:" + code);
}
return bool;
} catch (Exception ex) {
@@ -953,6 +969,65 @@
}
}
+ /**
+ * @鎻忚堪 璁剧疆楂樼簿搴tz淇℃伅
+ * @鍙傛暟 [userId, channelNum]
+ * @杩斿洖鍊� boolean
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/1/17 16:36
+ * @淇敼浜哄拰鍏跺畠淇℃伅 娉ㄦ剰淇话瑙掑害璐熷�煎悜涓嬭礋鍊�
+ */
+ @Override
+ public boolean setPtz(CameraCmd cmd) {
+ try {
+ String cameraId = cmd.getCameraId();
+ Integer chanNo = cmd.getChanNo();
+ Map<String, Double> ptz = cmd.getPtzMap();
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+ return false;
+ }
+ Integer lUserID = (Integer) GlobalVariable.loginMap.get(cameraId);
+ IntByReference pchannel = new IntByReference(chanNo);
+ Pointer pChannelNum = pchannel.getPointer();
+
+ HCNetSDK.NET_DVR_STD_CONFIG lpConfigParam6697 = new HCNetSDK.NET_DVR_STD_CONFIG();
+ HCNetSDK.NET_DVR_PTZABSOLUTEEX_CFG lpPTZAbsoluteEX_cfgInfo = new HCNetSDK.NET_DVR_PTZABSOLUTEEX_CFG();
+ lpConfigParam6697.lpCondBuffer = pChannelNum;
+ lpConfigParam6697.dwCondSize = 4;
+ HCNetSDK.BYTE_ARRAY m_szStatusBuf = new HCNetSDK.BYTE_ARRAY(4096 * 4);
+ lpConfigParam6697.lpStatusBuffer = m_szStatusBuf.getPointer();
+ lpConfigParam6697.dwStatusSize = 4096 * 4;
+ lpPTZAbsoluteEX_cfgInfo.dwSize = lpPTZAbsoluteEX_cfgInfo.size();
+ lpPTZAbsoluteEX_cfgInfo.struPTZCtrl.fPan = new Double(ptz.get("p")).floatValue();
+ float t = new Double(ptz.get("t")).floatValue();
+ float t1 = t > 300 ? (t - 360) : t;
+ BigDecimal bigDecimal = new BigDecimal(t1);
+ float t2 = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
+ lpPTZAbsoluteEX_cfgInfo.struPTZCtrl.fTilt = t2;
+ lpPTZAbsoluteEX_cfgInfo.struPTZCtrl.fZoom = new Double(ptz.get("z")).floatValue();
+ lpPTZAbsoluteEX_cfgInfo.struPTZCtrl.dwFocus = 399;
+ lpPTZAbsoluteEX_cfgInfo.dwFocalLen = 1250;
+ lpPTZAbsoluteEX_cfgInfo.fHorizontalSpeed = (float) 10;
+ lpPTZAbsoluteEX_cfgInfo.fVerticalSpeed = (float) 10;
+ lpPTZAbsoluteEX_cfgInfo.byZoomType = 0;
+ lpPTZAbsoluteEX_cfgInfo.write();
+ lpConfigParam6697.lpInBuffer = lpPTZAbsoluteEX_cfgInfo.getPointer();
+ lpConfigParam6697.dwInSize = lpPTZAbsoluteEX_cfgInfo.dwSize;
+ lpConfigParam6697.write();
+ boolean bool = hCNetSDK.NET_DVR_SetSTDConfig(lUserID, NET_DVR_SET_PTZABSOLUTEEX, lpConfigParam6697);
+ if (!bool) {
+ int code = hCNetSDK.NET_DVR_GetLastError();
+ log.error("璁剧疆楂樼簿搴TZ鍙傛暟澶辫触,璇风◢鍚庨噸璇�:" + code);
+ }
+ return bool;
+
+ }catch (Exception ex)
+ {
+ log.error("璁剧疆楂樼簿搴TZ鍙傛暟寮傚父",ex);
+ return false;
+ }
+ }
+
@Override
public boolean guideTargetPosition(CameraCmd cmd) {
String cameraId = cmd.getCameraId();
--
Gitblit v1.9.3