liusuyi
2024-06-06 f37c91a84345f925e41cd26bf5d22ed1a2594bdf
ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
@@ -23,6 +23,10 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -44,8 +48,10 @@
    private ICameraSdkService cameraSdkService;
    @Resource
    private IArdCamerasService ardCamerasService;
    @Autowired
    private IArdCameraNoGuideZoneService ardCameraNoGuideZoneService;
    @RequestMapping("/preview")
    private String preview() {
@@ -92,7 +98,7 @@
    public @ResponseBody
    AjaxResult PTZControlWithSpeed(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
        return toAjax(cameraSdkService.pTZControl(cmd));
        return cameraSdkService.pTZControl(cmd);
    }
    @ApiOperation("调用预置点")
@@ -102,7 +108,7 @@
    public @ResponseBody
    AjaxResult gotoPreset(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
        return toAjax(cameraSdkService.gotoPreset(cmd));
        return cameraSdkService.gotoPreset(cmd);
    }
    @ApiOperation("设置预置点")
@@ -112,7 +118,7 @@
    public @ResponseBody
    AjaxResult setPreset(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
        return toAjax(cameraSdkService.setPreset(cmd));
        return cameraSdkService.setPreset(cmd);
    }
    @ApiOperation("获取聚焦值")
@@ -122,8 +128,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("设置聚焦值")
@@ -133,7 +138,7 @@
    public @ResponseBody
    AjaxResult setFocusPos(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
        return toAjax(cameraSdkService.setFocusPos(cmd));
        return cameraSdkService.setFocusPos(cmd);
    }
    @ApiOperation("获取PTZ")
@@ -143,8 +148,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范围")
@@ -154,8 +158,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")
@@ -165,7 +168,7 @@
    public @ResponseBody
    AjaxResult setPTZ(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
        return toAjax(cameraSdkService.setPtz(cmd));
        return cameraSdkService.setPtz(cmd);
    }
    @ApiOperation("指向目标")
@@ -183,7 +186,7 @@
        List<ArdCameraNoGuideZone> ardCameraNoGuideZones = ardCameraNoGuideZoneService.selectArdCameraNoGuideZoneList(ardCameraNoGuideZone);
        if (ardCameraNoGuideZones.size() > 0) {
            //获取到当前相机的坐标集合
            for(ArdCameraNoGuideZone zone:ardCameraNoGuideZones) {
            for (ArdCameraNoGuideZone zone : ardCameraNoGuideZones) {
                String[] parts = zone.getPoi().split(",");
                List<Point> pointList = new ArrayList<>();
                for (int i = 0; i < parts.length; i += 3) {
@@ -197,15 +200,23 @@
                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("指向目标井")
    @PostMapping("/setTargetWell")
    @Log(title = "指向目标井", businessType = BusinessType.CONTROL)
    @ApiOperationSupport(includeParameters = {"cmd.wellId"})
    public @ResponseBody
    AjaxResult setTargetWell(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
        return cameraSdkService.guideTargetWell(cmd);
    }
    @ApiOperation("设置零方位角")
    @PostMapping("/setZeroPTZ")
@@ -214,7 +225,7 @@
    public @ResponseBody
    AjaxResult setZeroPTZ(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
        return toAjax(cameraSdkService.setZeroPtz(cmd));
        return cameraSdkService.setZeroPtz(cmd);
    }
    @ApiOperation("设置锁定")
@@ -224,7 +235,7 @@
    public @ResponseBody
    AjaxResult setPTZLock(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
        return AjaxResult.success(cameraSdkService.controlLock(cmd));
        return cameraSdkService.controlLock(cmd);
    }
    @ApiOperation("设置解锁")
@@ -234,7 +245,7 @@
    public @ResponseBody
    AjaxResult setPTZUnLock(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
        return AjaxResult.success(cameraSdkService.controlUnLock(cmd));
        return cameraSdkService.controlUnLock(cmd);
    }
    @ApiOperation("获取云台锁定信息")
@@ -244,7 +255,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) {
@@ -261,7 +273,7 @@
    public @ResponseBody
    AjaxResult defogcfg(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
        return toAjax(cameraSdkService.controlDefogcfg(cmd));
        return cameraSdkService.controlDefogcfg(cmd);
    }
    @ApiOperation("红外开关")
@@ -271,7 +283,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自动")
@@ -281,7 +293,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自动")
@@ -290,8 +302,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("云台加热")
@@ -301,7 +312,7 @@
    public @ResponseBody
    AjaxResult heateRpwron(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
        return toAjax(cameraSdkService.controlPTHeateRpwron(cmd));
        return cameraSdkService.controlPTHeateRpwron(cmd);
    }
@@ -312,7 +323,7 @@
    public @ResponseBody
    AjaxResult cameraDeicing(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
        return toAjax(cameraSdkService.controlCameraDeicing(cmd));
        return cameraSdkService.controlCameraDeicing(cmd);
    }
    @ApiOperation("相机抓图")
@@ -326,6 +337,20 @@
        return toAjaxString(path, "相机抓图");
    }
    @ApiOperation("本地抓图")
    @PostMapping("/localCapture")
    @Log(title = "相机抓图", businessType = BusinessType.CONTROL)
    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
    public @ResponseBody
    void localCapture(@RequestBody CameraCmd cmd, HttpServletResponse response) throws IOException {
        cmd.setOperator(SecurityUtils.getUserId());
        response.setContentType("image/jpeg");
        AjaxResult result = cameraSdkService.localCapture(cmd);
        OutputStream outputStream = response.getOutputStream();
        byte[] data = (byte[]) result.get("data");
        outputStream.write(data);
    }
    @ApiOperation("获取相机架设参数")
    @PostMapping("/getGisInfo")
    @Log(title = "获取相机架设参数", businessType = BusinessType.CONTROL)
@@ -333,13 +358,13 @@
    public @ResponseBody
    AjaxResult getGisInfo(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
        return AjaxResult.success(cameraSdkService.getGisInfo(cmd));
        return cameraSdkService.getGisInfo(cmd);
    }
    @ApiOperation("录像")
    //@ApiOperation("录像")
    @PostMapping("/record")
    @Log(title = "手动录像开始", businessType = BusinessType.CONTROL)
    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
    //@ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
    public @ResponseBody
    AjaxResult record(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
@@ -347,10 +372,10 @@
        return AjaxResult.success(url);
    }
    @ApiOperation("手动录像开始")
    //@ApiOperation("手动录像开始")
    @PostMapping("/recordStart")
    @Log(title = "手动录像开始", businessType = BusinessType.CONTROL)
    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
    //@ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
    public @ResponseBody
    AjaxResult recordStart(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
@@ -358,14 +383,38 @@
        return toAjax(b);
    }
    @ApiOperation("手动录像停止")
    //@ApiOperation("手动录像停止")
    @PostMapping("/recordStop")
    @Log(title = "手动录像停止", businessType = BusinessType.CONTROL)
    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.recordBucketName", "cmd.recordObjectName"})
    //@ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.recordBucketName", "cmd.recordObjectName"})
    public @ResponseBody
    AjaxResult recordStop(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
        String url = cameraSdkService.recordStopToMinio(cmd);
        return AjaxResult.success(url);
    }
    @ApiOperation("本地录像开始")
    @PostMapping("/localRecordStart")
    @Log(title = "本地录像开始", businessType = BusinessType.CONTROL)
    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
    public @ResponseBody
    AjaxResult localRecordStart(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
        return cameraSdkService.localRecordStart(cmd);
    }
    @ApiOperation("本地录像停止")
    @PostMapping("/localRecordStop")
    @Log(title = "本地录像停止", businessType = BusinessType.CONTROL)
    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.recordId"})
    public @ResponseBody
    void localRecordStop(@RequestBody CameraCmd cmd, HttpServletResponse response) throws IOException {
        cmd.setOperator(SecurityUtils.getUserId());
        response.setContentType("video/mp4");
        AjaxResult result = cameraSdkService.localRecordStop(cmd);
        byte[] recordBytes = (byte[]) result.get("data");
        OutputStream outputStream = response.getOutputStream();
        outputStream.write(recordBytes);
    }
}