From 5b017324148ea92d96f9f16ade215463d6c712e5 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: 星期六, 10 八月 2024 14:15:02 +0800
Subject: [PATCH] 优化:海康大华sdk断线重连机制

---
 ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java |  349 ++++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 216 insertions(+), 133 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
index de2805a..4478731 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
@@ -18,18 +18,25 @@
 import com.ruoyi.device.camera.factory.CameraSDKFactory;
 import com.ruoyi.device.noguidezone.domain.ArdCameraNoGuideZone;
 import com.ruoyi.device.noguidezone.service.IArdCameraNoGuideZoneService;
+import com.ruoyi.device.terrain.domain.ArdTerrainMark;
+import com.ruoyi.device.terrain.service.IArdTerrainMarkService;
 import com.ruoyi.utils.gis.GisUtil;
 import com.ruoyi.utils.gis.Point;
 import com.ruoyi.utils.sdk.common.GlobalVariable;
 import com.ruoyi.utils.tools.ArdTool;
-import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
+import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 
 /**
@@ -39,7 +46,7 @@
  * @Date: 2023骞�10鏈�16鏃�15:21:01
  **/
 @Service
-@Slf4j(topic = "SDK")
+@Slf4j(topic = "sdk")
 public class CameraSdkServiceImpl implements ICameraSdkService, ApplicationRunner {
     @Resource
     private IArdCamerasService ardCamerasService;
@@ -51,6 +58,8 @@
     private IArdAlarmpointsWellService ardAlarmpointsWellService;
     @Resource
     private IArdCameraNoGuideZoneService ardCameraNoGuideZoneService;
+    @Resource
+    private IArdTerrainMarkService ardTerrainMarkService;
 
     /**
      * 鍚姩绾跨▼鏂规硶锛岀敤浜庢墽琛屽垵濮嬪寲鐧诲綍鐩告満鐨勯�昏緫
@@ -60,24 +69,38 @@
     @Override
     public void run(ApplicationArguments args) {
         try {
-            // 浠巃rdCamerasService涓幏鍙朅rdCameras鍒楄〃
+            log.info("鍒濆鍖栫櫥褰曠浉鏈哄紑濮�");
+            ardCamerasService.resetCameraLoginId();
             List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(new ArdCameras());
-            for (ArdCameras camera : ardCameras) {
-                asyncLogin(camera);
-            }
+            ardCameras.stream().forEach(ardCamera -> asyncLogin(ardCamera));
+            //寮�鍚櫥褰曞け璐ョ浉鏈洪噸杩炲畾鏃朵换鍔�
+            ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
+            executor.scheduleAtFixedRate(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        log.info("寮�濮嬫墽琛岀櫥褰曞け璐ョ浉鏈洪噸杩炲畾鏃朵换鍔�");
+                        List<Object> ardCameras = redisCache.getListKey(CacheConstants.CAMERA_LIST_KEY);
+                        ardCameras.stream()
+                                .map(object -> (ArdCameras) object) // 灏哋bject杞崲涓篈rdCameras
+                                .filter(camera -> !GlobalVariable.loginMap.containsKey(camera.getId()))
+                                .forEach(camera -> asyncLogin(camera));
+                    } catch (Exception ex) {
+                        log.error("閲嶈繛鐩告満寮傚父锛�" + ex.getMessage());
+                    }
+                }
+            }, 30, 30, TimeUnit.SECONDS);  // 浠诲姟寤惰繜
         } catch (Exception ex) {
-            // 鍒濆鍖栫櫥褰曠浉鏈哄紓甯革紝璁板綍閿欒鏃ュ織
             log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
         }
     }
-
 
     //鍚屾鐧诲綍
     @Override
     public AjaxResult login(ArdCameras ardCamera) {
         try {
             if (ardCamera == null) {
-                return AjaxResult.error("鐧诲綍鐩告満澶辫触锛岀浉鏈轰笉瀛樺湪");
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
             String factory = ardCamera.getFactory();
             CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
@@ -92,7 +115,7 @@
     public AjaxResult asyncLogin(ArdCameras ardCamera) {
         try {
             if (ardCamera == null) {
-                return AjaxResult.error("鐧诲綍鐩告満澶辫触锛岀浉鏈轰笉瀛樺湪");
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
             String factory = ardCamera.getFactory();
             CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
@@ -145,13 +168,12 @@
     public AjaxResult pTZControl(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-        if (ardCamera != null) {
-            String factory = ardCamera.getFactory();
-            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-            return cameraSDK.pTZControl(cmd);
-        } else {
-            return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+        if (ardCamera == null) {
+            AjaxResult.warn("璁惧涓嶅瓨鍦�");
         }
+        String factory = ardCamera.getFactory();
+        CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+        return cameraSDK.pTZControl(cmd);
     }
 
     //璁剧疆鑱氱劍鍊�
@@ -160,13 +182,12 @@
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                return cameraSDK.setFocusPos(cmd);
-            } else {
-                return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.setFocusPos(cmd);
         } catch (Exception ex) {
             log.error("璁剧疆鑱氱劍鍊煎紓甯革細" + ex.getMessage());
             return AjaxResult.error("璁剧疆鑱氱劍鍊煎紓甯革細" + ex.getMessage());
@@ -179,13 +200,12 @@
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                return cameraSDK.getFocusPos(cmd);
-            } else {
-                return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.getFocusPos(cmd);
         } catch (Exception ex) {
             log.error("鑾峰彇鑱氱劍鍊煎紓甯革細" + ex.getMessage());
             return AjaxResult.error("鑾峰彇鑱氱劍鍊煎紓甯�:" + ex.getMessage());
@@ -198,13 +218,12 @@
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                return cameraSDK.setPreset(cmd);
-            } else {
-                return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.setPreset(cmd);
         } catch (Exception ex) {
             log.error("璁剧疆棰勭疆浣嶅紓甯革細" + ex.getMessage());
             return AjaxResult.error("璁剧疆棰勭疆浣嶅紓甯�" + ex.getMessage());
@@ -217,13 +236,12 @@
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                return cameraSDK.gotoPreset(cmd);
-            } else {
-                return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.gotoPreset(cmd);
         } catch (Exception ex) {
             log.error("璋冪敤棰勭疆浣嶅紓甯革細" + ex.getMessage());
             return AjaxResult.error("璋冪敤棰勭疆浣嶅紓甯�" + ex.getMessage());
@@ -237,11 +255,12 @@
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                map = cameraSDK.getVideoCompressionCfg(cmd);
+            if (ardCamera == null) {
+                return new HashMap<>();
             }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            map = cameraSDK.getVideoCompressionCfg(cmd);
         } catch (Exception ex) {
             log.error("鑾峰彇鐮佹祦鍘嬬缉鍙傛暟寮傚父锛�" + ex.getMessage());
         }
@@ -254,13 +273,12 @@
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                return cameraSDK.controlDefogcfg(cmd);
-            } else {
-                return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.controlDefogcfg(cmd);
         } catch (Exception ex) {
             log.error("鎿嶆帶閫忛浘寮傚父锛�" + ex.getMessage());
             return AjaxResult.error("鎿嶆帶閫忛浘寮傚父" + ex.getMessage());
@@ -273,13 +291,12 @@
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                return cameraSDK.controlInfrarecfg(cmd);
-            } else {
-                return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.controlInfrarecfg(cmd);
         } catch (Exception ex) {
             log.error("鎿嶆帶绾㈠寮傚父锛�" + ex.getMessage());
             return AjaxResult.error("鎿嶆帶绾㈠寮傚父:" + ex.getMessage());
@@ -292,13 +309,12 @@
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                return cameraSDK.controlFocusMode(cmd);
-            } else {
-                return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.controlFocusMode(cmd);
         } catch (Exception ex) {
             log.error("鎿嶆帶鑱氱劍妯″紡寮傚父锛�" + ex.getMessage());
             return AjaxResult.error("鎿嶆帶鑱氱劍妯″紡寮傚父:" + ex.getMessage());
@@ -311,13 +327,12 @@
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                return cameraSDK.getFocusMode(cmd);
-            } else {
-                return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.getFocusMode(cmd);
         } catch (Exception ex) {
             log.error("鑾峰彇鑱氱劍妯″紡寮傚父锛�" + ex.getMessage());
             return AjaxResult.error("鑾峰彇鑱氱劍妯″紡寮傚父锛�" + ex.getMessage());
@@ -327,38 +342,33 @@
     //浜戝彴鍔犵儹
     @Override
     public AjaxResult controlPTHeateRpwron(CameraCmd cmd) {
-
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                return cameraSDK.controlPTHeateRpwron(cmd);
-            } else {
-                return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.controlPTHeateRpwron(cmd);
         } catch (Exception ex) {
             log.error("鎿嶆帶浜戝彴鍔犵儹寮傚父锛�" + ex.getMessage());
             return AjaxResult.error("鎿嶆帶浜戝彴鍔犵儹寮傚父:" + ex.getMessage());
         }
-
     }
 
     //闀滃ご鍔犵儹
     @Override
     public AjaxResult controlCameraDeicing(CameraCmd cmd) {
-
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                return cameraSDK.controlCameraDeicing(cmd);
-            } else {
-                return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.controlCameraDeicing(cmd);
         } catch (Exception ex) {
             log.error("鎿嶆帶浜戝彴鍔犵儹寮傚父锛�" + ex.getMessage());
             return AjaxResult.error("鎿嶆帶浜戝彴鍔犵儹寮傚父锛�" + ex.getMessage());
@@ -371,22 +381,34 @@
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                return cameraSDK.getPTZLockInfo(cmd);
-            } else {
-                return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.getPTZLockInfo(cmd);
         } catch (Exception ex) {
             log.error("鑾峰彇浜戝彴閿佸畾淇℃伅寮傚父:" + ex.getMessage());
             return AjaxResult.error("鑾峰彇浜戝彴閿佸畾淇℃伅寮傚父:" + ex.getMessage());
         }
     }
 
+    //鏈湴鎶撳浘
     @Override
-    public String captureJPEGPicture(CameraCmd cmd) {
-        return null;
+    public AjaxResult localCapture(CameraCmd cmd) {
+        try {
+            String cameraId = cmd.getCameraId();
+            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
+            }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.localCapture(cmd);
+        } catch (Exception ex) {
+            log.error("鎵嬪姩鎶撳浘寮傚父:" + ex.getMessage());
+            return AjaxResult.error("鎵嬪姩鎶撳浘寮傚父:" + ex.getMessage());
+        }
     }
 
     //鎶撳浘
@@ -417,17 +439,16 @@
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                String gdtype = ardCamera.getGdtype();
-                if (gdtype.equals("1")) {
-                    return cameraSDK.getPtzHigh(cmd);
-                } else {
-                    return cameraSDK.getPtz(cmd);
-                }
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
+            }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            String gdtype = ardCamera.getGdtype();
+            if (gdtype.equals("1")) {
+                return cameraSDK.getPtzHigh(cmd);
             } else {
-                return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+                return cameraSDK.getPtz(cmd);
             }
         } catch (Exception ex) {
             log.error("鑾峰彇ptz寮傚父锛�" + ex.getMessage());
@@ -441,13 +462,12 @@
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                return cameraSDK.getPtzScope(cmd);
-            } else {
-                return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.getPtzScope(cmd);
         } catch (Exception ex) {
             log.error("鑾峰彇ptz鑼冨洿寮傚父锛�" + ex.getMessage());
             return AjaxResult.error("鑾峰彇ptz鑼冨洿寮傚父锛�" + ex.getMessage());
@@ -461,7 +481,7 @@
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera == null) {
-                return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
             CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(ardCamera.getFactory());
             String gdtype = ardCamera.getGdtype();
@@ -471,7 +491,6 @@
             } else {
                 return cameraSDK.setPtz(cmd);
             }
-
         } catch (Exception ex) {
             log.error("璁剧疆ptz寮傚父锛�" + ex.getMessage());
             return AjaxResult.error("璁剧疆ptz寮傚父:" + ex.getMessage());
@@ -484,13 +503,12 @@
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                return cameraSDK.setZeroPtz(cmd);
-            } else {
-                return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.setZeroPtz(cmd);
         } catch (Exception ex) {
             log.error("璁剧疆闆舵柟浣嶈寮傚父锛�" + ex.getMessage());
             return AjaxResult.error("璁剧疆闆舵柟浣嶈寮傚父锛�" + ex.getMessage());
@@ -503,17 +521,47 @@
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                return cameraSDK.guideTargetPosition(cmd);
-            } else {
-                return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪");
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.guideTargetPosition(cmd);
         } catch (Exception ex) {
             log.error("寮曞鎸囧悜鐩爣寮傚父:" + ex.getMessage());
             return AjaxResult.error("寮曞鎸囧悜鐩爣寮傚父:" + ex.getMessage());
         }
+    }
+
+    /**
+     * @return
+     * @Author 鍒樿嫃涔�
+     * @Description 淇淇话鍊硷紙鏍规嵁鐩告満ID鑾峰彇500绫宠寖鍥村唴鐨勫湴褰㈠弬鏁伴泦鍚堬紝璁$畻骞冲潎鍊煎姞涓奣鍊硷級
+     * @Date 2024/6/22 11:16
+     * @Param
+     */
+    @Override
+    public Double correctPitch(CameraCmd cmd) {
+        Double pitchAngle = 0.0;
+        try {
+            double[] targetPositions = cmd.getTargetPosition();
+            ArdTerrainMark ardTerrainMark = new ArdTerrainMark();
+            ardTerrainMark.setCameraId(cmd.getCameraId());
+            List<ArdTerrainMark> ardTerrainMarks = ardTerrainMarkService.selectArdTerrainMarkList(ardTerrainMark);
+            //杩囨护500绫宠寖鍥村唴鐨勯泦鍚�
+            ardTerrainMarks = ardTerrainMarks.stream().filter(n -> GisUtil.getDistance(targetPositions, new double[]{n.getLongitude(), n.getLatitude(), n.getAltitude()}) <= 500).collect(Collectors.toList());
+            //璁$畻T骞冲潎鍊�
+            OptionalDouble averageT = ardTerrainMarks.stream().mapToDouble(ArdTerrainMark::getT).average();
+            // 杈撳嚭
+            if (averageT.isPresent()) {
+                pitchAngle = averageT.getAsDouble();
+                log.debug("淇淇话鍊硷細" + pitchAngle);
+            }
+        } catch (Exception ex) {
+            log.error("淇淇话鍊煎紓甯革細" + ex.getMessage());
+
+        }
+        return pitchAngle;
     }
 
     //寮曞鎸囧悜浜�
@@ -527,7 +575,7 @@
         //鑾峰彇浜�
         ArdAlarmpointsWell well = ardAlarmpointsWellService.selectArdAlarmpointsWellById(cmd.getWellId());
         if (well == null) {
-            return AjaxResult.error("浜曚笉瀛樺湪");
+            return AjaxResult.warn("浜曚笉瀛樺湪");
         }
         GuidePoint guidePoint = new GuidePoint().setLongitude(well.getLongitude()).setLatitude(well.getLatitude());
         cmd.setTargetPosition(new double[]{guidePoint.getLongitude(), guidePoint.getLatitude()});
@@ -590,15 +638,15 @@
         String cameraId = getCameraByNear(new double[]{well.getLongitude(), well.getLatitude()});
         cmd.setCameraId(cameraId);
         if ("".equals(cameraId)) {
-            return AjaxResult.error("鏈壘鍒板紩瀵肩浉鏈�");
+            return AjaxResult.warn("鏈壘鍒板紩瀵肩浉鏈�");
         }
         //鍒ゆ柇绂佸紩鍖�
         if (isInPolygon(cameraId, new Double[]{well.getLongitude(), well.getLatitude()})) {
-            return AjaxResult.error("浜曚綅缃睘浜庣浉鏈虹姝㈠紩瀵煎尯鍩�");
+            return AjaxResult.warn("浜曚綅缃睘浜庣浉鏈虹姝㈠紩瀵煎尯鍩�");
         }
         //鎸変簳鍧愭爣寮�濮嬪紩瀵�
         if (!guideTargetPosition(cmd).get("code").equals(200)) {
-            return AjaxResult.error("浜曞潗鏍囧紩瀵煎け璐�", "cameraId:" + cameraId);
+            return AjaxResult.warn("浜曞潗鏍囧紩瀵煎け璐�", "cameraId:" + cameraId);
         }
         return AjaxResult.success("浜曞潗鏍囧紩瀵兼垚鍔�", "cameraId:" + cameraId);
 
@@ -701,7 +749,7 @@
         String cameraId = cmd.getCameraId();//鐢宠閿佺殑鐩告満
         ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
         if (ardCameras == null) {
-            return AjaxResult.error("璁惧鏈櫥褰�");
+            return AjaxResult.warn("璁惧涓嶅瓨鍦�");
         }
         Date now = new Date();
         now.setTime(now.getTime() + cmd.getExpired() * 1000);
@@ -724,7 +772,7 @@
         String operator = cmd.getOperator();//鐢宠鑰�
         ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
         if (ardCameras == null) {
-            return AjaxResult.error("璁惧鏈櫥褰�");
+            return AjaxResult.warn("璁惧涓嶅瓨鍦�");
         }
         if (ardCameras.getOperatorId().equals(operator)) {
             //濡傛灉瑙i攣鐩告満鐨勫綋鍓嶇敤鎴锋槸鐢宠鑰咃紝鍒欐竻绌鸿鐩告満鐨勮繃鏈熸椂闂�
@@ -817,16 +865,51 @@
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                return cameraSDK.getGisInfo(cmd);
-            } else {
-                return AjaxResult.error("鐩告満涓嶅瓨鍦�");
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
             }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.getGisInfo(cmd);
         } catch (Exception ex) {
             log.error("鑾峰彇鐩告満鏋惰鍙傛暟寮傚父锛�" + ex.getMessage());
             return AjaxResult.error("鑾峰彇鐩告満鏋惰鍙傛暟寮傚父锛�" + ex.getMessage());
         }
     }
+
+    //鏈湴褰曞儚寮�濮�
+    @Override
+    public AjaxResult localRecordStart(CameraCmd cmd) {
+        try {
+            String cameraId = cmd.getCameraId();
+            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
+            }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.localRecordStart(cmd);
+        } catch (Exception ex) {
+            log.error("鏈湴褰曞儚寮�濮嬪紓甯革細" + ex.getMessage());
+            return AjaxResult.error("鏈湴褰曞儚寮�濮嬪紓甯革細" + ex.getMessage());
+        }
+    }
+
+    //鏈湴褰曞儚鍋滄
+    @Override
+    public AjaxResult localRecordStop(CameraCmd cmd) {
+        try {
+            String cameraId = cmd.getCameraId();
+            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
+            if (ardCamera == null) {
+                return AjaxResult.warn("璁惧涓嶅瓨鍦�");
+            }
+            String factory = ardCamera.getFactory();
+            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+            return cameraSDK.localRecordStop(cmd);
+        } catch (Exception ex) {
+            log.error("鏈湴褰曞儚鍋滄寮傚父锛�" + ex.getMessage());
+            return AjaxResult.error("鏈湴褰曞儚鍋滄寮傚父锛�" + ex.getMessage());
+        }
+    }
 }

--
Gitblit v1.9.3