From 5addedcb92fcd56239825f301502aabbeaf5e325 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期二, 24 十月 2023 11:26:46 +0800 Subject: [PATCH] 异步登录成功后获取通道和配置流媒体增加线程同步 --- ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java | 53 +++++++++++++---------------------------------------- 1 files changed, 13 insertions(+), 40 deletions(-) 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 9ebe065..a052a0f 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 @@ -3,6 +3,7 @@ import com.ruoyi.alarm.global.domain.GuidePriorityQueue; import com.ruoyi.alarm.global.domain.GuideTask; import com.ruoyi.common.annotation.SdkOperate; +import com.ruoyi.common.utils.Threads; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.common.utils.file.MimeTypeUtils; import com.ruoyi.common.utils.uuid.IdUtils; @@ -10,11 +11,10 @@ import com.ruoyi.device.camera.service.IArdCamerasService; import com.ruoyi.device.channel.domain.ArdChannel; import com.ruoyi.device.channel.service.IArdChannelService; -import com.ruoyi.device.dhsdk.lib.LibraryLoad; -import com.ruoyi.device.dhsdk.lib.NetSDKLib; import com.ruoyi.device.hiksdk.common.GlobalVariable; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.hiksdk.sdk.ExceptionCallBack; +import com.ruoyi.device.camera.service.impl.AsyncLogin; import com.ruoyi.media.domain.Vtdu; import com.ruoyi.media.service.IVtduService; import com.ruoyi.utils.gis.GisUtil; @@ -22,13 +22,11 @@ import com.ruoyi.device.hiksdk.service.IHikClientService; import com.ruoyi.device.hiksdk.sdk.LoginResultCallBack; import com.ruoyi.utils.minio.MinioUtil; -import com.sun.jna.Native; import com.sun.jna.NativeLong; import com.sun.jna.Platform; import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import lombok.extern.slf4j.Slf4j; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.util.Base64; @@ -40,7 +38,6 @@ import java.util.*; import java.util.concurrent.PriorityBlockingQueue; -import static com.ruoyi.device.hiksdk.common.GlobalVariable.loginCameraMap; import static com.ruoyi.device.hiksdk.sdk.HCNetSDK.*; /** @@ -60,7 +57,7 @@ private IArdChannelService ardChannelService; @Resource private IVtduService vtduService; - + private final Object lock = new Object(); public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK; private static FExceptionCallBack fExceptionCallBack;//寮傚父鍥炶皟 @@ -114,20 +111,22 @@ //鍚屾鐧诲綍 int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); if (lUserID < 0) { - int errorCode = hCNetSDK.NET_DVR_GetLastError(); - log.debug(camera.getIp() + ":" + camera.getPort() + "鐧诲綍澶辫触,閿欒鐮侊細" + errorCode); + log.debug("Login Failed [ " + camera.getIp() + ":" + camera.getPort() + " ],閿欒鐮侊細" + hCNetSDK.NET_DVR_GetLastError()); camera.setChanNum(0); camera.setLoginId(-1); camera.setState("0"); - } else { + return; + } + synchronized (lock) { + 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.info("Set fExceptionCallBack function fail"); + log.debug("Set fExceptionCallBack function fail"); return; } else { - log.info("Set fExceptionCallBack function successfully!"); + log.debug("Set fExceptionCallBack function successfully!"); } } @@ -139,7 +138,7 @@ GlobalVariable.loginMap.put(camera.getId(), lUserID); GlobalVariable.loginCameraMap.put(lUserID, camera); - log.debug("Login Success [ " + camera.getIp() + ":" + camera.getPort() + " ]"); + camera.setLoginId(lUserID); camera.setState("1"); camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum); @@ -183,6 +182,7 @@ } ardCamerasService.updateArdCameras(camera); } + } catch (Exception ex) { log.error("娉ㄥ唽璁惧寮傚父", ex); } @@ -243,28 +243,6 @@ } - /** - * @鎻忚堪 鐧诲綍鎵�鏈夌浉鏈� - * @鍙傛暟 [] - * @杩斿洖鍊� void - * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 2023/2/3 10:10 - * @淇敼浜哄拰鍏跺畠淇℃伅 - */ - @Override - public void loginAll() { - try { - ArdCameras ardCamera = new ArdCameras(); - ardCamera.setFactory("1"); - List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(ardCamera); - for (ArdCameras camera : ardCameras) { - //鐧诲綍 - login(camera); - } - } catch (Exception ex) { - log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage()); - } - } /** * @鎻忚堪 娉ㄩ攢鐧诲綍 @@ -318,6 +296,7 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override + @SdkOperate public boolean pTZControlWithSpeed(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); @@ -1068,7 +1047,6 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - @SdkOperate public boolean controlDefogcfg(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); @@ -1114,7 +1092,6 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - @SdkOperate public boolean controlInfrarecfg(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); @@ -1162,7 +1139,6 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - @SdkOperate public boolean controlFocusMode(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); @@ -1235,7 +1211,6 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - @SdkOperate public boolean controlPTHeateRpwron(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); @@ -1268,7 +1243,6 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - @SdkOperate public boolean controlCameraDeicing(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); @@ -1349,7 +1323,6 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - @SdkOperate public String picCutCate(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); -- Gitblit v1.9.3