ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/QueueHandler.java
@@ -133,7 +133,8 @@ guideRes = true; } } else { guideRes = cameraSdkService.guideTargetPosition(cmd); AjaxResult result = cameraSdkService.guideTargetPosition(cmd); guideRes = result.get("code").equals(200); } if (guideRes) { log.debug("引导成功"); ard-work/src/main/java/com/ruoyi/alarm/radar/service/impl/ArdRadarServiceImpl.java
@@ -110,7 +110,7 @@ cmd.setCameraId(camera.getId()); cmd.setChanNo(1); cmd.setTargetPosition(new double[]{guidePoint.getLongitude(), guidePoint.getLatitude()}); boolean res = iCameraSdkService.guideTargetPosition(cmd); boolean res = iCameraSdkService.guideTargetPosition(cmd).get("code").equals(200); if (res) { log.debug("雷达追踪引导成功"); } else { ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
@@ -104,7 +104,7 @@ public @ResponseBody AjaxResult gotoPreset(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(cameraSdkService.gotoPreset(cmd)); return cameraSdkService.gotoPreset(cmd); } @ApiOperation("设置预置点") @@ -114,7 +114,7 @@ public @ResponseBody AjaxResult setPreset(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(cameraSdkService.setPreset(cmd)); return cameraSdkService.setPreset(cmd); } @ApiOperation("获取聚焦值") @@ -124,8 +124,7 @@ public @ResponseBody AjaxResult getFocusPos(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); int focus = cameraSdkService.getFocusPos(cmd); return AjaxResult.success("获取聚焦值", focus); return cameraSdkService.getFocusPos(cmd); } @ApiOperation("设置聚焦值") @@ -135,7 +134,7 @@ public @ResponseBody AjaxResult setFocusPos(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(cameraSdkService.setFocusPos(cmd)); return cameraSdkService.setFocusPos(cmd); } @ApiOperation("获取PTZ") @@ -145,8 +144,7 @@ public @ResponseBody AjaxResult getPTZ(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); Map<String, Object> ptzMap = cameraSdkService.getPtz(cmd); return AjaxResult.success("获取ptz", ptzMap); return cameraSdkService.getPtz(cmd); } @ApiOperation("获取PTZ范围") @@ -156,8 +154,7 @@ public @ResponseBody AjaxResult getPTZScope(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); Map<String, Object> ptzMap = cameraSdkService.getPtzScope(cmd); return AjaxResult.success("获取ptz范围", ptzMap); return cameraSdkService.getPtzScope(cmd); } @ApiOperation("设置PTZ") @@ -199,13 +196,12 @@ Point targetPoint = new Point(lon, lat); //判断引导目标是否在坐标集合组成的多边形内 boolean inPolygon = GisUtil.isInPolygon(targetPoint, pointList); if(inPolygon) { if (inPolygon) { return AjaxResult.error("引导坐标位于禁引可视域内"); } } } return toAjax(cameraSdkService.guideTargetPosition(cmd)); return cameraSdkService.guideTargetPosition(cmd); } @ApiOperation("指向目标井") @@ -225,7 +221,7 @@ public @ResponseBody AjaxResult setZeroPTZ(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(cameraSdkService.setZeroPtz(cmd)); return cameraSdkService.setZeroPtz(cmd); } @ApiOperation("设置锁定") @@ -235,7 +231,7 @@ public @ResponseBody AjaxResult setPTZLock(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return AjaxResult.success(cameraSdkService.controlLock(cmd)); return cameraSdkService.controlLock(cmd); } @ApiOperation("设置解锁") @@ -245,7 +241,7 @@ public @ResponseBody AjaxResult setPTZUnLock(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return AjaxResult.success(cameraSdkService.controlUnLock(cmd)); return cameraSdkService.controlUnLock(cmd); } @ApiOperation("获取云台锁定信息") @@ -255,7 +251,8 @@ public @ResponseBody AjaxResult getPTZLockInfo(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); int byWorkMode = cameraSdkService.getPTZLockInfo(cmd); AjaxResult ajaxResult = cameraSdkService.getPTZLockInfo(cmd); Integer byWorkMode = (Integer) ajaxResult.get("msg"); if (byWorkMode == 0) { return AjaxResult.success("云台锁定状态:解锁"); } else if (byWorkMode == 1) { @@ -272,7 +269,7 @@ public @ResponseBody AjaxResult defogcfg(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(cameraSdkService.controlDefogcfg(cmd)); return cameraSdkService.controlDefogcfg(cmd); } @ApiOperation("红外开关") @@ -282,7 +279,7 @@ public @ResponseBody AjaxResult infrarecfg(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(cameraSdkService.controlInfrarecfg(cmd)); return cameraSdkService.controlInfrarecfg(cmd); } @ApiOperation(value = "手动/自动聚焦", notes = "true手动flase自动") @@ -292,7 +289,7 @@ public @ResponseBody AjaxResult enableFocusMode(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(cameraSdkService.controlFocusMode(cmd)); return cameraSdkService.controlFocusMode(cmd); } @ApiOperation(value = "获取聚焦模式", notes = "1手动2自动") @@ -301,8 +298,7 @@ public @ResponseBody AjaxResult getFocusMode(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); String focusMode = cameraSdkService.getFocusMode(cmd); return AjaxResult.success(focusMode); return cameraSdkService.getFocusMode(cmd); } @ApiOperation("云台加热") @@ -312,7 +308,7 @@ public @ResponseBody AjaxResult heateRpwron(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(cameraSdkService.controlPTHeateRpwron(cmd)); return cameraSdkService.controlPTHeateRpwron(cmd); } @@ -323,7 +319,7 @@ public @ResponseBody AjaxResult cameraDeicing(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(cameraSdkService.controlCameraDeicing(cmd)); return cameraSdkService.controlCameraDeicing(cmd); } @ApiOperation("相机抓图") @@ -344,7 +340,7 @@ public @ResponseBody AjaxResult getGisInfo(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return AjaxResult.success(cameraSdkService.getGisInfo(cmd)); return cameraSdkService.getGisInfo(cmd); } @ApiOperation("录像") ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java
@@ -30,69 +30,69 @@ AjaxResult pTZControl(CameraCmd cmd); //设置聚焦值 boolean setFocusPos(CameraCmd cmd); AjaxResult setFocusPos(CameraCmd cmd); //获取聚焦值 int getFocusPos(CameraCmd cmd); AjaxResult getFocusPos(CameraCmd cmd); //设置预置位 boolean setPreset(CameraCmd cmd); AjaxResult setPreset(CameraCmd cmd); //调用预置位 boolean gotoPreset(CameraCmd cmd); AjaxResult gotoPreset(CameraCmd cmd); //获取码流压缩参数 Map<String, Object> getVideoCompressionCfg(CameraCmd cmd); //透雾 boolean controlDefogcfg(CameraCmd cmd); AjaxResult controlDefogcfg(CameraCmd cmd); //红外 boolean controlInfrarecfg(CameraCmd cmd); AjaxResult controlInfrarecfg(CameraCmd cmd); //聚焦模式 boolean controlFocusMode(CameraCmd cmd); AjaxResult controlFocusMode(CameraCmd cmd); //获取聚焦模式 String getFocusMode(CameraCmd cmd); AjaxResult getFocusMode(CameraCmd cmd); //云台加热 boolean controlPTHeateRpwron(CameraCmd cmd); AjaxResult controlPTHeateRpwron(CameraCmd cmd); //镜头除冰 boolean controlCameraDeicing(CameraCmd cmd); AjaxResult controlCameraDeicing(CameraCmd cmd); //获取云台锁定信息 int getPTZLockInfo(CameraCmd cmd); AjaxResult getPTZLockInfo(CameraCmd cmd); //抓图-返给前端二进制流 String captureJPEGPicture(CameraCmd cmd); AjaxResult captureJPEGPicture(CameraCmd cmd); //抓图 String picCutCate(CameraCmd cmd); //ptz 三坐标 Map<String, Object> getPtz1(CameraCmd cmd); //获取ptz AjaxResult getPtz(CameraCmd cmd); //ptz 三坐标 高精度PTZ Map<String, Object> getPtz(CameraCmd cmd); //获取高精度PTZ AjaxResult getPtzHigh(CameraCmd cmd); //获取ptz范围 Map<String, Object> getPtzScope(CameraCmd cmd); AjaxResult getPtzScope(CameraCmd cmd); //设置ptz1(不支持2通道的Z值设置和获取) AjaxResult setPtz1(CameraCmd cmd); //设置ptz(高精度ptz设置) //设置ptz(不支持2通道的Z值设置和获取) AjaxResult setPtz(CameraCmd cmd); //设置ptz(高精度ptz设置) AjaxResult setPtzHigh(CameraCmd cmd); //设置零方位角 boolean setZeroPtz(CameraCmd cmd); AjaxResult setZeroPtz(CameraCmd cmd); //手动录像 String record(CameraCmd cmd); //引导目标位置 boolean guideTargetPosition(CameraCmd cmd); AjaxResult guideTargetPosition(CameraCmd cmd); //开始录像 boolean recordStart(CameraCmd cmd); @@ -107,5 +107,5 @@ List<ArdChannel> getIPChannelInfo(ArdCameras camera); //获取GIS信息数据 Map<String, Object> getGisInfo(CameraCmd cmd); AjaxResult getGisInfo(CameraCmd cmd); } ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java
@@ -22,46 +22,46 @@ AjaxResult pTZControl(CameraCmd cmd); //设置聚焦值 boolean setFocusPos(CameraCmd cmd); AjaxResult setFocusPos(CameraCmd cmd); //获取聚焦值 int getFocusPos(CameraCmd cmd); AjaxResult getFocusPos(CameraCmd cmd); //设置预置位 boolean setPreset(CameraCmd cmd); AjaxResult setPreset(CameraCmd cmd); //调用预置位 boolean gotoPreset(CameraCmd cmd); AjaxResult gotoPreset(CameraCmd cmd); //获取码流压缩参数 Map<String, Object> getVideoCompressionCfg(CameraCmd cmd); //透雾 boolean controlDefogcfg(CameraCmd cmd); AjaxResult controlDefogcfg(CameraCmd cmd); //红外 boolean controlInfrarecfg(CameraCmd cmd); AjaxResult controlInfrarecfg(CameraCmd cmd); //聚焦模式 boolean controlFocusMode(CameraCmd cmd); AjaxResult controlFocusMode(CameraCmd cmd); //获取聚焦模式 String getFocusMode(CameraCmd cmd); AjaxResult getFocusMode(CameraCmd cmd); //云台加热 boolean controlPTHeateRpwron(CameraCmd cmd); AjaxResult controlPTHeateRpwron(CameraCmd cmd); //镜头加热除冰 boolean controlCameraDeicing(CameraCmd cmd); AjaxResult controlCameraDeicing(CameraCmd cmd); //配置锁定 boolean controlLock(CameraCmd cmd); AjaxResult controlLock(CameraCmd cmd); //配置解锁 boolean controlUnLock(CameraCmd cmd); AjaxResult controlUnLock(CameraCmd cmd); //获取云台锁定信息 int getPTZLockInfo(CameraCmd cmd); AjaxResult getPTZLockInfo(CameraCmd cmd); //抓图-返给前端二进制流 String captureJPEGPicture(CameraCmd cmd); @@ -70,19 +70,19 @@ String picCutCate(CameraCmd cmd); //ptz 三坐标 Map<String, Object> getPtz(CameraCmd cmd); AjaxResult getPtz(CameraCmd cmd); //获取ptz范围 Map<String, Object> getPtzScope(CameraCmd cmd); AjaxResult getPtzScope(CameraCmd cmd); //设置ptz AjaxResult setPtz(CameraCmd cmd); //设置零方位角 boolean setZeroPtz(CameraCmd cmd); AjaxResult setZeroPtz(CameraCmd cmd); //引导目标位置 boolean guideTargetPosition(CameraCmd cmd); AjaxResult guideTargetPosition(CameraCmd cmd); //引导目标井 AjaxResult guideTargetWell(CameraCmd cmd); @@ -100,5 +100,5 @@ boolean recordStopNotToMinio(CameraCmd cmd); //获取GIS信息数据 Map<String, Object> getGisInfo(CameraCmd cmd); AjaxResult getGisInfo(CameraCmd cmd); } ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
@@ -145,75 +145,78 @@ //设置聚焦值 @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); 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(); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.getFocusPos(cmd); 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(); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.setPreset(cmd); 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(); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.gotoPreset(cmd); return cameraSDK.gotoPreset(cmd); } else { return AjaxResult.error("摄像头不存在"); } } catch (Exception ex) { log.error("调用预置位异常:" + ex.getMessage()); return AjaxResult.error("调用预置位异常" + ex.getMessage()); } return result; } //获取码流压缩参数 @@ -236,128 +239,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(); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.controlDefogcfg(cmd); 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(); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.controlInfrarecfg(cmd); 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(); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.controlFocusMode(cmd); 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(); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.getFocusMode(cmd); 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(); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.controlPTHeateRpwron(cmd); 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(); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.controlCameraDeicing(cmd); 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(); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); result = cameraSDK.getPTZLockInfo(cmd); 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 @@ -388,7 +401,7 @@ //获取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(); @@ -398,33 +411,36 @@ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); String gdtype = ardCamera.getGdtype(); if (gdtype.equals("1")) { map = cameraSDK.getPtz(cmd); return cameraSDK.getPtzHigh(cmd); } else { map = cameraSDK.getPtz1(cmd); 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(); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); map = cameraSDK.getPtzScope(cmd); 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 @@ -440,52 +456,53 @@ 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); return cameraSDK.setZeroPtz(cmd); } else { return AjaxResult.error("摄像头不存在"); } } 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); return cameraSDK.guideTargetPosition(cmd); } else { return AjaxResult.error("摄像头不存在"); } } catch (Exception ex) { log.error("引导指向目标异常:" + ex.getMessage()); log.error("引导指向目标异常:" + ex.getMessage()); return AjaxResult.error("引导指向目标异常:" + ex.getMessage()); } return result; } //引导指向井 @@ -569,7 +586,7 @@ return AjaxResult.error("井位置属于相机禁止引导区域"); } //按井坐标开始引导 if (!guideTargetPosition(cmd)) { if (!guideTargetPosition(cmd).get("code").equals(200)) { return AjaxResult.error("井坐标引导失败", "cameraId:" + cameraId); } return AjaxResult.success("井坐标引导成功", "cameraId:" + cameraId); @@ -669,14 +686,18 @@ */ @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("操控锁定成功"); } /** @@ -688,10 +709,14 @@ * @修改人和其它信息 */ @Override public boolean controlUnLock(CameraCmd cmd) { public AjaxResult controlUnLock(CameraCmd cmd) { String cameraId = cmd.getCameraId();//申请解锁的相机 String operator = cmd.getOperator();//申请者 ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId); if(ardCameras==null) { return AjaxResult.error("设备未登录"); } if (ardCameras.getOperatorId().equals(operator)) { //如果解锁相机的当前用户是申请者,则清空该相机的过期时间 ardCameras.setOperatorExpired(null); @@ -700,7 +725,8 @@ log.debug(cameraId + "--解锁成功"); } } return true; return AjaxResult.success("操控解锁成功"); } //录像 @@ -778,20 +804,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(); CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory); map = cameraSDK.getGisInfo(cmd); return cameraSDK.getGisInfo(cmd); } else { return AjaxResult.error("相机不存在"); } } catch (Exception ex) { log.error("获取相机架设参数异常:" + ex.getMessage()); return AjaxResult.error("获取相机架设参数异常:" + ex.getMessage()); } return map; } } ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
@@ -458,7 +458,7 @@ cmd.setTargetPosition(new double[]{guidePoint.getLongitude(), guidePoint.getLatitude()}); cmd.setOperator("sys_patrol_inspect"); cmd.setExpired(step.getRecordingTime());//秒为单位 boolean setTargetPosition = cameraSdkService.guideTargetPosition(cmd); boolean setTargetPosition = cameraSdkService.guideTargetPosition(cmd).get("code").equals(200); if (setTargetPosition) { /*控制相机巡检成功,开始录像*/ cameraSdkService.recordStart(cmd); @@ -515,7 +515,7 @@ cmd.setTargetPosition(new double[]{guidePoint.getLongitude(), guidePoint.getLatitude()}); cmd.setOperator("sys_patrol_inspect"); cmd.setExpired(step.getRecordingTime());//秒为单位 boolean setTargetPosition = cameraSdkService.guideTargetPosition(cmd); boolean setTargetPosition = cameraSdkService.guideTargetPosition(cmd).get("code").equals(200); if (!setTargetPosition) { /*控制失败,当前步骤启动时间置null*/ ardVideoInspectTask.setCurrentStepStartTime(""); ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/controller/DhSdkController.java
@@ -89,7 +89,7 @@ public @ResponseBody AjaxResult setZeroPTZ(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(sdk.setZeroPtz(cmd)); return sdk.setZeroPtz(cmd); } @ApiOperation("相机抓图") ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
@@ -20,10 +20,12 @@ import com.ruoyi.utils.gis.GisUtil; import com.ruoyi.utils.minio.MinioUtil; import com.ruoyi.utils.sdk.common.GlobalVariable; import com.ruoyi.utils.sdk.common.SdkErrorCodeEnum; import com.ruoyi.utils.sdk.dhsdk.common.ErrorCode; import com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib; import com.ruoyi.utils.sdk.dhsdk.lib.enumeration.EM_NEW_CONFIG; import com.ruoyi.utils.sdk.dhsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE; import com.ruoyi.utils.sdk.dhsdk.lib.structure.CFG_INFRARED_INFO; import com.ruoyi.utils.sdk.dhsdk.lib.structure.CFG_VIDEO_IN_FOCUS; import com.ruoyi.utils.sdk.dhsdk.lib.structure.DH_OUT_PTZ_VIEW_RANGE_STATUS; import com.ruoyi.utils.sdk.dhsdk.module.*; @@ -395,7 +397,7 @@ log.error("控制失败,请稍后重试" + getErrorCodePrint()); return AjaxResult.error(ErrorCode.getErrorCode(LoginModule.netsdk.CLIENT_GetLastError())); } return AjaxResult.success(); return AjaxResult.success("云台控制成功"); } /** @@ -404,16 +406,20 @@ * 2023/10/17 8:28:13 */ @Override public Map<String, Object> getPtz(CameraCmd cmd) { public AjaxResult getPtz(CameraCmd cmd) { Map<String, Object> ptzMap = new HashMap<>(); String cameraId = cmd.getCameraId(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return null; return AjaxResult.error("设备未登录"); } NetSDKLib.LLong loginId = (NetSDKLib.LLong) GlobalVariable.loginMap.get(cameraId); NetSDKLib.NET_PTZ_LOCATION_INFO dh_ptz_location_info = new NetSDKLib.NET_PTZ_LOCATION_INFO(); boolean b = ConfigModule.queryDevState(loginId, NET_DEVSTATE_PTZ_LOCATION, dh_ptz_location_info); if (b) { if (!b) { int code = netsdk.CLIENT_GetLastError(); log.error("设置ptz失败:" + getErrorCodePrint()); return AjaxResult.error("设置ptz失败:" + getErrorCodePrint()); } DecimalFormat df = new DecimalFormat("0.0");//设置保留位数 String nPTZPan = df.format((float) dh_ptz_location_info.nPTZPan / 10); float t = (float) dh_ptz_location_info.nPTZTilt / 10 * -1; @@ -422,17 +428,21 @@ ptzMap.put("p", nPTZPan); ptzMap.put("t", nPTZTilt); ptzMap.put("z", nPTZZoom); } return ptzMap; return AjaxResult.success(ptzMap); } @Override public Map<String, Object> getPtzScope(CameraCmd cmd) { return null; public AjaxResult getPtzHigh(CameraCmd cmd) { return getPtz(cmd); } @Override public AjaxResult setPtz1(CameraCmd cmd) { public AjaxResult getPtzScope(CameraCmd cmd) { return AjaxResult.success("未实现该功能"); } @Override public AjaxResult setPtzHigh(CameraCmd cmd) { return setPtz(cmd) ; } @@ -455,8 +465,7 @@ } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { if(ptz.get("p")==null||ptz.get("t")==null||ptz.get("z")==null) { if (ptz.get("p") == null || ptz.get("t") == null || ptz.get("z") == null) { return AjaxResult.error("ptz参数不能为空"); } int p = (int) (ptz.get("p") * 10); @@ -466,13 +475,13 @@ int z = ptz.get("z").intValue() == 0 ? 1 : ptz.get("z").intValue(); boolean bool = netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_EXACTGOTO, p, t, z, 0); if (!bool) { log.error("控制失败,请稍后重试" + getErrorCodePrint()); return AjaxResult.error(ErrorCode.getErrorCode(LoginModule.netsdk.CLIENT_GetLastError())); log.error("设置ptz失败:" + getErrorCodePrint()); return AjaxResult.error("设置ptz失败:" + getErrorCodePrint()); } return AjaxResult.success(); return AjaxResult.success("设置ptz成功"); } catch (Exception ex) { log.error(ex.getMessage()); return AjaxResult.error(ex.getMessage()); log.error("设置ptz异常:" + ex.getMessage()); return AjaxResult.error("设置ptz异常:" + ex.getMessage()); } } @@ -486,18 +495,19 @@ */ @Override @SdkOperate public boolean setZeroPtz(CameraCmd cmd) { public AjaxResult setZeroPtz(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); boolean bool = NetSDKLib.NETSDK_INSTANCE.CLIENT_DHPTZControlEx(loginId, chanNo - 1, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RESETZERO, 0, 0, 0, 0); if (!bool) { log.error("控制失败,请稍后重试" + getErrorCodePrint()); log.error("设置零方位角失败:" + getErrorCodePrint()); return AjaxResult.error("设置ptz失败:" + getErrorCodePrint()); } return bool; return AjaxResult.success("设置零方位角成功"); } /** @@ -529,10 +539,6 @@ } @Override public Map<String, Object> getPtz1(CameraCmd cmd) { return getPtz(cmd); } /** * @描述 短时录像 @@ -684,11 +690,11 @@ * 2023/10/17 8:27:48 */ @Override public boolean guideTargetPosition(CameraCmd cmd) { public AjaxResult guideTargetPosition(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { @@ -701,69 +707,71 @@ int z = (int) (cameraPTZ[2]); boolean bool = netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_EXACTGOTO, p, t, z, 0); if (!bool) { log.error("控制失败,请稍后重试" + getErrorCodePrint()); log.error("设置ptz失败:" + getErrorCodePrint()); return AjaxResult.error("设置ptz失败:" + getErrorCodePrint()); } return bool; return AjaxResult.success("引导目标位置成功"); } catch (Exception ex) { log.error("引导异常:" + ex.getMessage()); return false; log.error("引导目标位置异常:" + ex.getMessage()); return AjaxResult.error("引导目标位置异常:" + ex.getMessage()); } } //转至预置点 @Override public boolean gotoPreset(CameraCmd cmd) { public AjaxResult gotoPreset(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); Integer PresetIndex = cmd.getPresetIndex(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { boolean bool = netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, NET_PTZ_POINT_MOVE_CONTROL, 0, PresetIndex, 0, 0); if (!bool) { log.error("控制失败,请稍后重试" + getErrorCodePrint()); log.error("转至预置点失败:" + getErrorCodePrint()); return AjaxResult.error("转至预置点失败:" + getErrorCodePrint()); } return bool; return AjaxResult.success("转至预置点成功"); } catch (Exception ex) { log.error("转至预置点异常:" + ex.getMessage()); return false; return AjaxResult.error("转至预置点异常:" + ex.getMessage()); } } @Override //设置预置位 public boolean setPreset(CameraCmd cmd) { public AjaxResult setPreset(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); Integer PresetIndex = cmd.getPresetIndex(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { boolean bool = netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, NET_PTZ_POINT_SET_CONTROL, 0, PresetIndex, 0, 0); if (!bool) { log.error("控制失败,请稍后重试" + getErrorCodePrint()); log.error("设置预置点失败:" + getErrorCodePrint()); return AjaxResult.error("设置预置点失败:" + getErrorCodePrint()); } return bool; return AjaxResult.success("设置预置点成功"); } catch (Exception ex) { log.error("设置预置点异常:" + ex.getMessage()); return false; return AjaxResult.error("设置预置点异常:" + ex.getMessage()); } } //切换聚焦模式 @Override public boolean controlFocusMode(CameraCmd cmd) { public AjaxResult controlFocusMode(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); boolean enable = cmd.isEnable(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { @@ -787,22 +795,24 @@ cfg_video_in_focus.nChannelIndex = chanNo - 1; boolean bool = ConfigModule.SetDevConfig(loginId, chanNo - 1, NetSDKLib.CFG_CMD_VIDEOIN_FOCUS, cfg_video_in_focus); if (!bool) { log.error("控制失败,请稍后重试" + getErrorCodePrint()); log.error("切换聚焦模式失败:" + getErrorCodePrint()); return AjaxResult.error("切换聚焦模式失败:" + getErrorCodePrint()); } return bool; return AjaxResult.success("切换聚焦模式成功"); } catch (Exception ex) { log.error("切换聚焦模式异常:" + ex.getMessage()); return false; return AjaxResult.error("切换聚焦模式异常:" + ex.getMessage()); } } //获取聚焦模式 @Override public String getFocusMode(CameraCmd cmd) { public AjaxResult getFocusMode(CameraCmd cmd) { String mode = ""; String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; return AjaxResult.error("设备未登录"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { @@ -810,10 +820,11 @@ int emCfgOpType = NET_EM_CFG_OPERATE_TYPE.NET_EM_CFG_VIDEOIN_FOCUSMODE; boolean bool = ConfigModule.GetConfig(loginId, chanNo - 1, emCfgOpType, focusModeInfo); if (!bool) { log.error("获取失败,请稍后重试" + getErrorCodePrint()); log.error("获取聚焦模式失败:" + getErrorCodePrint()); return AjaxResult.error("获取聚焦模式失败:" + getErrorCodePrint()); } System.out.println("配置类型:" + focusModeInfo.emCfgType); // 具体信息,参考库里的枚举 System.out.println("聚焦模式:" + focusModeInfo.emFocusMode); //System.out.println("配置类型:" + focusModeInfo.emCfgType); // 具体信息,参考库里的枚举 //System.out.println("聚焦模式:" + focusModeInfo.emFocusMode); switch (focusModeInfo.emFocusMode) { case 0: mode = "关闭"; @@ -831,119 +842,114 @@ mode = "手动聚焦"; break; } return AjaxResult.success(mode); } catch (Exception ex) { log.error("获取聚焦模式异常:" + ex.getMessage()); return AjaxResult.error("获取聚焦模式异常:" + ex.getMessage()); } return mode; } @Override public boolean controlPTHeateRpwron(CameraCmd cmd) { return false; public AjaxResult controlPTHeateRpwron(CameraCmd cmd) { return AjaxResult.success("该功能未实现"); } @Override public boolean controlCameraDeicing(CameraCmd cmd) { return false; public AjaxResult controlCameraDeicing(CameraCmd cmd) { return AjaxResult.success("该功能未实现"); } @Override public int getPTZLockInfo(CameraCmd cmd) { return 0; public AjaxResult getPTZLockInfo(CameraCmd cmd) { return AjaxResult.success("该功能未实现"); } @Override public String captureJPEGPicture(CameraCmd cmd) { return null; public AjaxResult captureJPEGPicture(CameraCmd cmd) { return AjaxResult.success("该功能未实现"); } //透雾 //切换透雾 @Override public boolean controlDefogcfg(CameraCmd cmd) { public AjaxResult controlDefogcfg(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); boolean enable = cmd.isEnable(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { String command = EM_NEW_CONFIG.CFG_CMD_VIDEOINDEFOG.getValue(); //CFG_VIDEOINDEFOG_LIST cfg_videoindefog_list=new CFG_VIDEOINDEFOG_LIST(); boolean bool = ConfigModule.SetDevConfig(loginId, chanNo - 1, command, null); NET_VIDEOIN_DEFOG_INFO netVideoinDefogInfo = new NET_VIDEOIN_DEFOG_INFO(); boolean bool = ConfigModule.SetDevConfig(loginId, chanNo - 1, command, netVideoinDefogInfo); if (!bool) { log.error("控制失败,请稍后重试" + getErrorCodePrint()); log.error("切换透雾失败:" + getErrorCodePrint()); return AjaxResult.error("切换透雾失败:" + getErrorCodePrint()); } return bool; return AjaxResult.success("切换透雾成功"); } catch (Exception ex) { log.error("切换透雾异常:" + ex.getMessage()); return false; return AjaxResult.error("切换透雾异常:" + ex.getMessage()); } } //红外 //切换红外 @Override public boolean controlInfrarecfg(CameraCmd cmd) { public AjaxResult controlInfrarecfg(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); boolean enable = cmd.isEnable(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { CFG_LIGHTING_INFO cfg_lighting_info = new CFG_LIGHTING_INFO(); cfg_lighting_info.nLightingDetailNum = 1; if (enable) { cfg_lighting_info.stuLightingDetail[0].emMode = EM_CFG_LIGHTING_MODE.EM_CFG_LIGHTING_MODE_MANUAL; } else { cfg_lighting_info.stuLightingDetail[0].emMode = EM_CFG_LIGHTING_MODE.EM_CFG_LIGHTING_MODE_OFF; } boolean bool = ConfigModule.SetDevConfig(loginId, chanNo - 1, CFG_CMD_LIGHTING, cfg_lighting_info); CFG_INFRARED_INFO cfg_infrared_info = new CFG_INFRARED_INFO(); boolean bool = ConfigModule.SetDevConfig(loginId, chanNo - 1, CFG_CMD_INFRARED_CONFIG, cfg_infrared_info); if (!bool) { log.error("控制失败,请稍后重试" + getErrorCodePrint()); log.error("切换红外失败:" + getErrorCodePrint()); return AjaxResult.error("切换红外失败:" + getErrorCodePrint()); } return bool; return AjaxResult.success("切换红外成功"); } catch (Exception ex) { log.error("切换红外异常:" + ex.getMessage()); return false; return AjaxResult.error("切换红外异常:" + getErrorCodePrint()); } } //获取聚焦值 @Override public int getFocusPos(CameraCmd cmd) { public AjaxResult getFocusPos(CameraCmd cmd) { int result = 0; try { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return result; return AjaxResult.error("设备未登录"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); NET_PTZ_LOCATION_INFO net_ptz_location_info = new NET_PTZ_LOCATION_INFO(); net_ptz_location_info.nChannelID = chanNo - 1; boolean bool = ConfigModule.queryDevState(loginId, NET_DEVSTATE_PTZ_LOCATION, net_ptz_location_info); if (!bool) { log.error("控制失败,请稍后重试" + getErrorCodePrint()); log.error("获取聚焦值失败:" + getErrorCodePrint()); return AjaxResult.error("获取聚焦值失败:" + getErrorCodePrint()); } result = net_ptz_location_info.nFocusMapValue; return AjaxResult.success(result); } catch (Exception ex) { log.error("获取聚焦值异常:" + ex.getMessage()); return AjaxResult.error("获取聚焦值异常:" + getErrorCodePrint()); } return result; } //设置聚焦值 @Override public boolean setFocusPos(CameraCmd cmd) { public AjaxResult setFocusPos(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); boolean enable = cmd.isEnable(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); try { @@ -956,12 +962,13 @@ } boolean bool = ConfigModule.SetDevConfig(loginId, chanNo - 1, CFG_CMD_LIGHTING, cfg_lighting_info); if (!bool) { log.error("控制失败,请稍后重试" + getErrorCodePrint()); log.error("设置聚焦值失败:" + getErrorCodePrint()); return AjaxResult.error("设置聚焦值失败:" + getErrorCodePrint()); } return bool; return AjaxResult.success("设置聚焦值成功"); } catch (Exception ex) { log.error("设置聚焦值异常:" + ex.getMessage()); return false; return AjaxResult.error("设置聚焦值失败:" + ex.getMessage()); } } @@ -1033,30 +1040,32 @@ return map; } //获取GIS信息数据 //获取云台可视域 @Override public Map<String, Object> getGisInfo(CameraCmd cmd) { Map<String, Object> map = new HashMap<>(); public AjaxResult getGisInfo(CameraCmd cmd) { try { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return null; return AjaxResult.error("设备未登录"); } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); DH_OUT_PTZ_VIEW_RANGE_STATUS dh_out_ptz_view_range_status = new DH_OUT_PTZ_VIEW_RANGE_STATUS(); boolean b = ConfigModule.queryDevState(loginId, NET_DEVSTATE_PTZ_VIEW_RANGE, dh_out_ptz_view_range_status); if (b) { if (!b) { log.error("获取云台可视域失败:" + getErrorCodePrint()); return AjaxResult.error("获取云台可视域失败:" + getErrorCodePrint()); } float nAngelH = (float) dh_out_ptz_view_range_status.nAngelH / 10; float nAngelV = (float) dh_out_ptz_view_range_status.nAngelV / 10; map = getPtz(cmd);//获取ptz Map<String, Object> map = getPtz(cmd);//获取ptz map.put("fHorFieldAngle", nAngelH);// 水平视场角 map.put("fVerFieldAngle", nAngelV);// 垂直视场角 } return AjaxResult.success(map); } catch (Exception ex) { log.error("获取云台可视域异常" + ex.getMessage()); return AjaxResult.error("获取云台可视域异常:" + getErrorCodePrint()); } return map; } // 设备断线回调: 当设备出现断线时,SDK会调用该函数 ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/controller/HikSdkController.java
@@ -95,7 +95,7 @@ public @ResponseBody AjaxResult gotoPreset(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(sdk.gotoPreset(cmd)); return sdk.gotoPreset(cmd); } @ApiOperation("设置预置点") @@ -105,7 +105,7 @@ public @ResponseBody AjaxResult setPreset(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(sdk.setPreset(cmd)); return sdk.setPreset(cmd); } @ApiOperation("获取聚焦值") @@ -115,8 +115,7 @@ public @ResponseBody AjaxResult getFocusPos(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); int focus = sdk.getFocusPos(cmd); return AjaxResult.success("获取聚焦值", focus); return sdk.getFocusPos(cmd); } @ApiOperation("设置聚焦值") @@ -126,7 +125,7 @@ public @ResponseBody AjaxResult setFocusPos(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(sdk.setFocusPos(cmd)); return sdk.setFocusPos(cmd); } @ApiOperation("获取PTZ") @@ -168,7 +167,7 @@ public @ResponseBody AjaxResult setTargetPosition(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(sdk.guideTargetPosition(cmd)); return sdk.guideTargetPosition(cmd); } @@ -179,7 +178,7 @@ public @ResponseBody AjaxResult setZeroPTZ(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(sdk.setZeroPtz(cmd)); return sdk.setZeroPtz(cmd); } @@ -190,7 +189,8 @@ public @ResponseBody AjaxResult getPTZLockInfo(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); int byWorkMode = sdk.getPTZLockInfo(cmd); AjaxResult ajaxResult = sdk.getPTZLockInfo(cmd); int byWorkMode = (int)ajaxResult.get("msg"); if (byWorkMode == 0) { return AjaxResult.success("云台锁定状态:解锁"); } else if (byWorkMode == 1) { @@ -207,7 +207,7 @@ public @ResponseBody AjaxResult defogcfg(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(sdk.controlDefogcfg(cmd)); return sdk.controlDefogcfg(cmd); } @ApiOperation("红外开关") @@ -217,7 +217,7 @@ public @ResponseBody AjaxResult infrarecfg(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(sdk.controlInfrarecfg(cmd)); return sdk.controlInfrarecfg(cmd); } @ApiOperation(value = "手动/自动聚焦", notes = "true手动flase自动") @@ -227,7 +227,7 @@ public @ResponseBody AjaxResult enableFocusMode(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(sdk.controlFocusMode(cmd)); return sdk.controlFocusMode(cmd); } @ApiOperation(value = "获取聚焦模式", notes = "1手动2自动") @@ -235,8 +235,7 @@ public @ResponseBody AjaxResult getFocusMode(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); String focusMode = sdk.getFocusMode(cmd); return AjaxResult.success(focusMode); return sdk.getFocusMode(cmd); } @ApiOperation("云台加热") @@ -246,7 +245,7 @@ public @ResponseBody AjaxResult heateRpwron(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(sdk.controlPTHeateRpwron(cmd)); return sdk.controlPTHeateRpwron(cmd); } @@ -257,15 +256,14 @@ public @ResponseBody AjaxResult cameraDeicing(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(sdk.controlCameraDeicing(cmd)); return sdk.controlCameraDeicing(cmd); } @PostMapping("/captureJPEGPicture") public @ResponseBody AjaxResult captureJPEGPicture(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); String base64Str = sdk.captureJPEGPicture(cmd); return toAjaxString(base64Str, "相机抓图"); return sdk.captureJPEGPicture(cmd); } @ApiOperation("相机抓图") ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
@@ -388,7 +388,7 @@ Integer speed = cmd.getSpeed(); Integer code = cmd.getCode(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return AjaxResult.error("相机未登录"); return AjaxResult.error("设备未登录"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); int dwStop; @@ -456,10 +456,10 @@ boolean bool = hCNetSDK.NET_DVR_PTZControlWithSpeed_Other(userId, channelNum, dwPTZCommand, dwStop, speed); if (!bool) { int errorCode = hCNetSDK.NET_DVR_GetLastError(); log.error("控制失败,请稍后重试" + errorCode); return AjaxResult.error("errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode)); log.error("控制失败: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode)); return AjaxResult.error("控制失败: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode)); } return AjaxResult.success(); return AjaxResult.success("控制成功"); } /** @@ -468,12 +468,12 @@ * @param cmd 相机命令 */ @Override public boolean setFocusPos(CameraCmd cmd) { public AjaxResult setFocusPos(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); Integer dwFocusPos = cmd.getDwFocusPos(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } // 获取参数 Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); @@ -491,10 +491,9 @@ if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("设置GIS信息数据失败,请稍后重试" + code); return false; } else { return true; return AjaxResult.error("设置GIS信息数据失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } return AjaxResult.success("设置GIS信息数据成功"); } /** @@ -503,12 +502,11 @@ * @param cmd 相机命令 */ @Override public int getFocusPos(CameraCmd cmd) { int result = 0; public AjaxResult getFocusPos(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return result; return AjaxResult.error("设备未登录"); } // 获取参数 Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); @@ -524,13 +522,12 @@ boolean bool = hCNetSDK.NET_DVR_GetSTDConfig(userId, NET_DVR_GET_GISINFO, struStdCfg); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("获取GIS信息数据失败,请稍后重试" + code); return result; } else { struGisInfo.read(); result = struGisInfo.struPtzPosEx.dwFocus; log.error("获取聚焦值失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("获取聚焦值失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } return result; struGisInfo.read(); int result = struGisInfo.struPtzPosEx.dwFocus; return AjaxResult.success(result); } /** @@ -539,20 +536,21 @@ * @param cmd 相机命令 */ @Override public boolean setPreset(CameraCmd cmd) { public AjaxResult setPreset(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); Integer PresetIndex = cmd.getPresetIndex(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, SET_PRESET, PresetIndex); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("预置点设置失败,请稍后重试" + code); log.error("预置点设置失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("预置点设置失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } return bool; return AjaxResult.success("预置点设置成功"); } /** @@ -561,20 +559,21 @@ * @param cmd 相机命令 */ @Override public boolean gotoPreset(CameraCmd cmd) { public AjaxResult gotoPreset(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); Integer PresetIndex = cmd.getPresetIndex(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, GOTO_PRESET, PresetIndex); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("预置点设置失败,请稍后重试" + code); log.error("调用预置点失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("调用预置点失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } return bool; return AjaxResult.success("调用预置点成功"); } /** @@ -897,11 +896,11 @@ * @创建时间 2023/1/17 16:36 * @修改人和其它信息 */ public Map<String, Object> getPtz1(CameraCmd cmd) { public AjaxResult getPtz(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return new HashMap<>(); return AjaxResult.error("设备未登录"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); @@ -910,7 +909,11 @@ IntByReference ibrBytesReturned = new IntByReference(0); m_ptzPosCurrent.write(); boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_PTZPOS, channelNum, pioint, m_ptzPosCurrent.size(), ibrBytesReturned); if (bool) { if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("获取ptz失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("获取ptz失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } m_ptzPosCurrent.read(); // DecimalFormat df = new DecimalFormat("0.0");//设置保留位数 //16进制转Integer后除10,保留小数点1位 @@ -929,12 +932,7 @@ ptzMap.put("p", p); ptzMap.put("t", t); ptzMap.put("z", z); return ptzMap; } else { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("控制失败,请稍后重试" + code); return new HashMap<>(); } return AjaxResult.success(ptzMap); } /** @@ -946,13 +944,13 @@ * @修改人和其它信息 */ @Override public Map<String, Object> getPtz(CameraCmd cmd) { public AjaxResult getPtzHigh(CameraCmd cmd) { Map<String, Object> ptzMap = new HashMap<>(); try { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return new HashMap<>(); return AjaxResult.error("设备未登录"); } IntByReference pchannel = new IntByReference(chanNo); Pointer pChannelNum = pchannel.getPointer(); @@ -968,8 +966,10 @@ lpConfigParam6696.write(); boolean res = hCNetSDK.NET_DVR_GetSTDConfig(lUserID, HCNetSDK.NET_DVR_GET_PTZABSOLUTEEX, lpConfigParam6696); if (!res) { log.error("获取高精度PTZ绝对位置配置失败,错误号:" + hCNetSDK.NET_DVR_GetLastError()); } else { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("获取高精度PTZ绝对位置配置失败: errorCde" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("获取高精度PTZ绝对位置配置失败: errorCde" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } lpPTZAbsoluteEX_cfg.read(); //log.debug("P:" + lpPTZAbsoluteEX_cfg.struPTZCtrl.fPan + " T:" + lpPTZAbsoluteEX_cfg.struPTZCtrl.fTilt + " Z:" + lpPTZAbsoluteEX_cfg.struPTZCtrl.fZoom // + " 聚焦参数:" + lpPTZAbsoluteEX_cfg.struPTZCtrl.dwFocus + " 聚焦范围:" + lpPTZAbsoluteEX_cfg.dwFocalLen + " 水平转动速度:" + lpPTZAbsoluteEX_cfg.fHorizontalSpeed @@ -981,11 +981,11 @@ ptzMap.put("p", p); ptzMap.put("t", t); ptzMap.put("z", z); } return AjaxResult.success(ptzMap); } catch (Exception ex) { log.error("获取高精度PTZ绝对位置异常:" + ex.getMessage()); return AjaxResult.error("获取高精度PTZ绝对位置异常:" + ex.getMessage()); } return ptzMap; } /** @@ -998,7 +998,7 @@ */ @Override @SdkOperate public AjaxResult setPtz1(CameraCmd cmd) { public AjaxResult setPtz(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); Map<String, Double> ptz = cmd.getPtzMap(); @@ -1020,10 +1020,10 @@ boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_PTZPOS, channelNum, point, m_ptzPosCurrent.size()); if (!bool) { int errorCode = hCNetSDK.NET_DVR_GetLastError(); log.error("设置PTZ参数失败,请稍后重试:" + errorCode); return AjaxResult.error("errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode)); log.error("设置PTZ参数失败:" + errorCode); return AjaxResult.error("设置PTZ参数失败: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode)); } return AjaxResult.success(); return AjaxResult.success("设置PTZ参数成功"); } catch (Exception ex) { log.error(ex.getMessage()); return AjaxResult.error("设置PTZ参数异常:" + ex.getMessage()); @@ -1040,7 +1040,7 @@ */ @Override @SdkOperate public AjaxResult setPtz(CameraCmd cmd) { public AjaxResult setPtzHigh(CameraCmd cmd) { try { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); @@ -1079,10 +1079,10 @@ boolean bool = hCNetSDK.NET_DVR_SetSTDConfig(lUserID, NET_DVR_SET_PTZABSOLUTEEX, lpConfigParam6697); if (!bool) { int errorCode = hCNetSDK.NET_DVR_GetLastError(); log.error("设置高精度PTZ参数失败,请稍后重试:" + errorCode); return AjaxResult.error("errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode)); log.error("设置高精度PTZ参数失败:" + errorCode); return AjaxResult.error("设置高精度PTZ参数失败: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode)); } return AjaxResult.success(); return AjaxResult.success("设置高精度PTZ参数成功"); } catch (Exception ex) { log.error("设置高精度PTZ参数异常", ex); @@ -1092,11 +1092,11 @@ @Override @SdkOperate public boolean guideTargetPosition(CameraCmd cmd) { public AjaxResult guideTargetPosition(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer chanNo = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS(); @@ -1118,11 +1118,12 @@ if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("设置ptz失败,请稍后重试" + code); return AjaxResult.error("设置ptz失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } return bool; return AjaxResult.success("引导坐标成功"); } catch (Exception ex) { log.error("引导异常:" + ex.getMessage()); return false; log.error("引导坐标异常:" + ex.getMessage()); return AjaxResult.error("引导坐标异常:" + ex.getMessage()); } } @@ -1135,11 +1136,11 @@ * @创建时间 2023/1/17 16:36 * @修改人和其它信息 0-解锁 1-锁定 */ public int getPTZLockInfo(CameraCmd cmd) { public AjaxResult getPTZLockInfo(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return -1; return AjaxResult.error("设备未登录"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_PTZ_LOCKCFG netDvrPtzLockcfg = new NET_DVR_PTZ_LOCKCFG(); @@ -1149,11 +1150,12 @@ boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_PTZLOCKCFG, channelNum, point, netDvrPtzLockcfg.size(), ibrBytesReturned); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("获取ptz锁定信息失败,请稍后重试" + code); return -1; log.error("获取ptz锁定信息失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("获取ptz锁定信息失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } else { netDvrPtzLockcfg.read(); return netDvrPtzLockcfg.byWorkMode; int byWorkMode = netDvrPtzLockcfg.byWorkMode; return AjaxResult.success(byWorkMode); } } @@ -1167,11 +1169,11 @@ */ @Override @SdkOperate public boolean setZeroPtz(CameraCmd cmd) { public AjaxResult setZeroPtz(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_INITIALPOSITIONCTRL initialpositionctrl = new NET_DVR_INITIALPOSITIONCTRL(); @@ -1184,10 +1186,11 @@ initialpositionctrl.write(); boolean bool = hCNetSDK.NET_DVR_RemoteControl(userId, NET_DVR_PTZ_INITIALPOSITIONCTRL, point, initialpositionctrl.size()); if (!bool) { int i = hCNetSDK.NET_DVR_GetLastError(); log.error("错误码:" + i); int code = hCNetSDK.NET_DVR_GetLastError(); log.error("设置零方位角失败:" + code); return AjaxResult.error("设置零方位角失败: errorCode:" + code + "errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } return bool; return AjaxResult.success(); } /** @@ -1199,11 +1202,11 @@ * @修改人和其它信息 */ @Override public Map<String, Object> getPtzScope(CameraCmd cmd) { public AjaxResult getPtzScope(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return new HashMap<>(); return AjaxResult.error("设备未登录"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_PTZSCOPE m_ptzPosCurrent = new NET_DVR_PTZSCOPE(); @@ -1213,8 +1216,8 @@ boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_PTZSCOPE, channelNum, point, m_ptzPosCurrent.size(), ibrBytesReturned); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("设置ptz失败,请稍后重试" + code); return new HashMap<>(); log.error("获取ptz范围失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("获取ptz范围失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } else { m_ptzPosCurrent.read(); DecimalFormat df = new DecimalFormat("0.0");//设置保留位数 @@ -1232,13 +1235,12 @@ ptzScopeMap.put("tMin", wTiltPosMin); ptzScopeMap.put("zMax", wZoomPosMax); ptzScopeMap.put("zMin", wZoomPosMin); return ptzScopeMap; return AjaxResult.success(ptzScopeMap); } } /** * @描述 透雾开关 * @描述 切换透雾 * @参数 [userId, channelNum, enable] * @返回值 boolean * @创建人 刘苏义 @@ -1246,12 +1248,12 @@ * @修改人和其它信息 */ @Override public boolean controlDefogcfg(CameraCmd cmd) { public AjaxResult controlDefogcfg(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_CAMERAPARAMCFG_EX struCameraParam = new NET_DVR_CAMERAPARAMCFG_EX(); @@ -1259,7 +1261,9 @@ IntByReference ibrBytesReturned = new IntByReference(0); boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_CCDPARAMCFG_EX, channelNum, point, struCameraParam.size(), ibrBytesReturned); if (!b_GetCameraParam) { log.error("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); int code = hCNetSDK.NET_DVR_GetLastError(); log.error("获取前端参数失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("获取前端参数失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } struCameraParam.read(); log.debug("是否开启透雾:" + struCameraParam.struDefogCfg.byMode); @@ -1276,14 +1280,15 @@ boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_CCDPARAMCFG_EX, channelNum, point, struCameraParam.size()); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("设置透雾失败,请稍后重试" + code); log.error("切换透雾失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("切换透雾失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } log.debug("设置透雾成功"); return bool; log.debug("切换透雾成功"); return AjaxResult.success("切换透雾成功"); } /** * @描述 红外开关 * @描述 切换红外 * @参数 [userId, channelNum, enable] * @返回值 boolean * @创建人 刘苏义 @@ -1291,12 +1296,12 @@ * @修改人和其它信息 */ @Override public boolean controlInfrarecfg(CameraCmd cmd) { public AjaxResult controlInfrarecfg(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); Integer chanNo = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_CAMERAPARAMCFG_EX struDayNigh = new NET_DVR_CAMERAPARAMCFG_EX(); @@ -1304,7 +1309,9 @@ IntByReference ibrBytesReturned = new IntByReference(0); boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_CCDPARAMCFG, chanNo, point, struDayNigh.size(), ibrBytesReturned); if (!b_GetCameraParam) { log.error("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); int code = hCNetSDK.NET_DVR_GetLastError(); log.error("获取前端参数失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("获取前端参数失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } struDayNigh.read(); String current = struDayNigh.struDayNight.byDayNightFilterType == 1 ? "开启" : "关闭"; @@ -1323,12 +1330,11 @@ boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_CCDPARAMCFG, chanNo, point, struDayNigh.size()); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("设置夜视失败 ErrorCode:{},ErrorInfo:{}",code, SdkErrorCodeEnum.getDescByCode(code)); } else { log.debug("设置夜视成功"); log.error("切换红外失败 ErrorCode:{},ErrorInfo:{}", code, SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("切换红外失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } return bool; log.debug("切换红外成功"); return AjaxResult.success("切换红外成功"); } /** @@ -1340,12 +1346,12 @@ * @修改人和其它信息 */ @Override public boolean controlFocusMode(CameraCmd cmd) { public AjaxResult controlFocusMode(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG(); @@ -1353,7 +1359,9 @@ IntByReference ibrBytesReturned = new IntByReference(0); boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_FOCUSMODECFG, channelNum, point, struFocusMode.size(), ibrBytesReturned); if (!b_GetCameraParam) { log.error("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); int code = hCNetSDK.NET_DVR_GetLastError(); log.error("获取前端参数失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("获取前端参数失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } struFocusMode.read(); log.debug("当前聚焦模式:" + struFocusMode.byFocusMode); @@ -1370,10 +1378,11 @@ boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_FOCUSMODECFG, channelNum, point, struFocusMode.size()); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("设置聚焦模式失败,请稍后重试" + code); log.error("设置聚焦模式失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("设置聚焦模式失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } log.debug("设置聚焦模式成功"); return bool; return AjaxResult.success("设置聚焦模式成功"); } /** @@ -1384,11 +1393,11 @@ * @创建时间 2023/1/18 13:07 * @修改人和其它信息 */ public String getFocusMode(CameraCmd cmd) { public AjaxResult getFocusMode(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; return AjaxResult.error("设备未登录"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG(); @@ -1396,11 +1405,13 @@ IntByReference ibrBytesReturned = new IntByReference(0); boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_FOCUSMODECFG, channelNum, point, struFocusMode.size(), ibrBytesReturned); if (!b_GetCameraParam) { log.error("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); int code = hCNetSDK.NET_DVR_GetLastError(); log.error("获取前端参数失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("获取前端参数失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } struFocusMode.read(); log.debug("当前聚焦模式:" + struFocusMode.byFocusMode); return String.valueOf(struFocusMode.byFocusMode); return AjaxResult.success(struFocusMode.byFocusMode); } /** @@ -1412,12 +1423,12 @@ * @修改人和其它信息 */ @Override public boolean controlPTHeateRpwron(CameraCmd cmd) { public AjaxResult controlPTHeateRpwron(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); int dwStop; @@ -1429,10 +1440,11 @@ boolean bool = hCNetSDK.NET_DVR_PTZControl_Other(userId, channelNum, HEATER_PWRON, dwStop); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("设置云台加热失败,请稍后重试" + code); log.error("设置云台加热失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("设置云台加热失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } log.debug("设置云台加热成功"); return bool; return AjaxResult.success("设置云台加热成功"); } /** @@ -1444,12 +1456,12 @@ * @修改人和其它信息 */ @Override public boolean controlCameraDeicing(CameraCmd cmd) { public AjaxResult controlCameraDeicing(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; return AjaxResult.error("设备未登录"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_DEVSERVER_CFG struDeicing = new NET_DVR_DEVSERVER_CFG(); @@ -1457,7 +1469,9 @@ IntByReference ibrBytesReturned = new IntByReference(0); boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_DEVSERVER_CFG, channelNum, point, struDeicing.size(), ibrBytesReturned); if (!b_GetCameraParam) { log.error("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); int code = hCNetSDK.NET_DVR_GetLastError(); log.error("获取前端参数失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("获取前端参数失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } struDeicing.read(); log.debug("是否开启除冰:" + struDeicing.byEnableDeicing); @@ -1471,10 +1485,11 @@ boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_DEVSERVER_CFG, channelNum, point, struDeicing.size()); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("设置镜头除冰失败,请稍后重试" + code); log.error("设置镜头除冰失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("设置镜头除冰失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } log.debug("设置镜头除冰成功"); return bool; return AjaxResult.success("设置镜头除冰成功"); } /** @@ -1482,17 +1497,18 @@ * * @param cmd 相机命令 */ public String captureJPEGPicture(CameraCmd cmd) { public AjaxResult captureJPEGPicture(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; return AjaxResult.error("设备未登录"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_WORKSTATE_V30 devwork = new NET_DVR_WORKSTATE_V30(); if (!hCNetSDK.NET_DVR_GetDVRWorkState_V30(userId, devwork)) { // 返回Boolean值,判断是否获取设备能力 log.error("抓图失败,请稍后重试"); int code = hCNetSDK.NET_DVR_GetLastError(); log.error("获取设备工作状态失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("获取设备工作状态失败: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } //图片质量 NET_DVR_JPEGPARA jpeg = new NET_DVR_JPEGPARA(); @@ -1512,7 +1528,7 @@ String png_base64 = decoder.encodeToString(jpegBuffer.array());//转换成base64串 png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\n log.debug("-----------处理完成截图数据----------"); return png_base64; return AjaxResult.success(png_base64); } /** @@ -1878,11 +1894,11 @@ * @修改人和其它信息 0-解锁 1-锁定 */ @Override public Map<String, Object> getGisInfo(CameraCmd cmd) { public AjaxResult getGisInfo(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return new HashMap<>(); return AjaxResult.error("设备未登录"); } // 获取参数 Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); @@ -1898,9 +1914,9 @@ boolean bool = hCNetSDK.NET_DVR_GetSTDConfig(userId, NET_DVR_GET_GISINFO, struStdCfg); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("获取GIS信息数据失败,请稍后重试" + code); return new HashMap<>(); } else { log.error("获取GIS信息数据失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.error("获取GIS信息数据失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } struGisInfo.read(); Map<String, Object> map = new HashMap<>(); map.put("p", struGisInfo.struPtzPos.fPanPos); @@ -1908,7 +1924,7 @@ map.put("z", struGisInfo.struPtzPos.fZoomPos); map.put("fHorFieldAngle", struGisInfo.fHorizontalValue);// 水平视场角 map.put("fVerFieldAngle", struGisInfo.fVerticalValue);// 垂直视场角 return map; } return AjaxResult.success(map); } } ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java
@@ -1,5 +1,6 @@ package com.ruoyi.framework.aspectj; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.redis.RedisCache; @@ -49,10 +50,11 @@ Boolean result = controlScopeFilter(point); if (result) { log.debug("已获取相机控制权--" + method.getName()); // 执行目标方法 return point.proceed(); } else { log.debug("未获取相机控制权--" + method.getName()); return false;//代替目标方法的返回值 return AjaxResult.error("未获取相机控制权--" + method.getName());//代替目标方法的返回值 } } ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PushTask.java
@@ -2,6 +2,7 @@ import com.ruoyi.alarm.global.service.IGlobalAlarmService; import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.DateUtils; @@ -88,7 +89,8 @@ { continue; } Map<String, Object> ptz = cameraSdkService.getGisInfo(cmd); AjaxResult ajaxResult = cameraSdkService.getGisInfo(cmd); Map<String, Object> ptz = (Map<String, Object>)ajaxResult.get("data"); if (StringUtils.isNull(ptz)) { continue; }