无关风月
2026-02-13 b79f46e69c3377f6bb1f35551f3d650d668d9cf7
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;
    }
}