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 | 454 +++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 287 insertions(+), 167 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 895723b..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 @@ -1,5 +1,6 @@ package com.ruoyi.device.camera.service.impl; +import com.ruoyi.alarm.global.domain.GuidePoint; import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell; import com.ruoyi.alarmpoints.well.domain.ArdWellGuideCamera; import com.ruoyi.alarmpoints.well.service.IArdAlarmpointsWellService; @@ -17,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; /** @@ -38,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; @@ -50,6 +58,8 @@ private IArdAlarmpointsWellService ardAlarmpointsWellService; @Resource private IArdCameraNoGuideZoneService ardCameraNoGuideZoneService; + @Resource + private IArdTerrainMarkService ardTerrainMarkService; /** * 鍚姩绾跨▼鏂规硶锛岀敤浜庢墽琛屽垵濮嬪寲鐧诲綍鐩告満鐨勯�昏緫 @@ -58,37 +68,62 @@ */ @Override public void run(ApplicationArguments args) { - try { - // 浠巃rdCamerasService涓幏鍙朅rdCameras鍒楄〃 + log.info("鍒濆鍖栫櫥褰曠浉鏈哄紑濮�"); + ardCamerasService.resetCameraLoginId(); List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(new ArdCameras()); - for (ArdCameras camera : ardCameras) { - login(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 Boolean login(ArdCameras ardCamera) { - boolean result = false; + public AjaxResult login(ArdCameras ardCamera) { try { - if (ardCamera != null) { - String factory = ardCamera.getFactory(); - CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); - //sdkStrategy.login(ardCamera);//鍚屾鐧诲綍 - cameraSDK.asyncLogin(ardCamera);//寮傛鐧诲綍 - result = true; + if (ardCamera == null) { + return AjaxResult.warn("璁惧涓嶅瓨鍦�"); } + String factory = ardCamera.getFactory(); + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.login(ardCamera);//鍚屾鐧诲綍 } catch (Exception ex) { log.error("鐧诲綍寮傚父锛�" + ex.getMessage()); - return false; + return AjaxResult.error("鐧诲綍寮傚父锛�" + ex.getMessage()); } - return result; + } + + @Override + public AjaxResult asyncLogin(ArdCameras ardCamera) { + try { + if (ardCamera == null) { + return AjaxResult.warn("璁惧涓嶅瓨鍦�"); + } + String factory = ardCamera.getFactory(); + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.asyncLogin(ardCamera);//寮傛鐧诲綍 + } catch (Exception ex) { + log.error("鐧诲綍寮傚父锛�" + ex.getMessage()); + return AjaxResult.error("鐧诲綍寮傚父锛�" + ex.getMessage()); + } } //娉ㄩ攢 @@ -133,86 +168,84 @@ 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); } //璁剧疆鑱氱劍鍊� @Override - public boolean setFocusPos(CameraCmd cmd) { - boolean result = false; + public AjaxResult setFocusPos(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); - result = cameraSDK.setFocusPos(cmd); + 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()); } - return result; } //鑾峰彇鑱氱劍鍊� @Override - public int getFocusPos(CameraCmd cmd) { - int result = 0; + public AjaxResult getFocusPos(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); - result = cameraSDK.getFocusPos(cmd); + 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()); } - return result; } //璁剧疆棰勭疆浣� @Override - public boolean setPreset(CameraCmd cmd) { - boolean result = false; + public AjaxResult setPreset(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); - result = cameraSDK.setPreset(cmd); + 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()); } - return result; } //璋冪敤棰勭疆浣� @Override - public boolean gotoPreset(CameraCmd cmd) { - boolean result = false; + public AjaxResult gotoPreset(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); - result = cameraSDK.gotoPreset(cmd); + 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()); } - return result; } //鑾峰彇鐮佹祦鍘嬬缉鍙傛暟 @@ -222,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()); } @@ -235,133 +269,146 @@ //閫忛浘寮�鍏� @Override - public boolean controlDefogcfg(CameraCmd cmd) { - boolean result = false; + public AjaxResult controlDefogcfg(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); - result = cameraSDK.controlDefogcfg(cmd); + 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()); } - return result; } //绾㈠寮�鍏� @Override - public boolean controlInfrarecfg(CameraCmd cmd) { - boolean result = false; + public AjaxResult controlInfrarecfg(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); - result = cameraSDK.controlInfrarecfg(cmd); + 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()); } - return result; } //鎵嬪姩/鑷姩鑱氱劍 @Override - public boolean controlFocusMode(CameraCmd cmd) { - boolean result = false; + public AjaxResult controlFocusMode(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); - result = cameraSDK.controlFocusMode(cmd); + 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()); } - return result; } //鑾峰彇鑱氱劍妯″紡 @Override - public String getFocusMode(CameraCmd cmd) { - String result = ""; + public AjaxResult getFocusMode(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); - result = cameraSDK.getFocusMode(cmd); + 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()); } - return result; } //浜戝彴鍔犵儹 @Override - public boolean controlPTHeateRpwron(CameraCmd cmd) { - boolean result = false; + 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); - result = cameraSDK.controlPTHeateRpwron(cmd); + 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()); } - return result; } //闀滃ご鍔犵儹 @Override - public boolean controlCameraDeicing(CameraCmd cmd) { - boolean result = false; + 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); - result = cameraSDK.controlCameraDeicing(cmd); + 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()); } - return result; } //鑾峰彇浜戝彴閿佸畾淇℃伅 @Override - public int getPTZLockInfo(CameraCmd cmd) { - int result = 99; + public AjaxResult getPTZLockInfo(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); - result = cameraSDK.getPTZLockInfo(cmd); + 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()); + log.error("鑾峰彇浜戝彴閿佸畾淇℃伅寮傚父:" + ex.getMessage()); + return AjaxResult.error("鑾峰彇浜戝彴閿佸畾淇℃伅寮傚父:" + ex.getMessage()); } - return result; } + //鏈湴鎶撳浘 @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()); + } } //鎶撳浘 @@ -387,43 +434,44 @@ //鑾峰彇ptz @Override - public Map<String, Object> getPtz(CameraCmd cmd) { + public AjaxResult getPtz(CameraCmd cmd) { Map<String, Object> map = new HashMap<>(); 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")) { - map = cameraSDK.getPtz(cmd); - } else { - map = cameraSDK.getPtz1(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 cameraSDK.getPtz(cmd); } } catch (Exception ex) { log.error("鑾峰彇ptz寮傚父锛�" + ex.getMessage()); + return AjaxResult.error("鑾峰彇ptz寮傚父锛�" + ex.getMessage()); } - return map; } //鑾峰彇ptz鑼冨洿 @Override - public Map<String, Object> getPtzScope(CameraCmd cmd) { - Map<String, Object> map = new HashMap<>(); + public AjaxResult getPtzScope(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); - map = cameraSDK.getPtzScope(cmd); + 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()); } - return map; } //璁剧疆ptz @@ -433,58 +481,87 @@ 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(); if (gdtype.equals("1")) { //澶у厜鐢典娇鐢ㄩ珮绮惧害ptz璁剧疆 - return cameraSDK.setPtz(cmd); + return cameraSDK.setPtzHigh(cmd); } else { - return cameraSDK.setPtz1(cmd); + return cameraSDK.setPtz(cmd); } - } catch (Exception ex) { log.error("璁剧疆ptz寮傚父锛�" + ex.getMessage()); - AjaxResult.error("璁剧疆ptz寮傚父:" + ex.getMessage()); + return AjaxResult.error("璁剧疆ptz寮傚父:" + ex.getMessage()); } - return AjaxResult.success(); } //璁剧疆闆舵柟浣嶈 @Override - public boolean setZeroPtz(CameraCmd cmd) { - boolean result = false; + public AjaxResult setZeroPtz(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); - result = cameraSDK.setZeroPtz(cmd); + 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()); } - return result; } //寮曞鎸囧悜鐩爣 @Override - public boolean guideTargetPosition(CameraCmd cmd) { - boolean result = false; + public AjaxResult guideTargetPosition(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); - result = cameraSDK.guideTargetPosition(cmd); + 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()); + log.error("淇淇话鍊煎紓甯革細" + ex.getMessage()); + } - return result; + return pitchAngle; } //寮曞鎸囧悜浜� @@ -498,9 +575,10 @@ //鑾峰彇浜� ArdAlarmpointsWell well = ardAlarmpointsWellService.selectArdAlarmpointsWellById(cmd.getWellId()); if (well == null) { - return AjaxResult.error("浜曚笉瀛樺湪"); + return AjaxResult.warn("浜曚笉瀛樺湪"); } - cmd.setTargetPosition(new double[]{well.getLongitude(), well.getLatitude()}); + GuidePoint guidePoint = new GuidePoint().setLongitude(well.getLongitude()).setLatitude(well.getLatitude()); + cmd.setTargetPosition(new double[]{guidePoint.getLongitude(), guidePoint.getLatitude()}); //鑾峰彇浜曢厤缃殑寮曞鐩告満鍒楄〃 List<ArdWellGuideCamera> ardWellGuideCameraList = well.getArdWellGuideCameraList(); @@ -560,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)) { - return AjaxResult.error("浜曞潗鏍囧紩瀵煎け璐�", "cameraId:" + cameraId); + if (!guideTargetPosition(cmd).get("code").equals(200)) { + return AjaxResult.warn("浜曞潗鏍囧紩瀵煎け璐�", "cameraId:" + cameraId); } return AjaxResult.success("浜曞潗鏍囧紩瀵兼垚鍔�", "cameraId:" + cameraId); @@ -667,14 +745,17 @@ */ @Override @SdkOperate - public boolean controlLock(CameraCmd cmd) { + public AjaxResult controlLock(CameraCmd cmd) { String cameraId = cmd.getCameraId();//鐢宠閿佺殑鐩告満 ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId); + if (ardCameras == null) { + return AjaxResult.warn("璁惧涓嶅瓨鍦�"); + } Date now = new Date(); now.setTime(now.getTime() + cmd.getExpired() * 1000); ardCameras.setOperatorExpired(now);//璁剧疆褰撳墠杩囨湡鏃堕棿 ardCamerasService.updateArdCameras(ardCameras); - return true; + return AjaxResult.success("鎿嶆帶閿佸畾鎴愬姛"); } /** @@ -686,10 +767,13 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - public boolean controlUnLock(CameraCmd cmd) { + public AjaxResult controlUnLock(CameraCmd cmd) { String cameraId = cmd.getCameraId();//鐢宠瑙i攣鐨勭浉鏈� String operator = cmd.getOperator();//鐢宠鑰� ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId); + if (ardCameras == null) { + return AjaxResult.warn("璁惧涓嶅瓨鍦�"); + } if (ardCameras.getOperatorId().equals(operator)) { //濡傛灉瑙i攣鐩告満鐨勫綋鍓嶇敤鎴锋槸鐢宠鑰咃紝鍒欐竻绌鸿鐩告満鐨勮繃鏈熸椂闂� ardCameras.setOperatorExpired(null); @@ -698,7 +782,8 @@ log.debug(cameraId + "--瑙i攣鎴愬姛"); } } - return true; + + return AjaxResult.success("鎿嶆帶瑙i攣鎴愬姛"); } //褰曞儚 @@ -776,20 +861,55 @@ //鑾峰彇鐩告満鏋惰鍙傛暟 @Override - public Map<String, Object> getGisInfo(CameraCmd cmd) { - Map<String, Object> map = new HashMap<>(); + public AjaxResult getGisInfo(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); - map = cameraSDK.getGisInfo(cmd); + 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()); } - return map; } + //鏈湴褰曞儚寮�濮� + @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