From 1e89a0c2fc96040ba50d0fe4305ace22f3daa6cf Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期五, 11 八月 2023 15:35:21 +0800 Subject: [PATCH] 优化通用光电报警只获取小光电数据 --- src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java | 201 ++++++++++++++++++++++++++++++++++---------------- 1 files changed, 137 insertions(+), 64 deletions(-) diff --git a/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java b/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java index 5e9590d..02e1fe5 100644 --- a/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java +++ b/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java @@ -3,7 +3,8 @@ import com.ard.alarm.camera.domain.ArdCameras; import com.ard.alarm.camera.domain.CameraCmd; import com.ard.alarm.external.domain.ArdEquipExternal; -import com.ard.utils.ByteUtils; +import com.ard.config.MinioClientSingleton; +import com.ard.utils.other.ByteUtils; import com.ard.utils.hiksdk.common.GlobalVariable; import com.ard.utils.hiksdk.domain.DeviceInfo; import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK; @@ -13,13 +14,10 @@ import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; import java.io.*; import java.nio.ByteBuffer; import java.util.*; - /** @@ -123,11 +121,8 @@ /** * @鎻忚堪 娉ㄥ唽鐧诲綍 闆嗘垚浜嶯ET_DVR_Login_V30锛屾敮鎸佸悓姝ュ拰寮傛鐧诲綍 - * @鍙傛暟 [dvrLogin] - * @杩斿洖鍊� java.lang.Integer * @鍒涘缓浜� 鍒樿嫃涔� * @鍒涘缓鏃堕棿 2023/1/17 16:12 - * @淇敼浜哄拰鍏跺畠淇℃伅 */ public static void login(DeviceInfo deviceInfo) { // 鍒濆鍖� @@ -173,53 +168,98 @@ log.info("鐧诲綍寮傚父锛�" + errorCode); } } + + /** + * @鎻忚堪 鐢ㄦ埛娉ㄩ攢 + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/1/17 16:12 + */ + public static void logout(DeviceInfo deviceInfo) { + String deviceIpPort = deviceInfo.getIp() + ":" + deviceInfo.getPort(); + //鎾ら槻 + if (GlobalVariable.alarmMap.containsKey(deviceInfo.getDeviceId())) { + Integer lAlarmHandle = GlobalVariable.alarmMap.get(deviceInfo.getDeviceId()); + boolean b = hCNetSDK.NET_DVR_CloseAlarmChan_V30(lAlarmHandle); + if (b) { + log.debug("璁惧銆�" + deviceIpPort + "銆戞挙闃叉垚鍔�"); + } + } + //鐧诲嚭 + if (GlobalVariable.loginMap.containsKey(deviceInfo.getDeviceId())) { + Integer lUserID = GlobalVariable.loginMap.get(deviceInfo.getDeviceId()); + boolean b = hCNetSDK.NET_DVR_Logout(lUserID); + if (b) { + log.debug("璁惧銆�" + deviceIpPort + "銆戞敞閿�鎴愬姛"); + } + } + } + /** * @鎻忚堪 鐧诲綍鎵�鏈夌浉鏈� - * @鍙傛暟 [] - * @杩斿洖鍊� void * @鍒涘缓浜� 鍒樿嫃涔� * @鍒涘缓鏃堕棿 2023/2/3 10:10 - * @淇敼浜哄拰鍏跺畠淇℃伅 */ public static void loginAllCamera(List<ArdCameras> ardCameras) { try { for (ArdCameras camera : ardCameras) { Thread.sleep(100); - DeviceInfo info=new DeviceInfo(); + DeviceInfo info = new DeviceInfo(); info.setDeviceId(camera.getId()); info.setIp(camera.getIp()); info.setPort(camera.getPort()); info.setUsername(camera.getUsername()); info.setPassword(camera.getPassword()); login(info); - String ip = camera.getIp(); - GlobalVariable.cameraMap.put(ip, camera); + String key = camera.getIp() + ":" + camera.getPort(); + GlobalVariable.cameraMap.put(key, camera); } } catch (Exception ex) { log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage()); } } + /** - * @鎻忚堪 鐧诲綍鎵�鏈夋姤璀︿富鏈� - * @鍙傛暟 [] - * @杩斿洖鍊� void + * @鎻忚堪 鐧诲嚭鎵�鏈夌浉鏈� * @鍒涘缓浜� 鍒樿嫃涔� * @鍒涘缓鏃堕棿 2023/2/3 10:10 - * @淇敼浜哄拰鍏跺畠淇℃伅 + */ + public static void logoutAllCamera(List<ArdCameras> ardCameras) { + try { + for (ArdCameras camera : ardCameras) { + Thread.sleep(100); + DeviceInfo info = new DeviceInfo(); + info.setDeviceId(camera.getId()); + info.setIp(camera.getIp()); + info.setPort(camera.getPort()); + info.setUsername(camera.getUsername()); + info.setPassword(camera.getPassword()); + logout(info); + String key = camera.getIp() + ":" + camera.getPort(); + GlobalVariable.cameraMap.remove(key); + } + } catch (Exception ex) { + log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage()); + } + } + + /** + * @鎻忚堪 鐧诲綍鎵�鏈夋姤璀︿富鏈� + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/2/3 10:10 */ public static void loginAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) { try { for (ArdEquipExternal alarmHost : ardEquipExternals) { Thread.sleep(100); - DeviceInfo info=new DeviceInfo(); + DeviceInfo info = new DeviceInfo(); info.setDeviceId(alarmHost.getId()); info.setIp(alarmHost.getIp()); info.setPort(alarmHost.getPort()); info.setUsername(alarmHost.getUsername()); info.setPassword(alarmHost.getPassword()); login(info); - String ip = alarmHost.getIp(); - GlobalVariable.alarmHostMap.put(ip, alarmHost); +// String key=alarmHost.getIp()+":"+alarmHost.getPort(); +// GlobalVariable.alarmHostMap.put(key, alarmHost); } } catch (Exception ex) { log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage()); @@ -227,41 +267,78 @@ } /** - * @鎻忚堪 娉ㄩ攢鐧诲綍 - * @鍙傛暟 [dvrLogin] - * @杩斿洖鍊� java.lang.Integer + * @鎻忚堪 鐧诲嚭鎵�鏈夋姤璀︿富鏈� * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 2023/1/17 16:12 - * @淇敼浜哄拰鍏跺畠淇℃伅 + * @鍒涘缓鏃堕棿 2023/2/3 10:10 */ - - public static boolean loginOut(String cameraId) { - if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + public static void logoutAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) { + try { + for (ArdEquipExternal alarmHost : ardEquipExternals) { + Thread.sleep(100); + DeviceInfo info = new DeviceInfo(); + info.setDeviceId(alarmHost.getId()); + info.setIp(alarmHost.getIp()); + info.setPort(alarmHost.getPort()); + info.setUsername(alarmHost.getUsername()); + info.setPassword(alarmHost.getPassword()); + logout(info); +// String key=alarmHost.getIp()+":"+alarmHost.getPort(); +// GlobalVariable.alarmHostMap.remove(key); + } + } catch (Exception ex) { + log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage()); } - Integer userId = GlobalVariable.loginMap.get(cameraId); - boolean b = hCNetSDK.NET_DVR_Logout(userId); - if (b) { - GlobalVariable.loginMap.remove(cameraId); - } - return b; } /** - * 鏄惁鍦ㄧ嚎 - * - * @param cmd + * @鎻忚堪 鐧诲綍鎵�鏈夐棬绂佷富鏈� + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/2/3 10:10 */ - - public static boolean isOnLine(CameraCmd cmd) { - String cameraId = cmd.getCameraId(); - if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + public static void loginAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) { + try { + for (ArdEquipExternal accessControlHost : ardEquipExternals) { + Thread.sleep(100); + DeviceInfo info = new DeviceInfo(); + info.setDeviceId(accessControlHost.getId()); + info.setIp(accessControlHost.getIp()); + info.setPort(accessControlHost.getPort()); + info.setUsername(accessControlHost.getUsername()); + info.setPassword(accessControlHost.getPassword()); + login(info); +// +// String key=accessControlHost.getIp()+":"+accessControlHost.getPort(); +// GlobalVariable.accessHostMap.put(key, accessControlHost); + } + } catch (Exception ex) { + log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage()); } - Integer userId = GlobalVariable.loginMap.get(cameraId); - boolean isOnLine = hCNetSDK.NET_DVR_RemoteControl(userId, HCNetSDK.NET_DVR_CHECK_USER_STATUS, null, 0); - return isOnLine; } + + /** + * @鎻忚堪 鐧诲嚭鎵�鏈夐棬绂佷富鏈� + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/2/3 10:10 + */ + public static void logoutAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) { + try { + for (ArdEquipExternal accessControlHost : ardEquipExternals) { + Thread.sleep(100); + DeviceInfo info = new DeviceInfo(); + info.setDeviceId(accessControlHost.getId()); + info.setIp(accessControlHost.getIp()); + info.setPort(accessControlHost.getPort()); + info.setUsername(accessControlHost.getUsername()); + info.setPassword(accessControlHost.getPassword()); + logout(info); +// String key=accessControlHost.getIp()+":"+accessControlHost.getPort(); +// GlobalVariable.accessHostMap.remove(key); + } + } catch (Exception ex) { + log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage()); + } + } + /** * 寤虹珛甯冮槻涓婁紶閫氶亾锛岀敤浜庝紶杈撴暟鎹� @@ -269,10 +346,10 @@ * @param lUserID 鍞竴鏍囪瘑绗� * @param lAlarmHandle 鎶ヨ澶勭悊鍣� */ - public static int setupAlarmChan(int lUserID, int lAlarmHandle) { + public static int setupAlarmChan(String deviceIpPort, int lUserID, int lAlarmHandle) { // 鏍规嵁璁惧娉ㄥ唽鐢熸垚鐨刲UserID寤虹珛甯冮槻鐨勪笂浼犻�氶亾锛屽嵆鏁版嵁鐨勪笂浼犻�氶亾 if (lUserID == -1) { - log.info("璇峰厛娉ㄥ唽"); + log.error("璇峰厛娉ㄥ唽"); return lUserID; } if (lAlarmHandle < 0) { @@ -280,7 +357,7 @@ if (fMSFCallBack_V31 == null) { fMSFCallBack_V31 = new FMSGCallBack(); if (!hCNetSDK.NET_DVR_SetDVRMessageCallBack_V50(0, fMSFCallBack_V31, null)) { - log.info("璁剧疆鍥炶皟鍑芥暟澶辫触!閿欒鐮�==========銆�" + hCNetSDK.NET_DVR_GetLastError()); + log.error("璁剧疆鍥炶皟鍑芥暟澶辫触!閿欒鐮�==========銆�" + hCNetSDK.NET_DVR_GetLastError()); } } // 杩欓噷闇�瑕佸璁惧杩涜鐩稿簲鐨勫弬鏁拌缃紝涓嶈缃垨璁剧疆閿欒閮戒細瀵艰嚧璁惧娉ㄥ唽澶辫触 @@ -296,13 +373,9 @@ // 甯冮槻鎴愬姛锛岃繑鍥炲竷闃叉垚鍔熺殑鏁版嵁浼犺緭閫氶亾鍙� lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo); if (lAlarmHandle == -1) { - log.error("璁惧甯冮槻澶辫触锛岄敊璇爜==========銆�" + hCNetSDK.NET_DVR_GetLastError()); - // 娉ㄩ攢 閲婃斁sdk璧勬簮 - logout(lUserID); - return lAlarmHandle; + log.error("璁惧銆�" + deviceIpPort + "銆戝竷闃插け璐ワ紝閿欒鐮�==========銆�" + hCNetSDK.NET_DVR_GetLastError()); } else { - log.info("璁惧甯冮槻鎴愬姛"); - return lAlarmHandle; + log.debug("璁惧銆�" + deviceIpPort + "銆戝竷闃叉垚鍔�"); } } return lAlarmHandle; @@ -349,11 +422,11 @@ //璁剧疆鍥剧墖澶у皬 ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024); // 鎶撳浘鍒板唴瀛橈紝鍗曞抚鏁版嵁鎹曡幏骞朵繚瀛樻垚JPEG瀛樻斁鍦ㄦ寚瀹氱殑鍐呭瓨绌洪棿涓� - log.debug("-----------杩欓噷寮�濮嬪皝瑁� NET_DVR_CaptureJPEGPicture_NEW---------"); + // log.debug("-----------杩欓噷寮�濮嬪皝瑁� NET_DVR_CaptureJPEGPicture_NEW---------"); boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a); - log.debug("-----------杩欓噷寮�濮嬪浘鐗囧瓨鍏ュ唴瀛�----------" + is); + //log.debug("-----------杩欓噷寮�濮嬪浘鐗囧瓨鍏ュ唴瀛�----------" + is); if (is) { - log.debug("hksdk(鎶撳浘)-缁撴灉鐘舵�佸��(0琛ㄧず鎴愬姛):" + hCNetSDK.NET_DVR_GetLastError()); + // log.debug("hksdk(鎶撳浘)-缁撴灉鐘舵�佸��(0琛ㄧず鎴愬姛):" + hCNetSDK.NET_DVR_GetLastError()); byte[] array = jpegBuffer.array(); //瀛樺偍鍒癿inio @@ -361,13 +434,14 @@ InputStream input = new ByteArrayInputStream(array); String url = ""; try { - boolean b = MinioUtils.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input, input.available(), ContentType); + boolean b = MinioUtils.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input, ContentType); if (b) { - url = MinioUtils.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName()); - url = url.indexOf('?') != -1 ? url.substring(0, url.indexOf('?')) : url; + // url = MinioUtils.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName()); + // url = url.indexOf('?') != -1 ? url.substring(0, url.indexOf('?')) : url; + url = MinioClientSingleton.domainUrl + "/" + cmd.getBucketName() + "/" + cmd.getObjectName(); log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); } - } catch (IOException ex) { + } catch (Exception ex) { log.error("涓婁紶鏂囦欢寮傚父锛�" + ex.getMessage()); } return url; @@ -385,7 +459,7 @@ * 2023/7/6 10:48 */ public static String getDefenseZoneName(CameraCmd cmd) { - String name=""; + String name = ""; try { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getWZoneIndex();//閫氶亾鍙�==闃插尯鍙� @@ -411,6 +485,5 @@ } return name; } - } \ No newline at end of file -- Gitblit v1.9.3