From 7786c1a71400a8e1635d2d6c94161a0474c4bb67 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期六, 28 十月 2023 09:06:49 +0800
Subject: [PATCH] 手动引导增加禁引可视域判断

---
 ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java |   38 +++++++++++++++++++++++++++++++++++++-
 1 files changed, 37 insertions(+), 1 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java b/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
index b19b27c..e3904b4 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
@@ -11,11 +11,18 @@
 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.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.Resource;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -36,7 +43,8 @@
     private ICameraSdkService cameraSdkService;
     @Resource
     private IArdCamerasService ardCamerasService;
-
+    @Autowired
+    private IArdCameraNoGuideZoneService ardCameraNoGuideZoneService;
 
     @RequestMapping("/preview")
     private String preview() {
@@ -137,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)
@@ -165,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));
     }
 

--
Gitblit v1.9.3