‘liusuyi’
2024-04-13 32174535f5cd608c87992a9cdec259a803af63e4
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
@@ -29,6 +29,7 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
@@ -59,12 +60,11 @@
     */
    @Override
    public void run(ApplicationArguments args) {
        try {
            // 从ardCamerasService中获取ArdCameras列表
            List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(new ArdCameras());
            for (ArdCameras camera : ardCameras) {
                login(camera);
                asyncLogin(camera);
            }
        } catch (Exception ex) {
            // 初始化登录相机异常,记录错误日志
@@ -73,23 +73,35 @@
    }
    //登录
    //同步登录
    @Override
    public Boolean login(ArdCameras ardCamera) {
        boolean result = false;
    public AjaxResult login(ArdCameras ardCamera) {
        try {
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                //sdkStrategy.login(ardCamera);//同步登录
                cameraSDK.asyncLogin(ardCamera);//异步登录
                result = true;
            if (ardCamera == null) {
                return AjaxResult.error("登录相机失败,相机不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.login(ardCamera);//同步登录
        } catch (Exception ex) {
            log.error("登录异常:" + ex.getMessage());
            return false;
            return AjaxResult.error("登录异常:" + ex.getMessage());
        }
        return result;
    }
    @Override
    public AjaxResult asyncLogin(ArdCameras ardCamera) {
        try {
            if (ardCamera == null) {
                return AjaxResult.error("登录相机失败,相机不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.asyncLogin(ardCamera);//异步登录
        } catch (Exception ex) {
            log.error("登录异常:" + ex.getMessage());
            return AjaxResult.error("登录异常:" + ex.getMessage());
        }
    }
    //注销
@@ -373,9 +385,25 @@
        }
    }
    //本地抓图
    @Override
    public String captureJPEGPicture(CameraCmd cmd) {
        return null;
    public AjaxResult localCapture(CameraCmd cmd) {
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
              return   cameraSDK.localCapture(cmd);
            }
            else
            {
                return AjaxResult.error("摄像头不存在");
            }
        } catch (Exception ex) {
            log.error("手动抓图异常:" + ex.getMessage());
            return AjaxResult.error("手动抓图异常:" + ex.getMessage());
        }
    }
    //抓图
@@ -463,7 +491,7 @@
        } catch (Exception ex) {
            log.error("设置ptz异常:" + ex.getMessage());
           return AjaxResult.error("设置ptz异常:" + ex.getMessage());
            return AjaxResult.error("设置ptz异常:" + ex.getMessage());
        }
    }
@@ -689,8 +717,7 @@
    public AjaxResult controlLock(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();//申请锁的相机
        ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
        if(ardCameras==null)
        {
        if (ardCameras == null) {
            return AjaxResult.error("设备未登录");
        }
        Date now = new Date();
@@ -713,8 +740,7 @@
        String cameraId = cmd.getCameraId();//申请解锁的相机
        String operator = cmd.getOperator();//申请者
        ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
        if(ardCameras==null)
        {
        if (ardCameras == null) {
            return AjaxResult.error("设备未登录");
        }
        if (ardCameras.getOperatorId().equals(operator)) {
@@ -820,4 +846,43 @@
            return AjaxResult.error("获取相机架设参数异常:" + ex.getMessage());
        }
    }
    //本地录像开始
    @Override
    public AjaxResult localRecordStart(CameraCmd cmd) {
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.localRecordStart(cmd);
            } else {
                return AjaxResult.error("相机不存在");
            }
        } catch (Exception ex) {
            log.error("本地录像开始异常:" + ex.getMessage());
            return AjaxResult.error("本地录像开始异常:" + ex.getMessage());
        }
    }
    //本地录像停止
    @Override
    public AjaxResult localRecordStop(CameraCmd cmd) {
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.localRecordStop(cmd);
            }
            else
            {
                return AjaxResult.error("相机不存在");
            }
        } catch (Exception ex) {
            log.error("本地录像停止异常:" + ex.getMessage());
            return AjaxResult.error("本地录像停止异常:" + ex.getMessage());
        }
    }
}