From 6a26b1d539576a556d0f8682af7ae4317de78c7a Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期二, 02 四月 2024 13:35:35 +0800 Subject: [PATCH] 修复相机密码脱敏导致的bug --- ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java | 640 +++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 393 insertions(+), 247 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..de2805a 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,31 +1,35 @@ 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; 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.file.FileUtils; +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.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.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.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; +import java.util.*; /** @@ -36,42 +40,67 @@ **/ @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; + private CameraSDKFactory cameraSDKFactory; @Resource - RedisCache redisCache; + private IArdAlarmpointsWellService ardAlarmpointsWellService; + @Resource + private IArdCameraNoGuideZoneService ardCameraNoGuideZoneService; - //鍒濆鍖朣DK + /** + * 鍚姩绾跨▼鏂规硶锛岀敤浜庢墽琛屽垵濮嬪寲鐧诲綍鐩告満鐨勯�昏緫 + * + * @param args 鍛戒护琛屽弬鏁� + */ @Override - public void loginAll() { - hikClientService.loginAll();//鐧诲綍鍏ㄩ儴娴峰悍鐩告満 - dhClientService.loginAll();//鐧诲綍鍏ㄩ儴澶у崕鐩告満 - } - - //鐧诲綍 - @Override - public Boolean login(ArdCameras ardCamera) { - boolean result = false; + public void run(ApplicationArguments args) { 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); - } + // 浠巃rdCamerasService涓幏鍙朅rdCameras鍒楄〃 + List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(new ArdCameras()); + for (ArdCameras camera : ardCameras) { + asyncLogin(camera); } } catch (Exception ex) { - log.error("鐧诲綍寮傚父锛�" + ex.getMessage()); - return false; + // 鍒濆鍖栫櫥褰曠浉鏈哄紓甯革紝璁板綍閿欒鏃ュ織 + log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage()); } - return result; + } + + + //鍚屾鐧诲綍 + @Override + public AjaxResult login(ArdCameras ardCamera) { + try { + if (ardCamera == null) { + return AjaxResult.error("鐧诲綍鐩告満澶辫触锛岀浉鏈轰笉瀛樺湪"); + } + String factory = ardCamera.getFactory(); + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.login(ardCamera);//鍚屾鐧诲綍 + } catch (Exception ex) { + log.error("鐧诲綍寮傚父锛�" + ex.getMessage()); + return AjaxResult.error("鐧诲綍寮傚父锛�" + ex.getMessage()); + } + } + + @Override + public AjaxResult asyncLogin(ArdCameras ardCamera) { + try { + if (ardCamera == null) { + return AjaxResult.error("鐧诲綍鐩告満澶辫触锛岀浉鏈轰笉瀛樺湪"); + } + 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()); + } } //娉ㄩ攢 @@ -82,11 +111,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()); @@ -104,11 +130,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) { @@ -118,111 +141,93 @@ } //浜戝彴鎺у埗 - @SdkOperate @Override - public boolean pTZControl(CameraCmd cmd) { - try { - boolean result = false; - 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.pTZControlWithSpeed(cmd); - } else if (factory.equals("2")) { - result = dhClientService.pTZControl(cmd); - } - } - return result; - } catch (Exception ex) { - log.error("ptz鎺у埗寮傚父锛�" + ex.getMessage()); - return false; + 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("鎽勫儚澶翠笉瀛樺湪"); } } //璁剧疆鑱氱劍鍊� @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(); - if (factory.equals("1")) { - result = hikClientService.setFocusPos(cmd); - } else if (factory.equals("2")) { - result = dhClientService.setFocusPos(cmd); - } + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.setFocusPos(cmd); + } else { + return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪"); } } 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(); - if (factory.equals("1")) { - result = hikClientService.getFocusPos(cmd); - } else if (factory.equals("2")) { - result = dhClientService.getFocusPos(cmd); - } + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.getFocusPos(cmd); + } else { + return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪"); } } 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(); - if (factory.equals("1")) { - result = hikClientService.setPreset(cmd); - } else if (factory.equals("2")) { - result = dhClientService.setPreset(cmd); - } + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.setPreset(cmd); + } else { + return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪"); } } 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(); - if (factory.equals("1")) { - result = hikClientService.gotoPreset(cmd); - } else if (factory.equals("2")) { - result = dhClientService.gotoPreset(cmd); - } + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.gotoPreset(cmd); + } else { + return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪"); } } catch (Exception ex) { log.error("璋冪敤棰勭疆浣嶅紓甯革細" + ex.getMessage()); + return AjaxResult.error("璋冪敤棰勭疆浣嶅紓甯�" + ex.getMessage()); } - return result; } //鑾峰彇鐮佹祦鍘嬬缉鍙傛暟 @@ -234,11 +239,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()); @@ -248,149 +250,138 @@ //閫忛浘寮�鍏� @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(); - if (factory.equals("1")) { - result = hikClientService.controlDefogcfg(cmd); - } else if (factory.equals("2")) { - //涓嶆敮鎸� - } + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.controlDefogcfg(cmd); + } else { + return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪"); } } 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(); - if (factory.equals("1")) { - result = hikClientService.controlInfrarecfg(cmd); - } else if (factory.equals("2")) { - result = dhClientService.controlInfrarecfg(cmd); - } + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.controlInfrarecfg(cmd); + } else { + return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪"); } } 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(); - if (factory.equals("1")) { - result = hikClientService.controlFocusMode(cmd); - } else if (factory.equals("2")) { - result = dhClientService.controlFocusMode(cmd); - } + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.controlFocusMode(cmd); + } else { + return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪"); } } 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(); - if (factory.equals("1")) { - result = hikClientService.getFocusMode(cmd); - } else if (factory.equals("2")) { - result = dhClientService.getFocusMode(cmd); - } + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.getFocusMode(cmd); + } else { + return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪"); } } 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(); - if (factory.equals("1")) { - result = hikClientService.controlPTHeateRpwron(cmd); - } else if (factory.equals("2")) { - //涓嶆敮鎸� - } + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.controlPTHeateRpwron(cmd); + } else { + return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪"); } } 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(); - if (factory.equals("1")) { - result = hikClientService.controlCameraDeicing(cmd); - } else if (factory.equals("2")) { - //涓嶆敮鎸� - } + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.controlCameraDeicing(cmd); + } else { + return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪"); } } 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(); - if (factory.equals("1")) { - result = hikClientService.getPTZLockInfo(cmd); - } else if (factory.equals("2")) { - - } + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.getPTZLockInfo(cmd); + } else { + return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪"); } } catch (Exception ex) { - log.error("鑾峰彇浜戝彴閿佸畾淇℃伅寮傚父锛�" + ex.getMessage()); + log.error("鑾峰彇浜戝彴閿佸畾淇℃伅寮傚父:" + ex.getMessage()); + return AjaxResult.error("鑾峰彇浜戝彴閿佸畾淇℃伅寮傚父:" + ex.getMessage()); } - return result; } @Override @@ -399,7 +390,6 @@ } //鎶撳浘 - @SdkOperate @Override public String picCutCate(CameraCmd cmd) { String url = ""; @@ -411,13 +401,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()); @@ -427,108 +412,277 @@ //鑾峰彇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(); - if (factory.equals("1")) { - map = hikClientService.getPtz(cmd); - } else if (factory.equals("2")) { - map = dhClientService.getPtz(cmd); + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + String gdtype = ardCamera.getGdtype(); + if (gdtype.equals("1")) { + return cameraSDK.getPtzHigh(cmd); + } else { + return cameraSDK.getPtz(cmd); } + } else { + return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪"); } } 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(); - if (factory.equals("1")) { - map = hikClientService.getPtzScope(cmd); - } else if (factory.equals("2")) { - - } + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.getPtzScope(cmd); + } else { + return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪"); } } catch (Exception ex) { log.error("鑾峰彇ptz鑼冨洿寮傚父锛�" + ex.getMessage()); + return AjaxResult.error("鑾峰彇ptz鑼冨洿寮傚父锛�" + ex.getMessage()); } - return map; } //璁剧疆ptz - @SdkOperate @Override - public boolean setPtz(CameraCmd cmd) { - boolean result = false; + public AjaxResult setPtz(CameraCmd cmd) { 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.setPtz(cmd); - } else if (factory.equals("2")) { - result = dhClientService.setPtz(cmd); - } + if (ardCamera == null) { + return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪"); } + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(ardCamera.getFactory()); + String gdtype = ardCamera.getGdtype(); + if (gdtype.equals("1")) { + //澶у厜鐢典娇鐢ㄩ珮绮惧害ptz璁剧疆 + return cameraSDK.setPtzHigh(cmd); + } else { + return cameraSDK.setPtz(cmd); + } + } catch (Exception ex) { log.error("璁剧疆ptz寮傚父锛�" + ex.getMessage()); + return AjaxResult.error("璁剧疆ptz寮傚父:" + ex.getMessage()); } - return result; } //璁剧疆闆舵柟浣嶈 - @SdkOperate @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(); - if (factory.equals("1")) { - result = hikClientService.setZeroPtz(cmd); - } else if (factory.equals("2")) { - result = dhClientService.setZeroPtz(cmd); - } + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.setZeroPtz(cmd); + } else { + return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪"); } } catch (Exception ex) { log.error("璁剧疆闆舵柟浣嶈寮傚父锛�" + ex.getMessage()); + return AjaxResult.error("璁剧疆闆舵柟浣嶈寮傚父锛�" + ex.getMessage()); } - return result; } //寮曞鎸囧悜鐩爣 - @SdkOperate @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(); - if (factory.equals("1")) { - result = hikClientService.guideTargetPosition(cmd); - } else if (factory.equals("2")) { - result = dhClientService.guideTargetPosition(cmd); - } + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.guideTargetPosition(cmd); + } else { + return AjaxResult.error("鎽勫儚澶翠笉瀛樺湪"); } } catch (Exception ex) { - log.error("寮曞鎸囧悜鐩爣寮傚父锛�" + ex.getMessage()); + log.error("寮曞鎸囧悜鐩爣寮傚父:" + ex.getMessage()); + return AjaxResult.error("寮曞鎸囧悜鐩爣寮傚父:" + ex.getMessage()); + } + } + + //寮曞鎸囧悜浜� + @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("浜曚笉瀛樺湪"); + } + GuidePoint guidePoint = new GuidePoint().setLongitude(well.getLongitude()).setLatitude(well.getLatitude()); + cmd.setTargetPosition(new double[]{guidePoint.getLongitude(), guidePoint.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); + return setPtz(cmd); + } + } + + } + 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).get("code").equals(200)) { + 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; } @@ -543,14 +697,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.error("璁惧鏈櫥褰�"); + } Date now = new Date(); now.setTime(now.getTime() + cmd.getExpired() * 1000); ardCameras.setOperatorExpired(now);//璁剧疆褰撳墠杩囨湡鏃堕棿 ardCamerasService.updateArdCameras(ardCameras); - return true; + return AjaxResult.success("鎿嶆帶閿佸畾鎴愬姛"); } /** @@ -562,10 +719,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.error("璁惧鏈櫥褰�"); + } if (ardCameras.getOperatorId().equals(operator)) { //濡傛灉瑙i攣鐩告満鐨勫綋鍓嶇敤鎴锋槸鐢宠鑰咃紝鍒欐竻绌鸿鐩告満鐨勮繃鏈熸椂闂� ardCameras.setOperatorExpired(null); @@ -574,9 +734,9 @@ log.debug(cameraId + "--瑙i攣鎴愬姛"); } } - return true; - } + return AjaxResult.success("鎿嶆帶瑙i攣鎴愬姛"); + } //褰曞儚 @SdkOperate @@ -588,11 +748,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()); @@ -609,11 +766,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()); @@ -630,11 +784,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()); @@ -651,11 +802,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()); @@ -665,22 +813,20 @@ //鑾峰彇鐩告満鏋惰鍙傛暟 @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(); - if (factory.equals("1")) { - map = hikClientService.getGisInfo(cmd); - } else if (factory.equals("2")) { - map = dhClientService.getGisInfo(cmd); - } + CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); + return cameraSDK.getGisInfo(cmd); + } else { + return AjaxResult.error("鐩告満涓嶅瓨鍦�"); } } catch (Exception ex) { log.error("鑾峰彇鐩告満鏋惰鍙傛暟寮傚父锛�" + ex.getMessage()); + return AjaxResult.error("鑾峰彇鐩告満鏋惰鍙傛暟寮傚父锛�" + ex.getMessage()); } - return map; } } -- Gitblit v1.9.3