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/dhsdk/service/impl/DhClientServiceImpl.java |   33 +++++++++++++++++----------------
 1 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java
index 1a41ec9..8da654f 100644
--- a/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.device.dhsdk.service.impl;
 
 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;
@@ -58,7 +59,7 @@
     private IVtduService vtduService;
     @Value("${minio.endpoint}")
     private String minioEndPoint;
-
+    private final Object lock = new Object();
 
     // 璁惧鏂嚎閫氱煡鍥炶皟
     private static DisConnect disConnect = new DisConnect();
@@ -76,8 +77,14 @@
         LoginModule.init(disConnect, haveReConnect);
         NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();
         LLong loginId = LoginModule.login(camera.getIp(), camera.getPort(), camera.getUsername(), camera.getPassword(), m_stDeviceInfo);
-        if (loginId.longValue() > 0) {
-            //log.debug(camera.getIp() + ":" + camera.getPort() + "鐧诲綍鎴愬姛");
+        if (loginId.longValue() <= 0) {
+            camera.setChanNum(0);
+            camera.setLoginId(-1);
+            camera.setState("0");
+            ardCamerasService.updateArdCameras(camera);
+            return false;
+        }
+        synchronized (lock) {
             if (GlobalVariable.loginMap.containsKey(camera.getId())) {
                 GlobalVariable.loginMap.remove(camera.getId());
             }
@@ -109,16 +116,17 @@
                 channel.setDeviceId(camera.getId());
                 channel.setChanNo(i);
                 ardChannelService.insertArdChannel(channel);
-
-                //閰嶇疆鍒版祦濯掍綋
-                String name = camera.getId() + "_" + channel.getChanNo();
-                String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/cam/realmonitor?channel=" + channel.getChanNo() + "&subtype=0";
+            }
+            //閰嶇疆鍒版祦濯掍綋
+            for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) {
+                String name = camera.getId() + "_" + i;
+                String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/cam/realmonitor?channel=" + i + "&subtype=0";
                 Vtdu vtdu = vtduService.selectVtduByName(name);
                 if (vtdu != null) {
                     vtduService.deleteVtduByName(name);
                 }
                 //娣诲姞鍒版祦濯掍綋
-                CameraCmd cmd = new CameraCmd(camera.getId(), channel.getChanNo());
+                CameraCmd cmd = new CameraCmd(camera.getId(), i);
                 Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd);
                 vtdu = new Vtdu();
                 if (videoCompressionCfg.get("videoEncType").equals("鏍囧噯h264")) {
@@ -127,18 +135,11 @@
                     vtdu.setIsCode("1");//榛樿杞爜
                 }
                 vtdu.setRtspSource(rtspSource);
-                vtdu.setName(camera.getId() + "_" + channel.getChanNo());
+                vtdu.setName(camera.getId() + "_" + i);
                 vtdu.setMode("1");//榛樿CPU杞В鐮�
                 vtdu.setCameraId(camera.getId());
                 vtduService.insertVtdu(vtdu);
             }
-        } else {
-            //log.debug(camera.getIp() + ":" + camera.getPort() + "鐧诲綍澶辫触");
-            camera.setChanNum(0);
-            camera.setLoginId(-1);
-            camera.setState("0");
-            ardCamerasService.updateArdCameras(camera);
-            return false;
         }
         return true;
     }

--
Gitblit v1.9.3