From ae68c6103dfb1383d9360aa0b86d5b91677fcd1e Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期五, 31 五月 2024 14:30:42 +0800
Subject: [PATCH] 光电查询加入自定义权限bug修改提交

---
 ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java |  121 ++++++++++++++++++++--------------------
 1 files changed, 60 insertions(+), 61 deletions(-)

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 e374b7a..5f1695a 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
@@ -105,38 +105,22 @@
                 log.error("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触:" + getErrorCodePrint());
                 return AjaxResult.warn(ErrorCode.getErrorCode(LoginModule.netsdk.CLIENT_GetLastError()));
             }
-            if (GlobalVariable.loginMap.containsKey(camera.getId())) {
-                GlobalVariable.loginMap.remove(camera.getId());
-            }
-            //鍒犻櫎绠$悊閫氶亾
-            ardChannelService.deleteArdChannelByDeviceId(camera.getId());
+//            if (GlobalVariable.loginMap.containsKey(camera.getId())) {
+//                GlobalVariable.loginMap.remove(camera.getId());
+//            }
             camera.setState("1");
             camera.setChanNum(m_stDeviceInfo.byChanNum);
             camera.setStartDChan(1);
             camera.setLoginId((int) loginId.longValue());
-            ardCamerasService.updateArdCameras(camera);
             GlobalVariable.loginMap.put(camera.getId(), loginId);
-
             //鑾峰彇鏈�鏂伴�氶亾
-            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 = "";
-                    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);
+            List<ArdChannel> ardChannelList = getChannels(camera);
+            if (ardChannelList.size() > 0) {
+                camera.setChanNum(ardChannelList.size());
+                ardCamerasService.updateArdCameras(camera);
+                //閰嶇疆鍒版祦濯掍綋
+                addVtdu(camera);
             }
-            //閰嶇疆鍒版祦濯掍綋
-            addVtdu(camera);
             //鍒涘缓寮曞闃熷垪
             createGuideQueue(camera);
             return AjaxResult.success("璁惧鐧诲綍鎴愬姛");
@@ -163,11 +147,9 @@
                 log.error("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触:" + getErrorCodePrint());
                 return AjaxResult.warn(getErrorCodePrint());
             }
-            if (GlobalVariable.loginMap.containsKey(camera.getId())) {
-                GlobalVariable.loginMap.remove(camera.getId());
-            }
-            //鍒犻櫎绠$悊閫氶亾
-            ardChannelService.deleteArdChannelByDeviceId(camera.getId());
+//            if (GlobalVariable.loginMap.containsKey(camera.getId())) {
+//                GlobalVariable.loginMap.remove(camera.getId());
+//            }
             camera.setState("1");
             camera.setChanNum(m_stDeviceInfo.byChanNum);
             camera.setStartDChan(1);
@@ -176,28 +158,13 @@
             GlobalVariable.loginMap.put(camera.getId(), loginId);
 
             //鑾峰彇鏈�鏂伴�氶亾
-            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) {
-                    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);
+            List<ArdChannel> ardChannelList = getChannels(camera);
+            if (ardChannelList.size() > 0) {
+                camera.setChanNum(ardChannelList.size());
+                ardCamerasService.updateArdCameras(camera);
+                //閰嶇疆鍒版祦濯掍綋
+                addVtdu(camera);
             }
-            //閰嶇疆鍒版祦濯掍綋
-            addVtdu(camera);
             //鍒涘缓寮曞闃熷垪
             createGuideQueue(camera);
             return AjaxResult.success("鐧诲綍鎴愬姛");
@@ -239,13 +206,49 @@
 
     //鍒涘缓寮曞闃熷垪
     private void createGuideQueue(ArdCameras 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);
-            //鍚姩闃熷垪澶勭悊鍣�
-            queueHandler.process(camera.getId());
+        if (camera.getGdtype().equals("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());
+            }
         }
+    }
+
+    //鑾峰彇閫氶亾
+    public List<ArdChannel> getChannels(ArdCameras camera) {
+        ardChannelService.deleteArdChannelByDeviceId(camera.getId());
+        LLong loginId = new LLong(camera.getLoginId());
+        List<ArdChannel> ardChannelList = new ArrayList<>();
+        for (int i = 1; i < camera.getChanNum() + 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) {
+                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);
+            if (camera.getGdtype().equals("2")) {
+                //NVR杩囨护涓嶅湪绾跨殑閫氶亾
+                if (!ConfigModule.queryCameraState(loginId, camera.getChanNum(), i)) {
+                    continue;
+                }
+            }
+            ardChannelList.add(channel);
+            ardChannelService.insertArdChannel(channel);
+        }
+        return ardChannelList;
     }
 
     /**
@@ -758,10 +761,6 @@
         return result;
     }
 
-    @Override
-    public List<ArdChannel> getIPChannelInfo(ArdCameras camera) {
-        return null;
-    }
 
     /**
      * 寮曞鐩爣浣嶇疆

--
Gitblit v1.9.3