liujie
2026-04-03 199b087e97231bc602cd5ed8668f37d6f336dff4
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列表批量查询电子围栏
     *