From 1253e030e4b805f9f8adc3c664ad9de014670ad9 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Sat, 25 May 2024 17:22:39 +0800
Subject: [PATCH] 优化

---
 ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java |   16 +++----
 ard-work/src/main/java/com/ruoyi/utils/sdk/common/SdkErrorCodeEnum.java          |    1 
 ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java      |   67 ++++++++-------------------------
 3 files changed, 24 insertions(+), 60 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/common/SdkErrorCodeEnum.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/common/SdkErrorCodeEnum.java
index 7efaa05..ac9bcd0 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/common/SdkErrorCodeEnum.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/common/SdkErrorCodeEnum.java
@@ -17,6 +17,7 @@
     NET_DVR_NETWORK_SEND_ERROR(8, "向设备发送失败"),
     NET_DVR_NETWORK_RECV_TIMEOUT(10, "从设备接收数据超时"),
     NET_DVR_NETWORK_ERRORDATA(11, "传送的数据有误。发送给设备或者从设备接收到的数据错误,如远程参数配置时输入设备不支持的值"),
+    NET_DVR_NOSUPPORT(23, "设备不支持"),
     NET_DVR_DVROPRATEFAILED(29, "设备操作失败"),
     NET_DVR_USERNOTEXIST(47, "用户不存在。注册的用户ID已注销或不可用");
     /**
diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
index 15cd216..e374b7a 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
@@ -123,58 +123,22 @@
                 NetSDKLib.AV_CFG_ChannelName av_cfg_channelName = new NetSDKLib.AV_CFG_ChannelName();
                 boolean b = ConfigModule.GetNewDevConfig(loginId, i - 1, CFG_CMD_CHANNELTITLE, av_cfg_channelName);
                 if (b) {
-                    String chanName = null;
+                    String chanName = "";
                     try {
                         chanName = new String(av_cfg_channelName.szName, "GBK").trim();
                     } catch (UnsupportedEncodingException e) {
                         e.printStackTrace();
                     }
-                    channel.setName(chanName);
-                } else {
-                    channel.setName("通道" + i);
+                    channel.setName(chanName.equals("") ? "通道" + i : chanName);
                 }
                 channel.setDeviceId(camera.getId());
                 channel.setChanNo(i);
                 ardChannelService.insertArdChannel(channel);
             }
             //配置到流媒体
-            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(), i);
-                Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd);
-                vtdu = new Vtdu();
-                if (videoCompressionCfg.get("videoEncType") != null) {
-                    if (videoCompressionCfg.get("videoEncType").equals("标准h264")) {
-                        vtdu.setIsCode("0");//默认不转码
-                    } else {
-                        vtdu.setIsCode("1");//默认转码
-                    }
-                } else {
-                    vtdu.setIsCode("0");//默认不转码
-                }
-                vtdu.setRtspSource(rtspSource);
-                vtdu.setName(camera.getId() + "_" + i);
-                vtdu.setMode("1");//默认CPU软解码
-                vtdu.setCameraId(camera.getId());
-                vtduService.insertVtdu(vtdu);
-            }
-
+            addVtdu(camera);
             //创建引导队列
-            if (camera.getCamAlarmGuideEnable() != null && 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());
-            }
+            createGuideQueue(camera);
             return AjaxResult.success("设备登录成功");
         } catch (Exception ex) {
             log.error("设备登录异常:" + ex.getMessage());
@@ -215,18 +179,19 @@
             for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) {
                 ArdChannel channel = new ArdChannel();
                 NetSDKLib.AV_CFG_ChannelName av_cfg_channelName = new NetSDKLib.AV_CFG_ChannelName();
-                boolean b = ConfigModule.GetNewDevConfig(loginId, i - 1, CFG_CMD_CHANNELTITLE, av_cfg_channelName);
-                if (b) {
-                    String chanName = null;
-                    try {
-                        chanName = new String(av_cfg_channelName.szName, "GBK").trim();
-                    } catch (UnsupportedEncodingException e) {
-                        e.printStackTrace();
-                    }
-                    channel.setName(chanName);
-                } else {
-                    channel.setName("通道" + i);
+                boolean b = ConfigModule.GetNewDevConfig(loginId, i-1, CFG_CMD_CHANNELTITLE, av_cfg_channelName);
+                if (!b) {
+                    log.error("获取配置失败,请稍后重试" + getErrorCodePrint());
+                   // return AjaxResult.warn(ErrorCode.getErrorCode(LoginModule.netsdk.CLIENT_GetLastError()));
                 }
+                String chanName = "";
+                try {
+                    chanName = new String(av_cfg_channelName.szName, "GBK").trim();
+                } catch (UnsupportedEncodingException e) {
+                    e.printStackTrace();
+                }
+                channel.setName(chanName.equals("") ? "通道" + i : chanName);
+
                 channel.setDeviceId(camera.getId());
                 channel.setChanNo(i);
                 ardChannelService.insertArdChannel(channel);
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 3b0c5ce..cd34865 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
@@ -161,20 +161,17 @@
             List<ArdChannel> cameraChannelList = getIPChannelInfo(camera);
             if (cameraChannelList.size() > 0) {
                 camera.setChannelList(cameraChannelList);
+                camera.setChanNum(cameraChannelList.size());
                 for (ArdChannel channel : cameraChannelList) {
                     channel.setId(IdUtils.simpleUUID());
                     ardChannelService.insertArdChannel(channel);
                 }
+                ardCamerasService.updateArdCameras(camera);
                 //添加到流媒体
                 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);
-            }
-            ardCamerasService.updateArdCameras(camera);
+            createGuideQueue(camera);
             return AjaxResult.success("设备登录成功");
         } catch (Exception ex) {
             log.error("设备登录异常", ex);
@@ -284,10 +281,11 @@
                     channel.setId(IdUtils.simpleUUID());
                     ardChannelService.insertArdChannel(channel);
                 }
+                ardCamerasService.updateArdCameras(camera);
+                //添加到流媒体
+                addVtdu(camera);
             }
-            ardCamerasService.updateArdCameras(camera);
-            //添加到流媒体
-            addVtdu(camera);
+
             //创建引导队列
             createGuideQueue(camera);
             return AjaxResult.success("设备登录成功");

--
Gitblit v1.9.3