From 197a596d8787eaab061190dc66977e33b6bcee96 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期三, 06 九月 2023 14:27:00 +0800
Subject: [PATCH] 优化电子围栏报警触发条件

---
 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java |   79 ++++++++++++++++++++++++++++++++-------
 1 files changed, 65 insertions(+), 14 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
index 4ed6415..d03fb83 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
@@ -9,11 +9,11 @@
 import com.ruoyi.device.channel.domain.ArdChannel;
 import com.ruoyi.device.hiksdk.common.GlobalVariable;
 import com.ruoyi.device.camera.domain.ArdCameras;
-import com.ruoyi.device.hiksdk.util.hikSdkUtil.GisUtil;
-import com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK;
+import com.ruoyi.utils.gis.GisUtil;
+import com.ruoyi.device.hiksdk.sdk.HCNetSDK;
 import com.ruoyi.device.hiksdk.service.IHikClientService;
-import com.ruoyi.device.hiksdk.util.hikSdkUtil.LoginResultCallBack;
-import com.ruoyi.storage.minio.utils.MinioUtils;
+import com.ruoyi.device.hiksdk.sdk.LoginResultCallBack;
+import com.ruoyi.utils.minio.MinioUtil;
 import com.sun.jna.Native;
 import com.sun.jna.NativeLong;
 import com.sun.jna.Platform;
@@ -29,10 +29,9 @@
 import java.math.BigDecimal;
 import java.nio.ByteBuffer;
 import java.text.DecimalFormat;
-import java.text.SimpleDateFormat;
 import java.util.*;
 
-import static com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK.*;
+import static com.ruoyi.device.hiksdk.sdk.HCNetSDK.*;
 
 /**
  * @ClassName: hikClientServiceImpl
@@ -49,8 +48,6 @@
     private static String endpoint;
     @Resource
     private IArdCamerasService ardCamerasService;
-    @Resource
-    private MinioUtils minioUtil;
 
     private static HCNetSDK hCNetSDK;
 
@@ -388,6 +385,9 @@
         NET_DVR_FOCUSMODE_CFG focusmodeCfg = new NET_DVR_FOCUSMODE_CFG();
         Pointer point = focusmodeCfg.getPointer();
         IntByReference ibrBytesReturned = new IntByReference(0);
+        focusmodeCfg.byFocusMode = 1;
+        focusmodeCfg.byAutoFocusMode = 0;
+        focusmodeCfg.write();
         boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_FOCUSMODECFG, channelNum, point, focusmodeCfg.size(), ibrBytesReturned);
         if (bool) {
             focusmodeCfg.read();
@@ -976,6 +976,14 @@
         return bool;
     }
 
+    /**
+     * @鎻忚堪 鑾峰彇鑱氱劍妯″紡
+     * @鍙傛暟 [userId, channelNum]
+     * @杩斿洖鍊� boolean
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/1/18 13:07
+     * @淇敼浜哄拰鍏跺畠淇℃伅
+     */
     public String getFocusMode(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer channelNum = cmd.getChannelNum();
@@ -1155,9 +1163,9 @@
             InputStream input = new ByteArrayInputStream(array);
             String url = "";
             try {
-                boolean b = minioUtil.uploadObject(BucketName, ObjectName, input, input.available(), MimeTypeUtils.IMAGE_JPEG);
+                boolean b = MinioUtil.uploadObject(BucketName, ObjectName, input, input.available(), MimeTypeUtils.IMAGE_JPEG);
                 if (b) {
-                    url = minioUtil.getBucketObjectUrl(BucketName, ObjectName);
+                    url = MinioUtil.getBucketObjectUrl(BucketName, ObjectName);
                     log.debug("涓婁紶鏂囦欢鎴愬姛!" + url);
                 }
             } catch (IOException ex) {
@@ -1336,11 +1344,11 @@
             log.debug("褰曞儚鍋滄");
             //瀛樺叆minio
             String BucketName = cmd.getRecordBucketName();
-            String ObjectName = cmd.getRecordObjectName()+".mp4";
+            String ObjectName = cmd.getRecordObjectName() + ".mp4";
             FileInputStream stream = new FileInputStream(path);
-            boolean b = minioUtil.uploadObject(BucketName, ObjectName, stream, stream.available(), "video/MP4");
+            boolean b = MinioUtil.uploadObject(BucketName, ObjectName, stream, stream.available(), "video/MP4");
             if (b) {
-                url = minioUtil.getBucketObjectUrl(BucketName, ObjectName);
+                url = MinioUtil.getBucketObjectUrl(BucketName, ObjectName);
                 log.debug("涓婁紶鏂囦欢鎴愬姛!" + url);
             }
             return url;
@@ -1402,7 +1410,7 @@
                 // 鑾峰彇閫氶亾鍙�
                 for (int iChannum = 0; iChannum < chanNum; iChannum++) {
                     ArdChannel ardChannel = new ArdChannel();
-                    int channum = iChannum + startDChan+1;
+                    int channum = iChannum + startDChan + 1;
                     HCNetSDK.NET_DVR_PICCFG_V40 strPicCfg = new HCNetSDK.NET_DVR_PICCFG_V40();
                     strPicCfg.dwSize = strPicCfg.size();
                     strPicCfg.write();
@@ -1426,4 +1434,47 @@
         }
         return channelList;
     }
+
+    /**
+     * @鎻忚堪 鑾峰彇GIS淇℃伅鏁版嵁
+     * @鍙傛暟 [userId, channelNum]
+     * @杩斿洖鍊� boolean
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/1/17 16:36
+     * @淇敼浜哄拰鍏跺畠淇℃伅 0-瑙i攣 1-閿佸畾
+     */
+    @Override
+    public Map<String, Object> getGisInfo(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChannelNum();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return new HashMap<>();
+        }
+        // 鑾峰彇鍙傛暟
+        Integer userId = GlobalVariable.loginMap.get(cameraId);
+        HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG();
+        HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO();
+        struStdCfg.read();
+        IntByReference lchannel = new IntByReference(channelNum);
+        struStdCfg.lpCondBuffer = lchannel.getPointer();
+        struStdCfg.dwCondSize = 4;
+        struStdCfg.lpOutBuffer = struGisInfo.getPointer();
+        struStdCfg.dwOutSize = struGisInfo.size();
+        struStdCfg.write();//璁剧疆鍓嶄箣鍓嶈write()
+        boolean bool = hCNetSDK.NET_DVR_GetSTDConfig(userId, NET_DVR_GET_GISINFO, struStdCfg);
+        if (!bool) {
+            int code = hCNetSDK.NET_DVR_GetLastError();
+            log.error("鑾峰彇GIS淇℃伅鏁版嵁澶辫触,璇风◢鍚庨噸璇�" + code);
+            return new HashMap<>();
+        } else {
+            struGisInfo.read();
+            Map<String, Object> map = new HashMap<>();
+            map.put("p", struGisInfo.struPtzPos.fPanPos);
+            map.put("t", struGisInfo.struPtzPos.fTiltPos<0?struGisInfo.struPtzPos.fTiltPos+360:struGisInfo.struPtzPos.fTiltPos);
+            map.put("z", struGisInfo.struPtzPos.fZoomPos);
+            map.put("fHorFieldAngle", struGisInfo.fHorizontalValue);// 姘村钩瑙嗗満瑙�
+            map.put("fVerFieldAngle", struGisInfo.fVerticalValue);// 鍨傜洿瑙嗗満瑙�
+            return map;
+        }
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3