‘liusuyi’
2024-03-14 650b127a6a671a87034db5e027379e740aa56364
优化
已修改13个文件
824 ■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/QueueHandler.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarm/radar/service/impl/ArdRadarServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/controller/DhSdkController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java 217 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/controller/HikSdkController.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java 248 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PushTask.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
                    }