| | |
| | | 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;
|
| | |
|
| | |
|
| | | /**
|
| | |
| | | * @Date: 2023年10月16日15:21:01
|
| | | **/
|
| | | @Service
|
| | | @Slf4j(topic = "SDK")
|
| | | @Slf4j(topic = "sdk")
|
| | | public class CameraSdkServiceImpl implements ICameraSdkService, ApplicationRunner {
|
| | | @Resource
|
| | | private IArdCamerasService ardCamerasService;
|
| | |
| | | private IArdAlarmpointsWellService ardAlarmpointsWellService;
|
| | | @Resource
|
| | | private IArdCameraNoGuideZoneService ardCameraNoGuideZoneService;
|
| | | @Resource
|
| | | private IArdTerrainMarkService ardTerrainMarkService;
|
| | |
|
| | | /**
|
| | | * 启动线程方法,用于执行初始化登录相机的逻辑
|
| | |
| | | */
|
| | | @Override
|
| | | public void run(ApplicationArguments args) {
|
| | |
|
| | | try {
|
| | | // 从ardCamerasService中获取ArdCameras列表
|
| | | 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) // 将Object转换为ArdCameras
|
| | | .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());
|
| | | }
|
| | | }
|
| | |
|
| | | //注销
|
| | |
| | | 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);
|
| | | }
|
| | |
|
| | | //设置聚焦值
|
| | |
| | | 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);
|
| | | return cameraSDK.setFocusPos(cmd);
|
| | | } else {
|
| | | return AjaxResult.error("摄像头不存在");
|
| | | 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());
|
| | |
| | | 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);
|
| | | return cameraSDK.getFocusPos(cmd);
|
| | | } else {
|
| | | return AjaxResult.error("摄像头不存在");
|
| | | 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());
|
| | |
| | | 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);
|
| | | return cameraSDK.setPreset(cmd);
|
| | | } else {
|
| | | return AjaxResult.error("摄像头不存在");
|
| | | 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());
|
| | |
| | | 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);
|
| | | return cameraSDK.gotoPreset(cmd);
|
| | | } else {
|
| | | return AjaxResult.error("摄像头不存在");
|
| | | 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());
|
| | |
| | | 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());
|
| | | }
|
| | |
| | | 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);
|
| | | return cameraSDK.controlDefogcfg(cmd);
|
| | | } else {
|
| | | return AjaxResult.error("摄像头不存在");
|
| | | 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());
|
| | |
| | | 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);
|
| | | return cameraSDK.controlInfrarecfg(cmd);
|
| | | } else {
|
| | | return AjaxResult.error("摄像头不存在");
|
| | | 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());
|
| | |
| | | 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);
|
| | | return cameraSDK.controlFocusMode(cmd);
|
| | | } else {
|
| | | return AjaxResult.error("摄像头不存在");
|
| | | 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());
|
| | |
| | | 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);
|
| | | return cameraSDK.getFocusMode(cmd);
|
| | | } else {
|
| | | return AjaxResult.error("摄像头不存在");
|
| | | 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());
|
| | |
| | | //云台加热
|
| | | @Override
|
| | | 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);
|
| | | return cameraSDK.controlPTHeateRpwron(cmd);
|
| | | } else {
|
| | | return AjaxResult.error("摄像头不存在");
|
| | | 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());
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | //镜头加热
|
| | | @Override
|
| | | 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);
|
| | | return cameraSDK.controlCameraDeicing(cmd);
|
| | | } else {
|
| | | return AjaxResult.error("摄像头不存在");
|
| | | 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());
|
| | |
| | | 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);
|
| | | return cameraSDK.getPTZLockInfo(cmd);
|
| | | } else {
|
| | | return AjaxResult.error("摄像头不存在");
|
| | | 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());
|
| | | return AjaxResult.error("获取云台锁定信息异常:" + ex.getMessage());
|
| | | }
|
| | | }
|
| | |
|
| | | //本地抓图
|
| | | @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());
|
| | | }
|
| | | }
|
| | |
|
| | | //抓图
|
| | |
| | | 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")) {
|
| | | return cameraSDK.getPtzHigh(cmd);
|
| | | } else {
|
| | | return cameraSDK.getPtz(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 AjaxResult.error("摄像头不存在");
|
| | | return cameraSDK.getPtz(cmd);
|
| | | }
|
| | | } catch (Exception ex) {
|
| | | log.error("获取ptz异常:" + ex.getMessage());
|
| | |
| | | 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);
|
| | | return cameraSDK.getPtzScope(cmd);
|
| | | } else {
|
| | | return AjaxResult.error("摄像头不存在");
|
| | | 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());
|
| | |
| | | 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();
|
| | |
| | | } else {
|
| | | return cameraSDK.setPtz(cmd);
|
| | | }
|
| | |
|
| | | } catch (Exception ex) {
|
| | | log.error("设置ptz异常:" + ex.getMessage());
|
| | | return AjaxResult.error("设置ptz异常:" + ex.getMessage());
|
| | | return AjaxResult.error("设置ptz异常:" + ex.getMessage());
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | 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);
|
| | | return cameraSDK.setZeroPtz(cmd);
|
| | | } else {
|
| | | return AjaxResult.error("摄像头不存在");
|
| | | 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());
|
| | |
| | | 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);
|
| | | return cameraSDK.guideTargetPosition(cmd);
|
| | | } else {
|
| | | return AjaxResult.error("摄像头不存在");
|
| | | 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米范围内的地形参数集合,计算平均值加上T值)
|
| | | * @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());
|
| | |
|
| | | }
|
| | | return pitchAngle;
|
| | | }
|
| | |
|
| | | //引导指向井
|
| | |
| | | //获取井
|
| | | ArdAlarmpointsWell well = ardAlarmpointsWellService.selectArdAlarmpointsWellById(cmd.getWellId());
|
| | | if (well == null) {
|
| | | return AjaxResult.error("井不存在");
|
| | | return AjaxResult.warn("井不存在");
|
| | | }
|
| | | GuidePoint guidePoint = new GuidePoint().setLongitude(well.getLongitude()).setLatitude(well.getLatitude());
|
| | | cmd.setTargetPosition(new double[]{guidePoint.getLongitude(), guidePoint.getLatitude()});
|
| | |
| | | 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).get("code").equals(200)) {
|
| | | return AjaxResult.error("井坐标引导失败", "cameraId:" + cameraId);
|
| | | return AjaxResult.warn("井坐标引导失败", "cameraId:" + cameraId);
|
| | | }
|
| | | return AjaxResult.success("井坐标引导成功", "cameraId:" + cameraId);
|
| | |
|
| | |
| | | public AjaxResult controlLock(CameraCmd cmd) {
|
| | | String cameraId = cmd.getCameraId();//申请锁的相机
|
| | | ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
|
| | | if(ardCameras==null)
|
| | | {
|
| | | return AjaxResult.error("设备未登录");
|
| | | if (ardCameras == null) {
|
| | | return AjaxResult.warn("设备不存在");
|
| | | }
|
| | | Date now = new Date();
|
| | | now.setTime(now.getTime() + cmd.getExpired() * 1000);
|
| | |
| | | String cameraId = cmd.getCameraId();//申请解锁的相机
|
| | | String operator = cmd.getOperator();//申请者
|
| | | ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
|
| | | if(ardCameras==null)
|
| | | {
|
| | | return AjaxResult.error("设备未登录");
|
| | | if (ardCameras == null) {
|
| | | return AjaxResult.warn("设备不存在");
|
| | | }
|
| | | if (ardCameras.getOperatorId().equals(operator)) {
|
| | | //如果解锁相机的当前用户是申请者,则清空该相机的过期时间
|
| | |
| | | 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);
|
| | | return cameraSDK.getGisInfo(cmd);
|
| | | } else {
|
| | | return AjaxResult.error("相机不存在");
|
| | | 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());
|
| | | }
|
| | | }
|
| | |
|
| | | //本地录像开始
|
| | | @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());
|
| | | }
|
| | | }
|
| | | }
|