‘liusuyi’
2023-10-28 7786c1a71400a8e1635d2d6c94161a0474c4bb67
ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
@@ -11,42 +11,23 @@
import com.ruoyi.device.camera.domain.CameraCmd;
import com.ruoyi.device.camera.service.IArdCamerasService;
import com.ruoyi.device.camera.service.ICameraSdkService;
import com.ruoyi.device.dhsdk.service.IDhClientService;
import com.ruoyi.device.hiksdk.service.IHikClientService;
import com.ruoyi.device.noguidezone.domain.ArdCameraNoGuideZone;
import com.ruoyi.device.noguidezone.service.IArdCameraNoGuideZoneService;
import com.ruoyi.utils.gis.GisUtil;
import com.ruoyi.utils.gis.Point;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.camera.domain.CameraCmd;
import com.ruoyi.device.camera.service.IArdCamerasService;
import com.ruoyi.device.dhsdk.service.IDhClientService;
import com.ruoyi.device.hiksdk.service.IHikClientService;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.domain.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * @Description:
 * @Description: 相机通用SDK接口
 * @ClassName: CameraSdkController
 * @Author: 刘苏义
 * @Date: 2023年10月14日17:02:56
@@ -62,13 +43,8 @@
    private ICameraSdkService cameraSdkService;
    @Resource
    private IArdCamerasService ardCamerasService;
    //初始登录所有相机
    @PostConstruct
    public void initLoginAll() {
        cameraSdkService.loginAll();
    }
    @Autowired
    private IArdCameraNoGuideZoneService ardCameraNoGuideZoneService;
    @RequestMapping("/preview")
    private String preview() {
@@ -169,6 +145,7 @@
        Map<String, Object> ptzMap = cameraSdkService.getPtz(cmd);
        return AjaxResult.success("获取ptz", ptzMap);
    }
    @ApiOperation("获取PTZ范围")
    @PostMapping("/getPTZScope")
    @Log(title = "获取PTZ范围", businessType = BusinessType.CONTROL)
@@ -197,6 +174,33 @@
    public @ResponseBody
    AjaxResult setTargetPosition(@RequestBody CameraCmd cmd) {
        cmd.setOperator(SecurityUtils.getUserId());
        //拦截手动引导
        ArdCameraNoGuideZone ardCameraNoGuideZone = new ArdCameraNoGuideZone();
        ardCameraNoGuideZone.setCameraId(cmd.getCameraId());
        //获取当前相机的禁引可视域列表
        List<ArdCameraNoGuideZone> ardCameraNoGuideZones = ardCameraNoGuideZoneService.selectArdCameraNoGuideZoneList(ardCameraNoGuideZone);
        if (ardCameraNoGuideZones.size() > 0) {
            //获取到当前相机的坐标集合
            List<Point> pointList = new ArrayList<>();
            for(ArdCameraNoGuideZone zone:ardCameraNoGuideZones) {
                String[] parts = zone.getPoi().split(",");
                for (int i = 0; i < parts.length; i += 3) {
                    Point point = new Point();
                    point.setLongitude(Double.valueOf(parts[i]));
                    point.setLatitude(Double.valueOf(parts[i + 1]));
                    pointList.add(point);
                }
            }
            double lon = cmd.getTargetPosition()[0];
            double lat = cmd.getTargetPosition()[1];
            Point targetPoint = new Point(lon, lat);
            //判断引导目标是否在坐标集合组成的多边形内
            boolean inPolygon = GisUtil.isInPolygon(targetPoint, pointList);
            if(inPolygon)
            {
                return AjaxResult.error("引导坐标位于禁引可视域内");
            }
        }
        return toAjax(cameraSdkService.guideTargetPosition(cmd));
    }