From a023ca14105ead77d0346dda6dbe0ccbf4ce8e78 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 13 三月 2026 15:13:29 +0800
Subject: [PATCH] 新增功能

---
 xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java
index 5f32645..2c1b998 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java
@@ -16,6 +16,7 @@
 import com.xiaopeng.common.core.web.page.PageInfo;
 import com.xiaopeng.api.dto.map.XpPointExportExcelQuery;
 import com.xiaopeng.map.exportExcel.XpPointExportExcel;
+import com.xiaopeng.map.mangodb.service.XpGeoFencingPolygonService;
 import com.xiaopeng.map.service.XpElectronicFenceAreaService;
 import com.xiaopeng.map.service.XpElectronicFenceService;
 import com.xiaopeng.map.service.XpPointService;
@@ -64,6 +65,8 @@
     private XpElectronicFenceAreaService xpElectronicFenceAreaService;
     @Resource
     private XpElectronicFenceService xpElectronicFenceService;
+    @Resource
+    private XpGeoFencingPolygonService xpGeoFencingPolygonService;
 
 
     @ApiOperation(value = "获取所有运营中的区域", response = XpElectronicFenceArea.class)
@@ -152,6 +155,9 @@
     @ResponseBody
     @ApiOperation(value = "新增点位")
     public R<XpPoint> add(@Validated @RequestBody PointAddDto pointAddDto) {
+        if (!xpGeoFencingPolygonService.isInFence(pointAddDto.getPointLon(), pointAddDto.getPointLat(), pointAddDto.getFenceId(), "prohibited_area")) {
+            return R.fail("in_prohibited_area");
+        }
         return R.ok(xpPointService.addPointWithGeneratedNumber(pointAddDto));
     }
 
@@ -177,8 +183,17 @@
         XpPoint xpPoint = xpPointService.getById(pointAddDto.getId());
         if (!xpPoint.getElectronicAreaId().equals(pointAddDto.getElectronicAreaId())) {
             BeanUtils.copyProperties(pointAddDto, xpPoint);
+
+            if (!xpGeoFencingPolygonService.isInFence(pointAddDto.getPointLon(), pointAddDto.getPointLat(), pointAddDto.getFenceId(), "prohibited_area")) {
+                return R.fail("in_prohibited_area");
+            }
+
             xpPointService.updateById(xpPoint);
         } else {
+            if (!xpGeoFencingPolygonService.isInFence(pointAddDto.getPointLon(), pointAddDto.getPointLat(), pointAddDto.getFenceId(), "prohibited_area")) {
+                return R.fail("in_prohibited_area");
+            }
+
             //先删除原有的数据,因为会存在点位的从属区域变化的情况,所以先删除原有的数据后添加新的数据重新分片到新的库中
             BeanUtils.copyProperties(pointAddDto, xpPoint);
             xpPointService.removeById(pointAddDto.getId());

--
Gitblit v1.7.1