From dd84c954253800217461651d7ff1ac290962c60a Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期六, 22 六月 2024 10:13:12 +0800
Subject: [PATCH] 24小时报警兴趣点前十统计bug修改提交

---
 ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java |  106 ++++++++++++++++++++++++----------------------------
 1 files changed, 49 insertions(+), 57 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 cd34865..ef02d00 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
@@ -4,6 +4,8 @@
 import com.ruoyi.alarm.global.domain.GuideTask;
 import com.ruoyi.alarm.global.service.impl.QueueHandler;
 import com.ruoyi.common.annotation.SdkOperate;
+import com.ruoyi.common.config.ARDConfig;
+import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.file.FileUtils;
 import com.ruoyi.common.utils.file.MimeTypeUtils;
@@ -138,15 +140,11 @@
                 }
             }
 
-            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());
+//            }
             GlobalVariable.loginMap.put(camera.getId(), lUserID);
             GlobalVariable.loginCameraMap.put(lUserID, camera);
-
             camera.setLoginId(lUserID);
             camera.setState("1");
             int chanNum = m_strDeviceInfo.struDeviceV30.byChanNum;
@@ -158,14 +156,10 @@
             camera.setChanNum(chanNum);
             camera.setStartDChan(startDchan);
             //鑾峰彇鏈�鏂伴�氶亾
-            List<ArdChannel> cameraChannelList = getIPChannelInfo(camera);
+            List<ArdChannel> cameraChannelList = getChannels(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);
@@ -252,15 +246,11 @@
                     }
                 }
             }
-            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());
+//            }
             GlobalVariable.loginMap.put(camera.getId(), lUserID);
             GlobalVariable.loginCameraMap.put(lUserID, camera);
-
             camera.setLoginId(lUserID);
             camera.setState("1");
             int chanNum = m_strDeviceInfo.struDeviceV30.byChanNum;
@@ -271,21 +261,15 @@
             }
             camera.setChanNum(chanNum);
             camera.setStartDChan(startDchan);
-
             //鑾峰彇鏈�鏂伴�氶亾
-            List<ArdChannel> cameraChannelList = getIPChannelInfo(camera);
+            List<ArdChannel> cameraChannelList = getChannels(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);
             }
-
             //鍒涘缓寮曞闃熷垪
             createGuideQueue(camera);
             return AjaxResult.success("璁惧鐧诲綍鎴愬姛");
@@ -297,12 +281,14 @@
 
     //鍒涘缓寮曞闃熷垪
     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());
+            }
         }
     }
 
@@ -1259,7 +1245,7 @@
     @Override
     public AjaxResult controlDefogcfg(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer chanNo=cmd.getChanNo();
+        Integer chanNo = cmd.getChanNo();
         boolean enable = cmd.isEnable();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return AjaxResult.warn("璁惧鏈櫥褰�");
@@ -1621,7 +1607,9 @@
         try {
             String cameraId = cmd.getCameraId();
             Integer chanNo = cmd.getChanNo();
-            String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
+            // 鏈湴涓存椂褰曞儚鍦板潃
+            String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+            String path = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4");
             boolean enable = cmd.isEnable();
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return "";
@@ -1693,7 +1681,9 @@
         try {
             String cameraId = cmd.getCameraId();
             Integer channelNum = cmd.getChanNo();
-            String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
+            // 鏈湴涓存椂褰曞儚鍦板潃
+            String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+            String path = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4");
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return false;
             }
@@ -1751,7 +1741,9 @@
         try {
             String cameraId = cmd.getCameraId();
             Integer channelNum = cmd.getChanNo();
-            String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
+            // 鏈湴涓存椂褰曞儚鍦板潃
+            String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+            String path = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4");
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return "";
             }
@@ -1845,10 +1837,12 @@
     }
 
     //鑾峰彇IP閫氶亾
-    public List<ArdChannel> getIPChannelInfo(ArdCameras camera) {
+    public List<ArdChannel> getChannels(ArdCameras camera) {
         //鑾峰彇閫氶亾
         List<ArdChannel> channelList = new ArrayList<>();
         try {
+            //鍒犻櫎绠$悊閫氶亾
+            ardChannelService.deleteArdChannelByDeviceId(camera.getId());
             IntByReference ibrBytesReturned = new IntByReference(0);//鑾峰彇IP鎺ュ叆閰嶇疆鍙傛暟
             HCNetSDK.NET_DVR_IPPARACFG_V40 m_strIpparaCfg = new HCNetSDK.NET_DVR_IPPARACFG_V40();
             m_strIpparaCfg.write();
@@ -1858,7 +1852,7 @@
             m_strIpparaCfg.read();
             //log.debug("璧峰鏁板瓧閫氶亾鍙凤細" + m_strIpparaCfg.dwStartDChan);//m_strIpparaCfg.dwDChanNum
             for (int iChannum = 0; iChannum < camera.getChanNum(); iChannum++) {
-                ArdChannel ardChannel = new ArdChannel();
+                ArdChannel channel = new ArdChannel();
                 int chanNo = iChannum + camera.getStartDChan();
                 HCNetSDK.NET_DVR_PICCFG_V40 strPicCfg = new HCNetSDK.NET_DVR_PICCFG_V40();
                 strPicCfg.dwSize = strPicCfg.size();
@@ -1876,22 +1870,21 @@
                 if (m_strIpparaCfg.struStreamMode[iChannum].byGetStreamType == 0) {
                     m_strIpparaCfg.struStreamMode[iChannum].uGetStream.setType(HCNetSDK.NET_DVR_IPCHANINFO.class);
                     m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.read();
-                    int channel = m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byIPID + m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byIPIDHigh * 256;
+                    int channelNo = 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(chanNo);
+                    channel.setDeviceId(camera.getId());
+                    channel.setName(channelName);
+                    channel.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);
+                        //NVR杩囨护绂荤嚎閫氶亾
+                        if (m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byEnable != 1) {
+                            continue;
                         }
-                    } else {
-                        channelList.add(ardChannel);
                     }
+                    channelList.add(channel);
                 }
+                ardChannelService.insertArdChannel(channel);
             }
         } catch (Exception ex) {
             log.error("鑾峰彇IP閫氶亾寮傚父:" + ex.getMessage());
@@ -1946,9 +1939,12 @@
     @Override
     public AjaxResult localRecordStart(CameraCmd cmd) {
         try {
+            String operator = cmd.getOperator();
             String cameraId = cmd.getCameraId();
             Integer channelNum = cmd.getChanNo();
-            String path = FileUtils.createFile("D:/LocalRecordTemp/" + cameraId + ".mp4");
+            // 鏈湴涓存椂褰曞儚鍦板潃
+            String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+            String path = FileUtils.createFile(tempPath + "/" + operator + "/" + cameraId + ".mp4");
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return AjaxResult.warn("璁惧鏈櫥褰�");
             }
@@ -2005,6 +2001,7 @@
     @Override
     public AjaxResult localRecordStop(CameraCmd cmd) {
         try {
+            String operator = cmd.getOperator();
             String cameraId = cmd.getCameraId();
             Integer channelNum = cmd.getChanNo();
             Integer lRealHandle = cmd.getRecordId().intValue();
@@ -2035,17 +2032,12 @@
             previewinfo.byNPQMode = 0;//NPQ妯″紡锛�0-鐩磋繛妯″紡锛�1-杩囨祦濯掍綋妯″紡
             previewinfo.write();
             //endregion
-            //if (GlobalVariable.previewMap.containsKey(cameraId)) {
-            //    Integer lRealHandle = GlobalVariable.previewMap.get(cameraId);
-            //    hCNetSDK.NET_DVR_StopRealPlay(lRealHandle);
-            //    GlobalVariable.previewMap.remove(cameraId);
-            //}
             hCNetSDK.NET_DVR_StopRealPlay(lRealHandle);
             log.debug("鏈湴褰曞儚鍋滄");
-            String recordPath = FileUtils.createFile("D:/LocalRecordTemp/" + cameraId + ".mp4");
+            // 鏈湴涓存椂褰曞儚鍦板潃
+            String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+            String recordPath = FileUtils.createFile(tempPath + "/" + operator + "/" + cameraId + ".mp4");
             byte[] recordBytes = Files.readAllBytes(Paths.get(recordPath));
-            //OutputStream outputStream = response.getOutputStream();
-            //outputStream.write(imageBytes);
             return AjaxResult.success(recordBytes);
         } catch (Exception ex) {
             log.error("鏈湴褰曞儚鍋滄寮傚父" + ex.getMessage());

--
Gitblit v1.9.3