From e7e1edb140096d2cab3067a15a6c78041daab748 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期二, 30 一月 2024 17:07:56 +0800
Subject: [PATCH] 修改依赖oshi版本由6.4.0降为5.8.6
---
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java | 432 +++++++++++++++++++++++++++++++++--------------------
1 files changed, 269 insertions(+), 163 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..06866e8 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,27 +1,34 @@
package com.ruoyi.device.camera.service.impl;
+import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell;
+import com.ruoyi.alarmpoints.well.domain.ArdWellGuideCamera;
+import com.ruoyi.alarmpoints.well.service.IArdAlarmpointsWellService;
import com.ruoyi.common.annotation.SdkOperate;
import com.ruoyi.common.constant.CacheConstants;
+import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache;
-import com.ruoyi.common.utils.Threads;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
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.factory.CameraSDK;
+import com.ruoyi.device.camera.factory.CameraSDKFactory;
+import com.ruoyi.device.noguidezone.domain.ArdCameraNoGuideZone;
+import com.ruoyi.device.noguidezone.service.IArdCameraNoGuideZoneService;
+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.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;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
@@ -36,27 +43,34 @@
@Resource
private IArdCamerasService ardCamerasService;
@Resource
- IHikClientService hikClientService;
+ private RedisCache redisCache;
@Resource
- IDhClientService dhClientService;
+ private CameraSDKFactory cameraSDKFactory;
@Resource
- RedisCache redisCache;
+ private IArdAlarmpointsWellService ardAlarmpointsWellService;
+ @Resource
+ private IArdCameraNoGuideZoneService ardCameraNoGuideZoneService;
+ /**
+ * 鍚姩绾跨▼鏂规硶锛岀敤浜庢墽琛屽垵濮嬪寲鐧诲綍鐩告満鐨勯�昏緫
+ *
+ * @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 +79,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;
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ //sdkStrategy.login(ardCamera);//鍚屾鐧诲綍
+ cameraSDK.asyncLogin(ardCamera);//寮傛鐧诲綍
+ result = true;
}
} catch (Exception ex) {
log.error("鐧诲綍寮傚父锛�" + ex.getMessage());
@@ -88,11 +99,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.logout(cameraId);
}
} catch (Exception ex) {
log.error("娉ㄩ攢寮傚父锛�" + ex.getMessage());
@@ -110,11 +118,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ onLine = cameraSDK.isOnLine(cmd);
}
return onLine;
} catch (Exception ex) {
@@ -124,7 +129,6 @@
}
//浜戝彴鎺у埗
- @SdkOperate
@Override
public boolean pTZControl(CameraCmd cmd) {
try {
@@ -133,11 +137,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.pTZControl(cmd);
}
return result;
} catch (Exception ex) {
@@ -155,11 +156,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.setFocusPos(cmd);
}
} catch (Exception ex) {
log.error("璁剧疆鑱氱劍鍊煎紓甯革細" + ex.getMessage());
@@ -177,11 +175,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.getFocusPos(cmd);
}
} catch (Exception ex) {
log.error("鑾峰彇鑱氱劍鍊煎紓甯革細" + ex.getMessage());
@@ -198,11 +193,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.setPreset(cmd);
}
} catch (Exception ex) {
log.error("璁剧疆棰勭疆浣嶅紓甯革細" + ex.getMessage());
@@ -219,11 +211,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.gotoPreset(cmd);
}
} catch (Exception ex) {
log.error("璋冪敤棰勭疆浣嶅紓甯革細" + ex.getMessage());
@@ -240,11 +229,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ map = cameraSDK.getVideoCompressionCfg(cmd);
}
} catch (Exception ex) {
log.error("鑾峰彇鐮佹祦鍘嬬缉鍙傛暟寮傚父锛�" + ex.getMessage());
@@ -261,11 +247,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")) {
- //涓嶆敮鎸�
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.controlDefogcfg(cmd);
}
} catch (Exception ex) {
log.error("鎿嶆帶閫忛浘寮傚父锛�" + ex.getMessage());
@@ -282,11 +265,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.controlInfrarecfg(cmd);
}
} catch (Exception ex) {
log.error("鎿嶆帶绾㈠寮傚父锛�" + ex.getMessage());
@@ -303,11 +283,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.controlFocusMode(cmd);
}
} catch (Exception ex) {
log.error("鎿嶆帶鑱氱劍妯″紡寮傚父锛�" + ex.getMessage());
@@ -324,11 +301,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.getFocusMode(cmd);
}
} catch (Exception ex) {
log.error("鑾峰彇鑱氱劍妯″紡寮傚父锛�" + ex.getMessage());
@@ -345,11 +319,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")) {
- //涓嶆敮鎸�
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.controlPTHeateRpwron(cmd);
}
} catch (Exception ex) {
log.error("鎿嶆帶浜戝彴鍔犵儹寮傚父锛�" + ex.getMessage());
@@ -366,11 +337,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")) {
- //涓嶆敮鎸�
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.controlCameraDeicing(cmd);
}
} catch (Exception ex) {
log.error("鎿嶆帶浜戝彴鍔犵儹寮傚父锛�" + ex.getMessage());
@@ -387,11 +355,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")) {
-
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.getPTZLockInfo(cmd);
}
} catch (Exception ex) {
log.error("鑾峰彇浜戝彴閿佸畾淇℃伅寮傚父锛�" + ex.getMessage());
@@ -405,7 +370,6 @@
}
//鎶撳浘
- @SdkOperate
@Override
public String picCutCate(CameraCmd cmd) {
String url = "";
@@ -417,13 +381,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ url = cameraSDK.picCutCate(cmd);
}
} catch (Exception ex) {
log.error("鎶撳浘寮傚父锛�" + ex.getMessage());
@@ -440,11 +399,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ map = cameraSDK.getPtz(cmd);
}
} catch (Exception ex) {
log.error("鑾峰彇ptz寮傚父锛�" + ex.getMessage());
@@ -461,11 +417,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")) {
-
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ map = cameraSDK.getPtzScope(cmd);
}
} catch (Exception ex) {
log.error("鑾峰彇ptz鑼冨洿寮傚父锛�" + ex.getMessage());
@@ -474,7 +427,6 @@
}
//璁剧疆ptz
- @SdkOperate
@Override
public boolean setPtz(CameraCmd cmd) {
boolean result = false;
@@ -483,11 +435,15 @@
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);
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ String gdtype = ardCamera.getGdtype();
+ if (gdtype.equals("1")) {
+ //澶у厜鐢典娇鐢ㄩ珮绮惧害ptz璁剧疆
+ result = cameraSDK.setPtz(cmd);
+ } else {
+ result = cameraSDK.setPtz1(cmd);
}
+
}
} catch (Exception ex) {
log.error("璁剧疆ptz寮傚父锛�" + ex.getMessage());
@@ -496,7 +452,6 @@
}
//璁剧疆闆舵柟浣嶈
- @SdkOperate
@Override
public boolean setZeroPtz(CameraCmd cmd) {
boolean result = false;
@@ -505,11 +460,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.setZeroPtz(cmd);
}
} catch (Exception ex) {
log.error("璁剧疆闆舵柟浣嶈寮傚父锛�" + ex.getMessage());
@@ -518,7 +470,6 @@
}
//寮曞鎸囧悜鐩爣
- @SdkOperate
@Override
public boolean guideTargetPosition(CameraCmd cmd) {
boolean result = false;
@@ -527,14 +478,186 @@
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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.guideTargetPosition(cmd);
}
} catch (Exception ex) {
log.error("寮曞鎸囧悜鐩爣寮傚父锛�" + ex.getMessage());
+ }
+ return result;
+ }
+
+ //寮曞鎸囧悜浜�
+ @Override
+ public AjaxResult guideTargetWell(CameraCmd cmd) {
+
+ //鎸夋棩澶滃垏鎹㈤厤缃幏鍙栫浉鏈洪�氶亾
+ Integer chanNo = ArdTool.getChannelBydayNightTime(redisCache.getCacheObject("sys_config:dayNightTime"));
+ cmd.setChanNo(chanNo);
+
+ //鑾峰彇浜�
+ ArdAlarmpointsWell well = ardAlarmpointsWellService.selectArdAlarmpointsWellById(cmd.getWellId());
+ if (well == null) {
+ return AjaxResult.error("浜曚笉瀛樺湪");
+ }
+ cmd.setTargetPosition(new double[]{well.getLongitude(), well.getLatitude()});
+
+ //鑾峰彇浜曢厤缃殑寮曞鐩告満鍒楄〃
+ List<ArdWellGuideCamera> ardWellGuideCameraList = well.getArdWellGuideCameraList();
+ if (ardWellGuideCameraList != null && ardWellGuideCameraList.size() > 0) {
+ //鑾峰彇鐩告満鍜屼簳鐨勮窛绂昏繘琛屾帓搴忥紝鍙栧嚭鏈�杩戠殑涓�涓浉鏈�
+ Map<String, Double> distanceMap = new HashMap<>();
+ for (ArdWellGuideCamera ardWellGuideCamera : ardWellGuideCameraList) {
+ ArdCameras cameras = ardCamerasService.selectArdCamerasById(ardWellGuideCamera.getCameraId());
+ if (cameras == null) {
+ continue;
+ }
+ double[] targetPosition = new double[]{well.getLongitude(), well.getLatitude()};
+ double[] camPosition = new double[]{cameras.getLongitude(), cameras.getLatitude()};
+ double distance = GisUtil.getDistance(targetPosition, camPosition);
+ distanceMap.put(ardWellGuideCamera.getCameraId(), distance);//瀛樺叆缂撳瓨map
+ }
+ //浠庣紦瀛橀噷鍙栧嚭璺濈鏈�杩戠浉鏈篒D
+ String cameraId = ArdTool.getKeyByMinValue(distanceMap);
+ cmd.setCameraId(cameraId);
+ //鑾峰彇鏈�杩戠浉鏈虹殑瀵硅薄
+ Optional<ArdWellGuideCamera> first = ardWellGuideCameraList.stream().filter(s -> s.getCameraId().equals(cameraId)).findFirst();
+ if(first.isPresent())
+ {
+ ArdWellGuideCamera ardWellGuideCamera = first.get();
+ Map<String, Double> ptzMap = null;
+ //閫氳繃閫氶亾鑾峰彇棰勭疆浣�
+ switch (chanNo) {
+ case 1:
+ if (ardWellGuideCamera.getP1() != null) {
+ ptzMap = new HashMap<>();
+ ptzMap.put("p", ardWellGuideCamera.getP1());
+ ptzMap.put("t", ardWellGuideCamera.getT1());
+ ptzMap.put("z", ardWellGuideCamera.getZ1());
+ }
+ break;
+ case 2:
+ if (ardWellGuideCamera.getP2() != null) {
+ ptzMap = new HashMap<>();
+ ptzMap.put("p", ardWellGuideCamera.getP2());
+ ptzMap.put("t", ardWellGuideCamera.getT2());
+ ptzMap.put("z", ardWellGuideCamera.getZ2());
+ }
+ break;
+
+ }
+ //寮曞
+ if (ptzMap != null) {
+ //浣跨敤ptz寮曞
+ cmd.setPtzMap(ptzMap);
+ boolean res = setPtz(cmd);
+ if (!res) {
+ return AjaxResult.error("ptz寮曞澶辫触", "cameraId:" + cameraId);
+ }
+ return AjaxResult.success("ptz寮曞鎴愬姛", "cameraId:" + cameraId);
+ }
+ }
+
+ }
+ log.debug("鏈壘鍒皃tz寮曞鐩告満,鏌ユ壘鏈�杩戠浉鏈�");
+
+ //浠庨檮杩戠浉鏈烘壘鏈�杩戠殑涓�涓浉鏈�
+ String cameraId = getCameraByNear(new double[]{well.getLongitude(), well.getLatitude()});
+ cmd.setCameraId(cameraId);
+ if ("".equals(cameraId)) {
+ return AjaxResult.error("鏈壘鍒板紩瀵肩浉鏈�");
+ }
+ //鍒ゆ柇绂佸紩鍖�
+ if (isInPolygon(cameraId, new Double[]{well.getLongitude(), well.getLatitude()})) {
+ return AjaxResult.error("浜曚綅缃睘浜庣浉鏈虹姝㈠紩瀵煎尯鍩�");
+ }
+ //鎸変簳鍧愭爣寮�濮嬪紩瀵�
+ if (!guideTargetPosition(cmd)) {
+ return AjaxResult.error("浜曞潗鏍囧紩瀵煎け璐�", "cameraId:" + cameraId);
+ }
+ return AjaxResult.success("浜曞潗鏍囧紩瀵兼垚鍔�", "cameraId:" + cameraId);
+
+ }
+
+ /**
+ * 鑾峰彇鏈�杩戣窛绂荤殑鍏夌數
+ * 1-鐩告満鍦ㄧ嚎
+ * 2-寮�鍚姤璀﹀紩瀵煎姛鑳�
+ * 3-閰嶇疆浜嗘渶澶у彲瑙嗚窛绂�
+ */
+ private String getCameraByNear(double[] targetPosition) {
+ String minDistanceCameraId = "";
+ try {
+ //鑾峰彇鎵�鏈夊ぇ鍏夌數
+ List<Object> Objects = redisCache.getListKey(CacheConstants.CAMERA_LIST_KEY);
+ //缁熻鎵�鏈夊ぇ鍏夌數鍙鑼冨洿鍐呬笌鎶ヨ鐐圭殑璺濈
+ Map<String, Double> distanceMap = new HashMap<>();
+ for (Object obj : Objects) {
+ ArdCameras camera = (ArdCameras) obj;
+
+ if (!GlobalVariable.loginMap.containsKey(camera.getId())) {
+ log.debug("璇ュ厜鐢垫湭鐧诲綍");
+ continue;
+ }
+ if (camera.getCamMaxVisibleDistance() == null) {
+ log.debug("璇ュ厜鐢垫湭閰嶇疆鏈�澶у彲瑙嗚窛绂�");
+ continue;
+ }
+ if (camera.getCamAlarmGuideEnable().equals(0)) {
+ log.debug("璇ュ厜鐢垫湭寮�鍚姤璀﹀紩瀵�");
+ continue;
+ }
+
+ double[] camPosition = new double[]{camera.getLongitude(), camera.getLatitude()};
+ double distance = GisUtil.getDistance(targetPosition, camPosition);
+ if (distance != 0.0 && distance <= camera.getCamMaxVisibleDistance()) {
+ distanceMap.put(camera.getId(), distance);
+ if (StringUtils.isNull(camera.getCamAlarmGuideEnable())) {
+ camera.setCamAlarmGuideEnable(0);
+ }
+ }
+ }
+ if (distanceMap.size() > 0) {
+ log.debug("灏濊瘯鏌ユ壘鏈�杩戝厜鐢�");
+ //鑾峰彇璺濈瀛楀吀涓渶杩戠殑涓�涓浉鏈篒D
+ minDistanceCameraId = ArdTool.getKeyByMinValue(distanceMap);
+ log.debug("鏌ユ壘鍒版渶杩戝厜鐢�:" + minDistanceCameraId);
+ }
+ } catch (Exception ex) {
+ log.error("鑾峰彇闄勮繎寮�鍚姤璀﹀紩瀵煎姛鑳藉厜鐢靛紓甯�:" + ex.getMessage());
+ }
+ return minDistanceCameraId;
+ }
+
+ //鍒ゆ柇鐩告満鍜屽紩瀵间綅缃槸鍚﹀湪绂佹寮曞鍖哄煙
+ public boolean isInPolygon(String cameraId, Double[] targetPosition) {
+ boolean result = false;
+ //鎷︽埅鎵嬪姩寮曞
+ ArdCameraNoGuideZone ardCameraNoGuideZone = new ArdCameraNoGuideZone();
+ ardCameraNoGuideZone.setCameraId(cameraId);
+ ardCameraNoGuideZone.setEnabled("1");
+ //鑾峰彇褰撳墠鐩告満鐨勭寮曞彲瑙嗗煙鍒楄〃
+ List<ArdCameraNoGuideZone> ardCameraNoGuideZones = ardCameraNoGuideZoneService.selectArdCameraNoGuideZoneList(ardCameraNoGuideZone);
+ if (ardCameraNoGuideZones.size() > 0) {
+ //鑾峰彇鍒板綋鍓嶇浉鏈虹殑鍧愭爣闆嗗悎
+ for (ArdCameraNoGuideZone zone : ardCameraNoGuideZones) {
+ String[] parts = zone.getPoi().split(",");
+ List<Point> pointList = new ArrayList<>();
+ for (int i = 0; i < parts.length; i += 3) {
+ Point point = new Point();
+ point.setLongitude(Double.valueOf(parts[i]));
+ point.setLatitude(Double.valueOf(parts[i + 1]));
+ pointList.add(point);
+ }
+ double lon = targetPosition[0];
+ double lat = targetPosition[1];
+ Point targetPoint = new Point(lon, lat);
+ //鍒ゆ柇寮曞鐩爣鏄惁鍦ㄥ潗鏍囬泦鍚堢粍鎴愮殑澶氳竟褰㈠唴
+ boolean inPolygon = GisUtil.isInPolygon(targetPoint, pointList);
+ if (inPolygon) {
+ result = inPolygon;
+ }
+ }
}
return result;
}
@@ -583,7 +706,6 @@
return true;
}
-
//褰曞儚
@SdkOperate
@Override
@@ -594,11 +716,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ url = cameraSDK.record(cmd);
}
} catch (Exception ex) {
log.error("褰曞儚寮傚父锛�" + ex.getMessage());
@@ -615,11 +734,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.recordStart(cmd);
}
} catch (Exception ex) {
log.error("寮�濮嬪綍鍍忓紓甯革細" + ex.getMessage());
@@ -636,11 +752,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ url = cameraSDK.recordStopToMinio(cmd);
}
} catch (Exception ex) {
log.error("鍋滄褰曞儚寮傚父锛�" + ex.getMessage());
@@ -657,11 +770,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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ result = cameraSDK.recordStopNotToMinio(cmd);
}
} catch (Exception ex) {
log.error("鍋滄褰曞儚寮傚父锛�" + ex.getMessage());
@@ -678,17 +788,13 @@
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);
- }
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ map = cameraSDK.getGisInfo(cmd);
}
} catch (Exception ex) {
log.error("鑾峰彇鐩告満鏋惰鍙傛暟寮傚父锛�" + ex.getMessage());
}
return map;
}
-
}
--
Gitblit v1.9.3