From 40c97867e634b0c4949dfd964bf06da35fc4bd88 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 13 二月 2026 22:06:40 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 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 d7e9ce7..1e849ff 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
@@ -8,11 +8,14 @@
 import com.xiaopeng.operation.mapper.XpRegionMapper;
 import com.xiaopeng.api.model.operation.XpRegion;
 import com.xiaopeng.operation.service.XpRegionService;
+import com.xiaopeng.operation.vo.RegionDistrictSyncResultVO;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -64,4 +67,29 @@
         redisService.setCacheList(CacheConstants.XP_REGION, result);
         return result;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public RegionDistrictSyncResultVO syncDistrictFromRegionAll() {
+        Long cityCount = Objects.requireNonNullElse(this.baseMapper.countCityForDistrictSync(), 0L);
+        Long candidateDistrictCount = Objects.requireNonNullElse(this.baseMapper.countCandidateDistrictForSync(), 0L);
+
+        List<XpRegion> missingDistrictList = this.baseMapper.selectMissingDistrictFromRegionAll();
+        long insertedCount = 0L;
+        if (missingDistrictList != null && !missingDistrictList.isEmpty()) {
+            this.saveBatch(missingDistrictList);
+            insertedCount = missingDistrictList.size();
+        }
+
+        redisService.deleteObject(CacheConstants.XP_REGION);
+        redisService.deleteObject(CacheConstants.XP_REGION_CITY);
+
+        RegionDistrictSyncResultVO result = new RegionDistrictSyncResultVO();
+        result.setCityCount(cityCount);
+        result.setCandidateDistrictCount(candidateDistrictCount);
+        result.setInsertedCount(insertedCount);
+        result.setSkippedCount(Math.max(candidateDistrictCount - insertedCount, 0));
+        result.setMessage("区级数据同步完成");
+        return result;
+    }
 }

--
Gitblit v1.7.1