From f069ce1cc814e57c36b3c8d48d10af215350081b Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期三, 14 六月 2023 09:40:16 +0800 Subject: [PATCH] 修改盗电报警数据从mqtt接收 修改管线泄漏sql错误 --- ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java | 128 ++++++++++++++++++++++++++---------------- 1 files changed, 78 insertions(+), 50 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 fe82c91..646c238 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 @@ -5,6 +5,7 @@ import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.constant.sdkPriority; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.mapper.ArdCamerasMapper; @@ -15,6 +16,7 @@ import com.ruoyi.device.hiksdk.util.hikSdkUtil.GisUtil; import com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK; import com.ruoyi.device.hiksdk.service.IHikClientService; +import com.ruoyi.device.hiksdk.util.hikSdkUtil.LoginResultCallBack; import com.ruoyi.device.hiksdk.util.minio.MinioUtils; import com.ruoyi.system.mapper.SysUserMapper; import com.sun.jna.Native; @@ -97,15 +99,14 @@ } /** - * @鎻忚堪 娉ㄥ唽鐧诲綍 + * @鎻忚堪 娉ㄥ唽鐧诲綍 鍙敮鎸佸悓姝ョ櫥闄嗭紝涓斿畼鏂逛笉寤鸿鐩存帴鍦ㄦ鎺ュ彛涓嬪啓鑰楁椂鎿嶄綔 * @鍙傛暟 [dvrLogin] * @杩斿洖鍊� java.lang.Integer * @鍒涘缓浜� 鍒樿嫃涔� * @鍒涘缓鏃堕棿 2023/1/17 16:12 * @淇敼浜哄拰鍏跺畠淇℃伅 */ - @Override - public ArdCameras login(ArdCameras camera) { + public ArdCameras login1(ArdCameras camera) { // 鍒濆鍖� if (!hCNetSDK.NET_DVR_Init()) { log.error("SDK鍒濆鍖栧け璐�"); @@ -113,9 +114,9 @@ //鎵撳嵃娴峰悍sdk鏃ュ織 if (Platform.isWindows()) { String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator; - hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, false); + hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true); } else { - hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", false); + hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true); } String m_sDeviceIP = camera.getIp(); String m_sUsername = camera.getUsername(); @@ -143,6 +144,60 @@ } /** + * @鎻忚堪 娉ㄥ唽鐧诲綍 闆嗘垚浜嶯ET_DVR_Login_V30锛屾敮鎸佸悓姝ュ拰寮傛鐧诲綍 + * @鍙傛暟 [dvrLogin] + * @杩斿洖鍊� java.lang.Integer + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/1/17 16:12 + * @淇敼浜哄拰鍏跺畠淇℃伅 + */ + @Override + public void login(ArdCameras camera) { + // 鍒濆鍖� + if (!hCNetSDK.NET_DVR_Init()) { + log.error("SDK鍒濆鍖栧け璐�"); + } + //鎵撳嵃娴峰悍sdk鏃ュ織 + if (Platform.isWindows()) { + String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator; + hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true); + } else { + hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true); + } + String m_sDeviceIP = camera.getIp(); + String m_sUsername = camera.getUsername(); + String m_sPassword = camera.getPassword(); + short m_sPort = camera.getPort().shortValue(); + //璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂� + hCNetSDK.NET_DVR_SetConnectTime(2000, 1); + hCNetSDK.NET_DVR_SetReconnect(100000, true); + //璁惧淇℃伅, 杈撳嚭鍙傛暟 + HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40(); + HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO(); + + // 娉ㄥ唽璁惧-鐧诲綍鍙傛暟锛屽寘鎷澶囧湴鍧�銆佺櫥褰曠敤鎴枫�佸瘑鐮佺瓑 + m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN]; + System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length()); + m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN]; + System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length()); + m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN]; + System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length()); + m_strLoginInfo.wPort = m_sPort; + m_strLoginInfo.byVerifyMode = 0; + m_strLoginInfo.byLoginMode=0; + //鏄惁寮傛鐧诲綍锛�0- 鍚︼紝1- 鏄� windowsSDK閲屾槸true鍜宖alse + m_strLoginInfo.bUseAsynLogin = true; + //寮傛鐧诲綍鍥炶皟 + m_strLoginInfo.cbLoginResult = new LoginResultCallBack(camera); + m_strLoginInfo.write(); + int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); + if (i < 0) { + int errorCode = hCNetSDK.NET_DVR_GetLastError(); + log.info("鐧诲綍寮傚父锛�" + errorCode); + } + } + + /** * @鎻忚堪 鐧诲綍鎵�鏈夌浉鏈� * @鍙傛暟 [] * @杩斿洖鍊� void @@ -151,32 +206,12 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - @Async("loginExecutor") public void loginAll() { try { log.debug("鍔犺浇lib瀹屾垚锛�"); - List<ArdCameras> ardCameras = ardCamerasMapper.selectArdCamerasList(new ArdCameras()); + List<ArdCameras> ardCameras = ardCamerasMapper.selectArdCamerasListNoDataScope(new ArdCameras()); for (ArdCameras camera : ardCameras) { - camera = login(camera); - if (camera.getLoginId() >= 0) { - log.info("鐩告満" + camera.getIp() + ":" + camera.getPort() + "鐧诲綍鎴愬姛锛�" + camera.getLoginId()); - ardCamerasMapper.updateArdCameras(camera); - } else { - log.info("鐩告満" + camera.getIp() + ":" + camera.getPort() + "鐧诲綍澶辫触锛�" + camera.getLoginId()); - } -// if (!globalVariable.loginMap.containsKey(camera.getId())) { -// camera = login(camera); -// if (camera.getLoginId() >= 0) { -// log.info("鐩告満" + camera.getIp() + ":" + camera.getPort() + "鐧诲綍鎴愬姛锛�" + camera.getLoginId()); -// globalVariable.loginMap.put(camera.getId(), camera.getLoginId()); -// ardCamerasService.updateArdCameras(camera); -// } else { -// log.info("鐩告満" + camera.getIp() + ":" + camera.getPort() + "鐧诲綍澶辫触锛�" + camera.getLoginId()); -// } -// } else { -// Integer userid = globalVariable.loginMap.get(camera.getId()); -// log.info("褰撳墠鐩告満:" + camera.getId() + "宸茬櫥褰�,ID:" + userid); -// } + login(camera); } } catch (Exception ex) { log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage()); @@ -232,7 +267,7 @@ */ @Override @SdkOperate - public boolean PTZControlWithSpeed(CameraCmd cmd) { + public boolean pTZControlWithSpeed(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); Integer channelNum = cmd.getChannelNum(); @@ -1302,16 +1337,14 @@ return; } Integer userId = GlobalVariable.loginMap.get(cameraId); - String path = ""; //寮哄埗I甯х粨鏋勪綋瀵硅薄 HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME(); //鏂板缓缁撴瀯浣撳璞� netDvrIFrame.read(); - netDvrIFrame.dwChannel = channelNum; //鍥犱负涓婃枃浠g爜涓缃簡閫氶亾鍙凤紝鎸夌収涓婃枃涓殑璁剧疆 + netDvrIFrame.dwChannel = channelNum;//鍥犱负涓婃枃浠g爜涓缃簡閫氶亾鍙凤紝鎸夌収涓婃枃涓殑璁剧疆 netDvrIFrame.byStreamType = 0; netDvrIFrame.dwSize = netDvrIFrame.size(); netDvrIFrame.write(); - - if(!hCNetSDK.NET_DVR_RemoteControl(userId,3402,netDvrIFrame.getPointer(),netDvrIFrame.dwSize)){ + if (!hCNetSDK.NET_DVR_RemoteControl(userId, 3402, netDvrIFrame.getPointer(), netDvrIFrame.dwSize)) { log.error("寮哄埗I甯� 閿欒鐮佷负: " + hCNetSDK.NET_DVR_GetLastError()); } //棰勮鍙傛暟 @@ -1333,15 +1366,8 @@ return; } log.info("鍙栨祦鎴愬姛"); - File file = new File("D:/recordTemp/" + cameraId + ".mp4"); - if (!file.exists()) { - File fileParent = file.getParentFile(); - if (!fileParent.exists()) { - fileParent.mkdirs(); - } - file.createNewFile(); - } - path = file.getCanonicalPath(); + + String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4"); recordInfo info = new recordInfo(); info.setLRealHandle(lRealHandle); info.setRecordPath(path); @@ -1360,15 +1386,17 @@ } hCNetSDK.NET_DVR_StopRealPlay(info.getLRealHandle()); log.info("褰曞儚鍋滄"); - //瀛樺叆minio - String BucketName = cmd.getRecordBucketName(); - String ObjectName = cmd.getRecordObjectName(); - String ContentType = "video/MP4"; - FileInputStream stream = new FileInputStream(info.getRecordPath()); - boolean b = MinioUtils.uploadObject(BucketName, ObjectName, stream, stream.available(), ContentType); - if (b) { - log.info("涓婁紶鏂囦欢鎴愬姛!" + MinioClientSingleton.domainUrl + "/"+ BucketName + "/" + ObjectName); - GlobalVariable.user_real_Map.remove(userId); + if (cmd.isUploadMinio()) { + //瀛樺叆minio + String BucketName = cmd.getRecordBucketName(); + String ObjectName = cmd.getRecordObjectName(); + String ContentType = "video/MP4"; + FileInputStream stream = new FileInputStream(info.getRecordPath()); + boolean b = MinioUtils.uploadObject(BucketName, ObjectName, stream, stream.available(), ContentType); + if (b) { + log.info("涓婁紶鏂囦欢鎴愬姛!" + MinioClientSingleton.domainUrl + "/" + BucketName + "/" + ObjectName); + GlobalVariable.user_real_Map.remove(userId); + } } } } catch (Exception ex) { -- Gitblit v1.9.3