From afd6d4901599e9670d80f7e7e6327356ed501f30 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期六, 14 三月 2026 14:59:04 +0800
Subject: [PATCH] 修改bug

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 48 insertions(+), 0 deletions(-)

diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java
index 62a5857..e7ee40a 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java
@@ -120,6 +120,54 @@
         redisService.setCacheList(CacheConstants.XP_REGION_CASCADER, result);
         return result;
     }
+    @Override
+    public List<RegionCascaderVO> getRegionCascaderNoArea() {
+        List<Object> cacheList = redisService.getCacheList(CacheConstants.XP_REGION_CASCADER);
+        if (cacheList != null && !cacheList.isEmpty()) {
+            try {
+                return cacheList.stream()
+                        .filter(item -> item instanceof RegionCascaderVO)
+                        .map(item -> (RegionCascaderVO) item)
+                        .collect(Collectors.toList());
+            } catch (ClassCastException e) {
+                redisService.deleteObject(CacheConstants.XP_REGION_CASCADER);
+            }
+        }
+
+        List<XpRegion> regionList = this.baseMapper.selectList(Wrappers.lambdaQuery(XpRegion.class));
+        if (regionList == null || regionList.isEmpty()) {
+            return Collections.emptyList();
+        }
+
+        List<XpOpenCity> openCityList = openCityService.list(Wrappers.lambdaQuery(XpOpenCity.class)
+                .eq(XpOpenCity::getStatus, 1));
+        Set<String> openCityCodeSet = openCityList.stream()
+                .map(XpOpenCity::getCityCode)
+                .filter(StringUtils::isNotBlank)
+                .collect(Collectors.toCollection(HashSet::new));
+        Set<String> openDistrictCodeSet = openCityList.stream()
+                .map(XpOpenCity::getDistrictCode)
+                .filter(StringUtils::isNotBlank)
+                .collect(Collectors.toCollection(HashSet::new));
+
+        Map<Long, List<XpRegion>> childrenMap = regionList.stream()
+                .collect(Collectors.groupingBy(region -> region.getParentId() == null ? 0L : region.getParentId()));
+        List<XpRegion> provinceList = childrenMap.getOrDefault(0L, Collections.emptyList()).stream()
+                .sorted(REGION_COMPARATOR)
+                .collect(Collectors.toList());
+        List<RegionCascaderVO> result = provinceList.stream()
+                .map(region -> buildRegionNode(region, childrenMap, openCityCodeSet, openDistrictCodeSet))
+                .collect(Collectors.toList());
+        for (RegionCascaderVO regionCascaderVO : result) {
+            List<RegionCascaderVO> children = regionCascaderVO.getChildren();
+            for (RegionCascaderVO children1 : children) {
+                children1.setChildren(null);
+            }
+        }
+
+        redisService.setCacheList(CacheConstants.XP_REGION_CASCADER, result);
+        return result;
+    }
 
     private RegionCascaderVO buildRegionNode(XpRegion current,
                                              Map<Long, List<XpRegion>> childrenMap,

--
Gitblit v1.7.1