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 |  244 +++++++++++++++++-------------------------------
 1 files changed, 85 insertions(+), 159 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 6598897..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,29 +3,21 @@
 import com.ruoyi.common.annotation.SdkOperate;
 import com.ruoyi.common.constant.CacheConstants;
 import com.ruoyi.common.core.redis.RedisCache;
-import com.ruoyi.common.utils.file.FileUtils;
 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.channel.domain.ArdChannel;
-import com.ruoyi.device.dhsdk.lib.NetSDKLib;
-import com.ruoyi.device.dhsdk.module.RealPlayModule;
-import com.ruoyi.device.dhsdk.service.IDhClientService;
-import com.ruoyi.device.hiksdk.common.GlobalVariable;
-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.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
 import org.springframework.stereotype.Service;
-
 import javax.annotation.Resource;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
-import static com.ruoyi.device.dhsdk.lib.ToolKits.getErrorCodePrint;
-import static com.ruoyi.device.dhsdk.module.LoginModule.netsdk;
-import static com.ruoyi.device.hiksdk.sdk.HCNetSDK.NET_DVR_CHECK_USER_STATUS;
 
 
 /**
@@ -36,22 +28,34 @@
  **/
 @Service
 @Slf4j(topic = "SDK")
-public class CameraSdkServiceImpl implements ICameraSdkService {
+public class CameraSdkServiceImpl implements ICameraSdkService, ApplicationRunner {
     @Resource
     private IArdCamerasService ardCamerasService;
     @Resource
-    IHikClientService hikClientService;
+    private RedisCache redisCache;
     @Resource
-    IDhClientService dhClientService;
-    @Resource
-    RedisCache redisCache;
+    private SdkStrategyFactory sdkStrategyFactory;
 
-    //鍒濆鍖朣DK
+    /**
+     * 鍚姩绾跨▼鏂规硶锛岀敤浜庢墽琛屽垵濮嬪寲鐧诲綍鐩告満鐨勯�昏緫
+     *
+     * @param args 鍛戒护琛屽弬鏁�
+     */
     @Override
-    public void loginAll() {
-        hikClientService.loginAll();//鐧诲綍鍏ㄩ儴娴峰悍鐩告満
-        dhClientService.loginAll();//鐧诲綍鍏ㄩ儴澶у崕鐩告満
+    public void run(ApplicationArguments args) {
+
+        try {
+            // 浠巃rdCamerasService涓幏鍙朅rdCameras鍒楄〃
+            List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(new ArdCameras());
+            for (ArdCameras camera : ardCameras) {
+                login(camera);
+            }
+        } catch (Exception ex) {
+            // 鍒濆鍖栫櫥褰曠浉鏈哄紓甯革紝璁板綍閿欒鏃ュ織
+            log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
+        }
     }
+
 
     //鐧诲綍
     @Override
@@ -60,12 +64,10 @@
         try {
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    hikClientService.login(ardCamera);
-                    result = true;
-                } else if (factory.equals("2")) {
-                    result = dhClientService.login(ardCamera);
-                }
+                SdkStrategy sdkStrategy = sdkStrategyFactory.getSdkStrategy(factory);
+                //sdkStrategy.login(ardCamera);//鍚屾鐧诲綍
+                sdkStrategy.asyncLogin(ardCamera);//寮傛鐧诲綍
+                result=true;
             }
         } catch (Exception ex) {
             log.error("鐧诲綍寮傚父锛�" + ex.getMessage());
@@ -82,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());
@@ -104,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) {
@@ -127,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) {
@@ -149,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());
@@ -171,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());
@@ -185,6 +172,7 @@
 
     //璁剧疆棰勭疆浣�
     @Override
+    @SdkOperate
     public boolean setPreset(CameraCmd cmd) {
         boolean result = false;
         try {
@@ -192,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());
@@ -206,6 +191,7 @@
 
     //璋冪敤棰勭疆浣�
     @Override
+    @SdkOperate
     public boolean gotoPreset(CameraCmd cmd) {
         boolean result = false;
         try {
@@ -213,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());
@@ -234,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());
@@ -255,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());
@@ -276,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());
@@ -297,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());
@@ -318,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());
@@ -339,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());
@@ -360,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());
@@ -381,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());
@@ -411,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());
@@ -434,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());
@@ -455,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());
@@ -477,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());
@@ -499,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());
@@ -521,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());
@@ -588,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());
@@ -609,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());
@@ -630,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());
@@ -651,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());
@@ -672,15 +599,14 @@
             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());
         }
         return map;
     }
+
+
 }

--
Gitblit v1.9.3