From 8ed881dab49e67b329ba45f5de41324cb22f1e07 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期六, 07 三月 2026 10:18:19 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi
---
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceServiceImpl.java | 25 +++++++++++++++++++++++++
1 files changed, 25 insertions(+), 0 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 e2b402c..5f49af6 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
@@ -44,6 +44,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.stream.Collectors;
/**
@@ -391,6 +392,30 @@
xpElectronicFence.setCityCode(dto.getCityCode());
this.updateById(xpElectronicFence);
+
+ // 禁行区(areaType=2)差异删除:对比原有禁行区与本次编辑入参禁行区(按id)
+ List<XpElectronicFenceArea> existingProhibitedAreas = xpElectronicFenceAreaService.lambdaQuery()
+ .eq(XpElectronicFenceArea::getElectronicId, dto.getId())
+ .eq(XpElectronicFenceArea::getAreaType, 2)
+ .list();
+ Set<Long> incomingProhibitedIds = updatedElectronicFenceAreas.stream()
+ .filter(a -> a != null && a.getAreaType() != null && a.getAreaType() == 2 && a.getId() != null)
+ .map(XpElectronicFenceArea::getId)
+ .collect(Collectors.toSet());
+ List<Long> toDeleteProhibitedIds = existingProhibitedAreas.stream()
+ .map(XpElectronicFenceArea::getId)
+ .filter(id -> id != null && !incomingProhibitedIds.contains(id))
+ .collect(Collectors.toList());
+ if (!toDeleteProhibitedIds.isEmpty()) {
+ // 逻辑删除MySQL禁行区
+ xpElectronicFenceAreaService.removeByIds(toDeleteProhibitedIds);
+ // 同步删除Mongo禁行区多边形
+ List<String> toDeleteAreaIdStrings = toDeleteProhibitedIds.stream().map(String::valueOf).collect(Collectors.toList());
+ Query delMongoQuery = new Query();
+ delMongoQuery.addCriteria(Criteria.where("fenceId").is(String.valueOf(dto.getId())));
+ delMongoQuery.addCriteria(Criteria.where("areaId").in(toDeleteAreaIdStrings));
+ mongoTemplate.remove(delMongoQuery, XpGeoFencingProhibitedPolygon.class);
+ }
// 删除旧的区域数据,然后保存新的区域数据
mongoTemplate.remove(new Query(Criteria.where("fenceId").is(String.valueOf(dto.getId()))), XpGeoFencingPolygon.class);
if (xpElectronicFence.getStatus() == 2) {
--
Gitblit v1.7.1