From 97950ee9f9c7b1bce76fff0a9faa8743ada2b533 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 07 三月 2026 21:00:55 +0800
Subject: [PATCH] 修改小程序首页围栏查询

---
 xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceServiceImpl.java |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceServiceImpl.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceServiceImpl.java
index a6fa724..0bcd642 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceServiceImpl.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceServiceImpl.java
@@ -254,7 +254,7 @@
             }
         }
 
-        if (xpElectronicFence.getStatus() == 2) {
+        if (xpElectronicFence.getStatus() == 1 || xpElectronicFence.getStatus() == 2) {
             for (XpElectronicFenceArea newElectronicFenceArea : newElectronicFenceAreas) {
                 if (newElectronicFenceArea.getAreaType() == 1
                         && newElectronicFenceArea.getAreaStatus() == 1) {
@@ -391,6 +391,8 @@
             // 删除旧的区域数据,然后保存新的区域数据
             xpElectronicFenceAreaMapper.delete(new LambdaQueryWrapper<XpElectronicFenceArea>()
                     .eq(XpElectronicFenceArea::getElectronicId, dto.getId()));
+            mongoTemplate.remove(new Query(Criteria.where("fenceId").is(String.valueOf(dto.getId()))), XpGeoFencingPolygon.class);
+
             if (xpElectronicFence.getStatus() == 2) {
                 // 设置电子围栏ID并保存区域数据
                 for (XpElectronicFenceArea area : updatedElectronicFenceAreas) {
@@ -410,7 +412,7 @@
                     xpElectronicFenceAreaMapper.insert(area);
                 }
             }
-            if (dto.getStatus() == 2) {
+            if (dto.getStatus() == 1 || dto.getStatus() == 2) {
                 for (XpElectronicFenceArea newElectronicFenceArea : updatedElectronicFenceAreas) {
                     if (newElectronicFenceArea.getAreaType() == 1
                             && newElectronicFenceArea.getAreaStatus() == 1) {
@@ -423,16 +425,18 @@
                             XpGeoFencingPolygon xpGeoFencingPolygon = new XpGeoFencingPolygon();
                             xpGeoFencingPolygon.setFenceId(String.valueOf(xpElectronicFence.getId()));
                             xpGeoFencingPolygon.setName(xpElectronicFence.getElectronicName());
+                            xpGeoFencingPolygon.setCityCode(cityCode);
                             xpGeoFencingPolygon.setAreaId(String.valueOf(newElectronicFenceArea.getId()));
                             xpGeoFencingPolygon.setOperationStrategy(xpElectronicFence.getOperationStrategy());
                             // 将围栏点转换为GeoJSON多边形
                             GeoJsonPolygon geoJsonPolygon = convertToGeoJsonPolygon(newElectronicFenceArea.getFencePoints());
                             xpGeoFencingPolygon.setPoints(geoJsonPolygon);
-                            mongoTemplate.insert(xpGeoFencingPolygon);
+                            mongoTemplate.save(xpGeoFencingPolygon);
                         } else {
                             // 如果存在,则更新已有文档
                             old.setFenceId(String.valueOf(xpElectronicFence.getId()));
                             old.setName(xpElectronicFence.getElectronicName());
+                            old.setCityCode(cityCode);
                             old.setAreaId(String.valueOf(newElectronicFenceArea.getId()));
                             old.setOperationStrategy(xpElectronicFence.getOperationStrategy());
                             // 将围栏点转换为GeoJSON多边形

--
Gitblit v1.7.1