From a3d274cc185968709ff240cd77a11a31df045183 Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期一, 27 五月 2024 14:25:29 +0800
Subject: [PATCH] 设备健康获取某油井一段时间的测量趋势修改提交

---
 ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java |   69 +++++++++++++++++++---------------
 1 files changed, 38 insertions(+), 31 deletions(-)

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 5c9587f..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
@@ -149,26 +149,29 @@
 
             camera.setLoginId(lUserID);
             camera.setState("1");
-            camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum);
-            camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan);
+            int chanNum = m_strDeviceInfo.struDeviceV30.byChanNum;
+            int startDchan = m_strDeviceInfo.struDeviceV30.byStartDChan + 1;
+            if (camera.getGdtype().equals("2")) {
+                chanNum = m_strDeviceInfo.struDeviceV30.byIPChanNum;
+                startDchan = m_strDeviceInfo.struDeviceV30.byStartDChan;
+            }
+            camera.setChanNum(chanNum);
+            camera.setStartDChan(startDchan);
             //鑾峰彇鏈�鏂伴�氶亾
             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);
@@ -260,8 +263,14 @@
 
             camera.setLoginId(lUserID);
             camera.setState("1");
-            camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum);
-            camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan);
+            int chanNum = m_strDeviceInfo.struDeviceV30.byChanNum;
+            int startDchan = m_strDeviceInfo.struDeviceV30.byStartDChan + 1;
+            if (camera.getGdtype().equals("2")) {
+                chanNum = m_strDeviceInfo.struDeviceV30.byIPChanNum;
+                startDchan = m_strDeviceInfo.struDeviceV30.byStartDChan;
+            }
+            camera.setChanNum(chanNum);
+            camera.setStartDChan(startDchan);
 
             //鑾峰彇鏈�鏂伴�氶亾
             List<ArdChannel> cameraChannelList = getIPChannelInfo(camera);
@@ -272,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("璁惧鐧诲綍鎴愬姛");
@@ -1249,8 +1259,8 @@
     @Override
     public AjaxResult controlDefogcfg(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
+        Integer chanNo=cmd.getChanNo();
         boolean enable = cmd.isEnable();
-        Integer channelNum = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return AjaxResult.warn("璁惧鏈櫥褰�");
         }
@@ -1258,10 +1268,10 @@
         NET_DVR_CAMERAPARAMCFG_EX struCameraParam = new NET_DVR_CAMERAPARAMCFG_EX();
         Pointer point = struCameraParam.getPointer();
         IntByReference ibrBytesReturned = new IntByReference(0);
-        boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_CCDPARAMCFG_EX, channelNum, point, struCameraParam.size(), ibrBytesReturned);
+        boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_CCDPARAMCFG_EX, chanNo, point, struCameraParam.size(), ibrBytesReturned);
         if (!b_GetCameraParam) {
             int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("鑾峰彇鍓嶇鍙傛暟澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code));
+            log.error("鑾峰彇鍓嶇鍙傛暟澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code));
             return AjaxResult.warn("鑾峰彇鍓嶇鍙傛暟澶辫触:" + SdkErrorCodeEnum.getDescByCode(code) + "(" + code + ")");
         }
         struCameraParam.read();
@@ -1276,10 +1286,10 @@
         }
         struCameraParam.struDefogCfg = defogcfg;
         struCameraParam.write();
-        boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_CCDPARAMCFG_EX, channelNum, point, struCameraParam.size());
+        boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_CCDPARAMCFG_EX, chanNo, point, struCameraParam.size());
         if (!bool) {
             int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("鍒囨崲閫忛浘澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code));
+            log.error("鍒囨崲閫忛浘澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code));
             return AjaxResult.warn("鍒囨崲閫忛浘澶辫触:" + SdkErrorCodeEnum.getDescByCode(code) + "(" + code + ")");
         }
         log.debug("鍒囨崲閫忛浘鎴愬姛");
@@ -1610,7 +1620,7 @@
     public String record(CameraCmd cmd) {
         try {
             String cameraId = cmd.getCameraId();
-            Integer channelNum = cmd.getChanNo();
+            Integer chanNo = cmd.getChanNo();
             String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
             boolean enable = cmd.isEnable();
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
@@ -1620,7 +1630,7 @@
             //寮哄埗I甯х粨鏋勪綋瀵硅薄
             HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME();   //鏂板缓缁撴瀯浣撳璞�
             netDvrIFrame.read();
-            netDvrIFrame.dwChannel = channelNum;//鍥犱负涓婃枃浠g爜涓缃簡閫氶亾鍙凤紝鎸夌収涓婃枃涓殑璁剧疆
+            netDvrIFrame.dwChannel = chanNo;//鍥犱负涓婃枃浠g爜涓缃簡閫氶亾鍙凤紝鎸夌収涓婃枃涓殑璁剧疆
             netDvrIFrame.byStreamType = 0;
             netDvrIFrame.dwSize = netDvrIFrame.size();
             netDvrIFrame.write();
@@ -1630,7 +1640,7 @@
             //棰勮鍙傛暟
             NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO();
             previewinfo.read();
-            previewinfo.lChannel = channelNum;
+            previewinfo.lChannel = chanNo;
             previewinfo.dwStreamType = 0;//鐮佹祦绫诲瀷锛�0-涓荤爜娴侊紝1-瀛愮爜娴侊紝2-涓夌爜娴侊紝3-铏氭嫙鐮佹祦锛屼互姝ょ被鎺�
             previewinfo.dwLinkMode = 0;//杩炴帴鏂瑰紡锛�0-TCP鏂瑰紡锛�1-UDP鏂瑰紡锛�2-澶氭挱鏂瑰紡锛�3-RTP鏂瑰紡锛�4-RTP/RTSP锛�5-RTP/HTTP锛�6-HRUDP锛堝彲闈犱紶杈擄級锛�7-RTSP/HTTPS锛�8-NPQ
             previewinfo.hPlayWnd = null;//鎾斁绐楀彛鐨勫彞鏌勶紝涓篘ULL琛ㄧず涓嶈В鐮佹樉绀恒��
@@ -1653,6 +1663,7 @@
                     return "";
                 }
                 log.debug("褰曞儚寮�濮�");
+
             } else {
                 if (GlobalVariable.previewMap.containsKey(cameraId)) {
                     Integer lRealHandle = GlobalVariable.previewMap.get(cameraId);
@@ -1835,14 +1846,9 @@
 
     //鑾峰彇IP閫氶亾
     public List<ArdChannel> getIPChannelInfo(ArdCameras camera) {
-
         //鑾峰彇閫氶亾
         List<ArdChannel> channelList = new ArrayList<>();
         try {
-            if (camera.getGdtype().equals("3")) {
-                camera.setChanNum(64);//瓒呰剳鑾峰彇鍦ㄧ嚎閫氶亾鏁�
-                camera.setStartDChan(0);//瓒呰剳鍒濆閫氶亾涓�0
-            }
             IntByReference ibrBytesReturned = new IntByReference(0);//鑾峰彇IP鎺ュ叆閰嶇疆鍙傛暟
             HCNetSDK.NET_DVR_IPPARACFG_V40 m_strIpparaCfg = new HCNetSDK.NET_DVR_IPPARACFG_V40();
             m_strIpparaCfg.write();
@@ -1853,12 +1859,12 @@
             //log.debug("璧峰鏁板瓧閫氶亾鍙凤細" + m_strIpparaCfg.dwStartDChan);//m_strIpparaCfg.dwDChanNum
             for (int iChannum = 0; iChannum < camera.getChanNum(); iChannum++) {
                 ArdChannel ardChannel = new ArdChannel();
-                int channum = iChannum + camera.getStartDChan() + 1;
+                int chanNo = iChannum + camera.getStartDChan();
                 HCNetSDK.NET_DVR_PICCFG_V40 strPicCfg = new HCNetSDK.NET_DVR_PICCFG_V40();
                 strPicCfg.dwSize = strPicCfg.size();
                 strPicCfg.write();
                 Pointer pStrPicCfg = strPicCfg.getPointer();
-                NativeLong lChannel = new NativeLong(channum);
+                NativeLong lChannel = new NativeLong(chanNo);
                 IntByReference pInt = new IntByReference(0);
                 boolean b_GetPicCfg = hCNetSDK.NET_DVR_GetDVRConfig(camera.getLoginId(), HCNetSDK.NET_DVR_GET_PICCFG_V40, lChannel.intValue(),
                         pStrPicCfg, strPicCfg.size(), pInt);
@@ -1872,11 +1878,12 @@
                     m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.read();
                     int channel = m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byIPID + m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byIPIDHigh * 256;
                     String channelName = new String(strPicCfg.sChanName, "GBK").trim();
+                    channelName = channelName.equals("") ? "閫氶亾" + chanNo : channelName;
                     ardChannel.setDeviceId(camera.getId());
                     ardChannel.setName(channelName);
-                    ardChannel.setChanNo(channum);
-                    if (camera.getGdtype().equals("3")) {
-                        //瓒呰剳鍙幏鍙栧湪绾块�氶亾
+                    ardChannel.setChanNo(chanNo);
+                    if (camera.getGdtype().equals("3") || camera.getGdtype().equals("2")) {
+                        //NVR鍙幏鍙栧湪绾块�氶亾
                         if (m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byEnable == 1) {
                             //log.debug("IP閫氶亾" + channum + "鍦ㄧ嚎");
                             channelList.add(ardChannel);

--
Gitblit v1.9.3