From 6decb63d865de6b551324fd9782555786132170e Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期二, 07 十一月 2023 16:11:22 +0800
Subject: [PATCH] 1、修改相机异步登录 2、sdk切换更改为策略模式 3、修复手动巡检停止录像bug

---
 ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java |  228 ++++++++++++++++++--------------------------------------
 1 files changed, 73 insertions(+), 155 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 b561e4e..bd6a533 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
@@ -3,20 +3,16 @@
 import com.ruoyi.common.annotation.SdkOperate;
 import com.ruoyi.common.constant.CacheConstants;
 import com.ruoyi.common.core.redis.RedisCache;
-import com.ruoyi.common.utils.Threads;
 import com.ruoyi.device.camera.domain.ArdCameras;
 import com.ruoyi.device.camera.domain.CameraCmd;
 import com.ruoyi.device.camera.service.IArdCamerasService;
 import com.ruoyi.device.camera.service.ICameraSdkService;
-import com.ruoyi.device.dhsdk.service.IDhClientService;
-import com.ruoyi.device.hiksdk.service.IHikClientService;
+import com.ruoyi.device.camera.strategy.SdkStrategy;
+import com.ruoyi.device.camera.strategy.SdkStrategyFactory;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.SmartInitializingSingleton;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
 import org.springframework.stereotype.Service;
-
-import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import java.util.Date;
 import java.util.HashMap;
@@ -36,27 +32,30 @@
     @Resource
     private IArdCamerasService ardCamerasService;
     @Resource
-    IHikClientService hikClientService;
+    private RedisCache redisCache;
     @Resource
-    IDhClientService dhClientService;
-    @Resource
-    RedisCache redisCache;
+    private SdkStrategyFactory sdkStrategyFactory;
 
+    /**
+     * 鍚姩绾跨▼鏂规硶锛岀敤浜庢墽琛屽垵濮嬪寲鐧诲綍鐩告満鐨勯�昏緫
+     *
+     * @param args 鍛戒护琛屽弬鏁�
+     */
     @Override
-    public void run(ApplicationArguments args) throws Exception {
+    public void run(ApplicationArguments args) {
+
         try {
+            // 浠巃rdCamerasService涓幏鍙朅rdCameras鍒楄〃
             List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(new ArdCameras());
             for (ArdCameras camera : ardCameras) {
-                if ("1".equals(camera.getFactory())) {
-                    hikClientService.login(camera);
-                } else if ("2".equals(camera.getFactory())) {
-                    dhClientService.login(camera);
-                }
+                login(camera);
             }
         } catch (Exception ex) {
+            // 鍒濆鍖栫櫥褰曠浉鏈哄紓甯革紝璁板綍閿欒鏃ュ織
             log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
         }
     }
+
 
     //鐧诲綍
     @Override
@@ -65,13 +64,10 @@
         try {
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    hikClientService.login(ardCamera);
-                    result = true;
-                } else if (factory.equals("2")) {
-                    dhClientService.login(ardCamera);
-                    result = true;
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                //sdkStrategy.login(ardCamera);//鍚屾鐧诲綍
+                sdkStrategy.asyncLogin(ardCamera);//寮傛鐧诲綍
+                result=true;
             }
         } catch (Exception ex) {
             log.error("鐧诲綍寮傚父锛�" + ex.getMessage());
@@ -88,11 +84,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.logout(cameraId);
-                } else if (factory.equals("2")) {
-                    result = dhClientService.logout(cameraId);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.logout(cameraId);
             }
         } catch (Exception ex) {
             log.error("娉ㄩ攢寮傚父锛�" + ex.getMessage());
@@ -110,11 +103,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    onLine = hikClientService.isOnLine(cmd);
-                } else if (factory.equals("2")) {
-                    onLine = dhClientService.isOnLine(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                onLine = sdkStrategy.isOnLine(cmd);
             }
             return onLine;
         } catch (Exception ex) {
@@ -133,11 +123,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.pTZControlWithSpeed(cmd);
-                } else if (factory.equals("2")) {
-                    result = dhClientService.pTZControl(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.pTZControl(cmd);
             }
             return result;
         } catch (Exception ex) {
@@ -155,11 +142,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.setFocusPos(cmd);
-                } else if (factory.equals("2")) {
-                    result = dhClientService.setFocusPos(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.setFocusPos(cmd);
             }
         } catch (Exception ex) {
             log.error("璁剧疆鑱氱劍鍊煎紓甯革細" + ex.getMessage());
@@ -177,11 +161,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.getFocusPos(cmd);
-                } else if (factory.equals("2")) {
-                    result = dhClientService.getFocusPos(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.getFocusPos(cmd);
             }
         } catch (Exception ex) {
             log.error("鑾峰彇鑱氱劍鍊煎紓甯革細" + ex.getMessage());
@@ -191,6 +172,7 @@
 
     //璁剧疆棰勭疆浣�
     @Override
+    @SdkOperate
     public boolean setPreset(CameraCmd cmd) {
         boolean result = false;
         try {
@@ -198,11 +180,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.setPreset(cmd);
-                } else if (factory.equals("2")) {
-                    result = dhClientService.setPreset(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.setPreset(cmd);
             }
         } catch (Exception ex) {
             log.error("璁剧疆棰勭疆浣嶅紓甯革細" + ex.getMessage());
@@ -212,6 +191,7 @@
 
     //璋冪敤棰勭疆浣�
     @Override
+    @SdkOperate
     public boolean gotoPreset(CameraCmd cmd) {
         boolean result = false;
         try {
@@ -219,11 +199,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.gotoPreset(cmd);
-                } else if (factory.equals("2")) {
-                    result = dhClientService.gotoPreset(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.gotoPreset(cmd);
             }
         } catch (Exception ex) {
             log.error("璋冪敤棰勭疆浣嶅紓甯革細" + ex.getMessage());
@@ -240,11 +217,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    map = hikClientService.getVideoCompressionCfg(cmd);
-                } else if (factory.equals("2")) {
-                    map = dhClientService.getVideoCompressionCfg(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                map = sdkStrategy.getVideoCompressionCfg(cmd);
             }
         } catch (Exception ex) {
             log.error("鑾峰彇鐮佹祦鍘嬬缉鍙傛暟寮傚父锛�" + ex.getMessage());
@@ -261,11 +235,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.controlDefogcfg(cmd);
-                } else if (factory.equals("2")) {
-                    //涓嶆敮鎸�
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.controlDefogcfg(cmd);
             }
         } catch (Exception ex) {
             log.error("鎿嶆帶閫忛浘寮傚父锛�" + ex.getMessage());
@@ -282,11 +253,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.controlInfrarecfg(cmd);
-                } else if (factory.equals("2")) {
-                    result = dhClientService.controlInfrarecfg(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.controlInfrarecfg(cmd);
             }
         } catch (Exception ex) {
             log.error("鎿嶆帶绾㈠寮傚父锛�" + ex.getMessage());
@@ -303,11 +271,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.controlFocusMode(cmd);
-                } else if (factory.equals("2")) {
-                    result = dhClientService.controlFocusMode(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.controlFocusMode(cmd);
             }
         } catch (Exception ex) {
             log.error("鎿嶆帶鑱氱劍妯″紡寮傚父锛�" + ex.getMessage());
@@ -324,11 +289,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.getFocusMode(cmd);
-                } else if (factory.equals("2")) {
-                    result = dhClientService.getFocusMode(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.getFocusMode(cmd);
             }
         } catch (Exception ex) {
             log.error("鑾峰彇鑱氱劍妯″紡寮傚父锛�" + ex.getMessage());
@@ -345,11 +307,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.controlPTHeateRpwron(cmd);
-                } else if (factory.equals("2")) {
-                    //涓嶆敮鎸�
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.controlPTHeateRpwron(cmd);
             }
         } catch (Exception ex) {
             log.error("鎿嶆帶浜戝彴鍔犵儹寮傚父锛�" + ex.getMessage());
@@ -366,11 +325,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.controlCameraDeicing(cmd);
-                } else if (factory.equals("2")) {
-                    //涓嶆敮鎸�
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.controlCameraDeicing(cmd);
             }
         } catch (Exception ex) {
             log.error("鎿嶆帶浜戝彴鍔犵儹寮傚父锛�" + ex.getMessage());
@@ -387,11 +343,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.getPTZLockInfo(cmd);
-                } else if (factory.equals("2")) {
-
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.getPTZLockInfo(cmd);
             }
         } catch (Exception ex) {
             log.error("鑾峰彇浜戝彴閿佸畾淇℃伅寮傚父锛�" + ex.getMessage());
@@ -417,13 +370,8 @@
             if (ardCamera != null) {
                 //鑾峰彇鎽勫儚澶村伐鍘�
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    //璋冪敤hikClientService鐨刾icCutCate鏂规硶
-                    url = hikClientService.picCutCate(cmd);
-                } else if (factory.equals("2")) {
-                    //璋冪敤dhClientService鐨刾icCutCate鏂规硶
-                    url = dhClientService.picCutCate(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                url = sdkStrategy.picCutCate(cmd);
             }
         } catch (Exception ex) {
             log.error("鎶撳浘寮傚父锛�" + ex.getMessage());
@@ -440,11 +388,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    map = hikClientService.getPtz(cmd);
-                } else if (factory.equals("2")) {
-                    map = dhClientService.getPtz(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                map = sdkStrategy.getPtz(cmd);
             }
         } catch (Exception ex) {
             log.error("鑾峰彇ptz寮傚父锛�" + ex.getMessage());
@@ -461,11 +406,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    map = hikClientService.getPtzScope(cmd);
-                } else if (factory.equals("2")) {
-
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                map = sdkStrategy.getPtzScope(cmd);
             }
         } catch (Exception ex) {
             log.error("鑾峰彇ptz鑼冨洿寮傚父锛�" + ex.getMessage());
@@ -483,11 +425,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.setPtz(cmd);
-                } else if (factory.equals("2")) {
-                    result = dhClientService.setPtz(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.setPtz(cmd);
             }
         } catch (Exception ex) {
             log.error("璁剧疆ptz寮傚父锛�" + ex.getMessage());
@@ -505,11 +444,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.setZeroPtz(cmd);
-                } else if (factory.equals("2")) {
-                    result = dhClientService.setZeroPtz(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.setZeroPtz(cmd);
             }
         } catch (Exception ex) {
             log.error("璁剧疆闆舵柟浣嶈寮傚父锛�" + ex.getMessage());
@@ -527,11 +463,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.guideTargetPosition(cmd);
-                } else if (factory.equals("2")) {
-                    result = dhClientService.guideTargetPosition(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.guideTargetPosition(cmd);
             }
         } catch (Exception ex) {
             log.error("寮曞鎸囧悜鐩爣寮傚父锛�" + ex.getMessage());
@@ -594,11 +527,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    url = hikClientService.record(cmd);
-                } else if (factory.equals("2")) {
-                    url = dhClientService.record(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                url = sdkStrategy.record(cmd);
             }
         } catch (Exception ex) {
             log.error("褰曞儚寮傚父锛�" + ex.getMessage());
@@ -615,11 +545,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.recordStart(cmd);
-                } else if (factory.equals("2")) {
-                    result = dhClientService.recordStart(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.recordStart(cmd);
             }
         } catch (Exception ex) {
             log.error("寮�濮嬪綍鍍忓紓甯革細" + ex.getMessage());
@@ -636,11 +563,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    url = hikClientService.recordStopToMinio(cmd);
-                } else if (factory.equals("2")) {
-                    url = dhClientService.recordStopToMinio(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                url = sdkStrategy.recordStopToMinio(cmd);
             }
         } catch (Exception ex) {
             log.error("鍋滄褰曞儚寮傚父锛�" + ex.getMessage());
@@ -657,11 +581,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.recordStopNotToMinio(cmd);
-                } else if (factory.equals("2")) {
-                    result = dhClientService.recordStopNotToMinio(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                result = sdkStrategy.recordStopNotToMinio(cmd);
             }
         } catch (Exception ex) {
             log.error("鍋滄褰曞儚寮傚父锛�" + ex.getMessage());
@@ -678,11 +599,8 @@
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    map = hikClientService.getGisInfo(cmd);
-                } else if (factory.equals("2")) {
-                    map = dhClientService.getGisInfo(cmd);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                map = sdkStrategy.getGisInfo(cmd);
             }
         } catch (Exception ex) {
             log.error("鑾峰彇鐩告満鏋惰鍙傛暟寮傚父锛�" + ex.getMessage());

--
Gitblit v1.9.3