From 199b087e97231bc602cd5ed8668f37d6f336dff4 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 03 四月 2026 16:38:56 +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/controller/XpElectronicFenceManagementController.java |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java
index efdfddc..c439b96 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java
@@ -39,8 +39,10 @@
 import java.time.LocalDateTime;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Objects;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 import static com.xiaopeng.map.service.serviceimpl.XpElectronicFenceServiceImpl.getPinyinInitials;
@@ -239,7 +241,7 @@
                     I18nKeyConstant.FENCE_STATUS_CANNOT_COPIED
             );
         }
-        electronicFence.setElectronicName("副本_"+electronicFence.getElectronicName());
+        electronicFence.setElectronicName(buildCopyFenceName(electronicFence.getElectronicName()));
         electronicFence.setId(null);
         electronicFence.setStatus(0);
         List<XpElectronicFenceArea> electronicFenceAreaList = xpElectronicFenceAreaService.lambdaQuery().eq(XpElectronicFenceArea::getElectronicId, id)
@@ -267,6 +269,21 @@
         return R.ok(electronicFence.getId());
     }
 
+    private String buildCopyFenceName(String sourceName) {
+        Set<String> existingNames = new HashSet<>(xpElectronicFenceService.lambdaQuery()
+                .likeRight(XpElectronicFence::getElectronicName, sourceName)
+                .list()
+                .stream()
+                .map(XpElectronicFence::getElectronicName)
+                .collect(Collectors.toSet()));
+
+        String candidateName = sourceName + "_副本";
+        while (existingNames.contains(candidateName)) {
+            candidateName = candidateName + "_副本";
+        }
+        return candidateName;
+    }
+
     /**
      * 根据ID列表批量查询电子围栏
      *

--
Gitblit v1.7.1