From aaa07634fa899b7346dfd61c6f70962adbc1dca5 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期五, 20 十月 2023 08:55:02 +0800
Subject: [PATCH] 1. 增加聚焦值和获取接口。 2. 增加视频编码获取接口。 3. 流媒体通过编码自动切换是否转码。

---
 ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java |  226 +++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 156 insertions(+), 70 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 97591be..00fb04a 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
@@ -1,11 +1,16 @@
 package com.ruoyi.device.camera.service.impl;
 
+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;
@@ -13,10 +18,13 @@
 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;
 
 
@@ -30,12 +38,14 @@
 @Slf4j(topic = "SDK")
 public class CameraSdkServiceImpl implements ICameraSdkService {
     @Resource
+    private IArdCamerasService ardCamerasService;
+    @Resource
     IHikClientService hikClientService;
     @Resource
     IDhClientService dhClientService;
     @Resource
     RedisCache redisCache;
-
+    //鍒濆鍖朣DK
     @Override
     public void initSDK() {
         //鍒濆鍖栧姞杞絪dk搴撴枃浠�
@@ -48,20 +58,47 @@
             dhClientService.loginAll();//鐧诲綍鍏ㄩ儴澶у崕鐩告満
         }
     }
+    //鐧诲綍
     @Override
-    public void syncLogin(ArdCameras cameras) {
-
+    public Boolean login(ArdCameras ardCamera) {
+        boolean result = false;
+        try {
+            if (ardCamera != null) {
+                String factory = ardCamera.getFactory();
+                if (factory.equals("1")) {
+                    hikClientService.syncLogin(ardCamera);
+                    result=true;
+                } else if (factory.equals("2")) {
+                    result = dhClientService.login(ardCamera);
+                }
+            }
+        } catch (Exception ex) {
+            log.error("鐧诲綍寮傚父锛�" + ex.getMessage());
+            return false;
+        }
+        return result;
     }
-
-    @Override
-    public void asyncLogin(ArdCameras cameras) {
-
-    }
-
+    //娉ㄩ攢
     @Override
     public boolean logout(String cameraId) {
-        return false;
+        boolean result = false;
+        try {
+            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);
+                }
+            }
+        } catch (Exception ex) {
+            log.error("娉ㄩ攢寮傚父锛�" + ex.getMessage());
+            return false;
+        }
+        return result;
     }
+
     //鍦ㄧ嚎妫�娴�
     @Override
     public boolean isOnLine(CameraCmd cmd) {
@@ -84,6 +121,7 @@
         }
     }
     //浜戝彴鎺у埗
+    @SdkOperate
     @Override
     public boolean pTZControl(CameraCmd cmd) {
         try {
@@ -116,7 +154,7 @@
                 if (factory.equals("1")) {
                     result = hikClientService.setFocusPos(cmd);
                 } else if (factory.equals("2")) {
-
+                    result = dhClientService.setFocusPos(cmd);
                 }
             }
         } catch (Exception ex) {
@@ -127,23 +165,23 @@
     }
     //鑾峰彇鑱氱劍鍊�
     @Override
-    public Map<String, Object> getFocusPos(CameraCmd cmd) {
-        Map<String, Object> map = new HashMap<>();
+    public int getFocusPos(CameraCmd cmd) {
+        int result=0;
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
                 if (factory.equals("1")) {
-                    map = hikClientService.getFocusPos(cmd);
+                    result = hikClientService.getFocusPos(cmd);
                 } else if (factory.equals("2")) {
-
+                    result = dhClientService.getFocusPos(cmd);
                 }
             }
         } catch (Exception ex) {
             log.error("鑾峰彇鑱氱劍鍊煎紓甯革細" + ex.getMessage());
         }
-        return map;
+        return result;
     }
     //璁剧疆棰勭疆浣�
     @Override
@@ -187,8 +225,8 @@
     }
     //鑾峰彇鐮佹祦鍘嬬缉鍙傛暟
     @Override
-    public Map<String, String> getVideoCompressionCfg(CameraCmd cmd) {
-        Map<String, String> map = new HashMap<>();
+    public Map<String, Object> getVideoCompressionCfg(CameraCmd cmd) {
+        Map<String, Object> map = new HashMap<>();
         try {
             String cameraId = cmd.getCameraId();
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
@@ -197,7 +235,7 @@
                 if (factory.equals("1")) {
                     map = hikClientService.getVideoCompressionCfg(cmd);
                 } else if (factory.equals("2")) {
-
+                    map = dhClientService.getVideoCompressionCfg(cmd);
                 }
             }
         } catch (Exception ex) {
@@ -217,7 +255,7 @@
                 if (factory.equals("1")) {
                     result = hikClientService.controlDefogcfg(cmd);
                 } else if (factory.equals("2")) {
-
+                    //涓嶆敮鎸�
                 }
             }
         } catch (Exception ex) {
@@ -237,7 +275,7 @@
                 if (factory.equals("1")) {
                     result = hikClientService.controlInfrarecfg(cmd);
                 } else if (factory.equals("2")) {
-
+                    result = dhClientService.controlInfrarecfg(cmd);
                 }
             }
         } catch (Exception ex) {
@@ -297,7 +335,7 @@
                 if (factory.equals("1")) {
                     result = hikClientService.controlPTHeateRpwron(cmd);
                 } else if (factory.equals("2")) {
-
+                    //涓嶆敮鎸�
                 }
             }
         } catch (Exception ex) {
@@ -317,7 +355,7 @@
                 if (factory.equals("1")) {
                     result = hikClientService.controlCameraDeicing(cmd);
                 } else if (factory.equals("2")) {
-
+                    //涓嶆敮鎸�
                 }
             }
         } catch (Exception ex) {
@@ -325,46 +363,7 @@
         }
         return result;
     }
-    //鎿嶆帶閿佸畾
-    @Override
-    public boolean controlLock(CameraCmd cmd) {
-        boolean result = false;
-        try {
-            String cameraId = cmd.getCameraId();
-            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.controlLock(cmd);
-                } else if (factory.equals("2")) {
 
-                }
-            }
-        } catch (Exception ex) {
-            log.error("鎿嶆帶閿佸畾寮傚父锛�" + ex.getMessage());
-        }
-        return result;
-    }
-    //璁剧疆瑙i攣
-    @Override
-    public boolean controlUnLock(CameraCmd cmd) {
-        boolean result = false;
-        try {
-            String cameraId = cmd.getCameraId();
-            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
-            if (ardCamera != null) {
-                String factory = ardCamera.getFactory();
-                if (factory.equals("1")) {
-                    result = hikClientService.controlUnLock(cmd);
-                } else if (factory.equals("2")) {
-
-                }
-            }
-        } catch (Exception ex) {
-            log.error("璁剧疆瑙i攣寮傚父锛�" + ex.getMessage());
-        }
-        return result;
-    }
     //鑾峰彇浜戝彴閿佸畾淇℃伅
     @Override
     public int getPTZLockInfo(CameraCmd cmd) {
@@ -391,17 +390,23 @@
         return null;
     }
     //鎶撳浘
+    @SdkOperate
     @Override
     public String picCutCate(CameraCmd cmd) {
-        String url = "";
+       String url = "";
         try {
+            //鑾峰彇鎽勫儚澶碔D
             String cameraId = cmd.getCameraId();
+            //浠巖edis涓幏鍙栨憚鍍忓ご淇℃伅
             ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             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);
                 }
             }
@@ -451,6 +456,7 @@
         return map;
     }
     //璁剧疆ptz
+    @SdkOperate
     @Override
     public boolean setPtz(CameraCmd cmd) {
         boolean result = false;
@@ -471,6 +477,7 @@
         return result;
     }
     //璁剧疆闆舵柟浣嶈
+    @SdkOperate
     @Override
     public boolean setZeroPtz(CameraCmd cmd) {
         boolean result = false;
@@ -491,6 +498,7 @@
         return result;
     }
     //寮曞鎸囧悜鐩爣
+    @SdkOperate
     @Override
     public boolean guideTargetPosition(CameraCmd cmd) {
         boolean result = false;
@@ -510,6 +518,74 @@
         }
         return result;
     }
+
+    /**
+     * @鎻忚堪 鎿嶆帶閿佸畾
+     * @鍙傛暟 [userId, channelNum]
+     * @杩斿洖鍊� boolean
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/1/17 16:36
+     * @淇敼浜哄拰鍏跺畠淇℃伅 0-瑙i攣 1-閿佸畾
+     */
+    @Override
+    @SdkOperate
+    public boolean controlLock(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();//鐢宠閿佺殑鐩告満
+        ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
+        Date now = new Date();
+        now.setTime(now.getTime() + cmd.getExpired() * 1000);
+        ardCameras.setOperatorExpired(now);//璁剧疆褰撳墠杩囨湡鏃堕棿
+        ardCamerasService.updateArdCameras(ardCameras);
+        return true;
+    }
+
+    /**
+     * @鎻忚堪 鎿嶆帶瑙i攣
+     * @鍙傛暟 [userId, channelNum]
+     * @杩斿洖鍊� boolean
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/6/30 15:36
+     * @淇敼浜哄拰鍏跺畠淇℃伅
+     */
+    @Override
+    public boolean controlUnLock(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();//鐢宠瑙i攣鐨勭浉鏈�
+        String operator = cmd.getOperator();//鐢宠鑰�
+        ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
+        if (ardCameras.getOperatorId().equals(operator)) {
+            //濡傛灉瑙i攣鐩告満鐨勫綋鍓嶇敤鎴锋槸鐢宠鑰咃紝鍒欐竻绌鸿鐩告満鐨勮繃鏈熸椂闂�
+            ardCameras.setOperatorExpired(null);
+            int i = ardCamerasService.updateArdCameras(ardCameras);
+            if (i > 0) {
+                log.debug(cameraId + "--瑙i攣鎴愬姛");
+            }
+        }
+        return true;
+    }
+
+
+    //褰曞儚
+    @SdkOperate
+    @Override
+    public String record(CameraCmd cmd) {
+        String url = "";
+        try {
+            String cameraId = cmd.getCameraId();
+            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);
+                }
+            }
+        } catch (Exception ex) {
+            log.error("褰曞儚寮傚父锛�" + ex.getMessage());
+        }
+        return url;
+    }
+
     //寮�濮嬪綍鍍�
     @Override
     public boolean recordStart(CameraCmd cmd) {
@@ -552,13 +628,23 @@
     }
     //鍋滄褰曞儚骞朵笉瀛樺叆minio
     @Override
-    public void recordStopNotToMinio(CameraCmd cmd) {
-
-    }
-
-    @Override
-    public List<ArdChannel> getCameraChannelList(ArdCameras camera) {
-        return null;
+    public boolean recordStopNotToMinio(CameraCmd cmd) {
+        boolean result = false;
+        try {
+            String cameraId = cmd.getCameraId();
+            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);
+                }
+            }
+        } catch (Exception ex) {
+            log.error("鍋滄褰曞儚寮傚父锛�" + ex.getMessage());
+        }
+        return result;
     }
 
     //鑾峰彇鐩告満鏋惰鍙傛暟

--
Gitblit v1.9.3