From 1892fe30acbac7340f00b31715d4fd1eeae0f76a Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 25 三月 2026 14:56:08 +0800
Subject: [PATCH] 切换服务

---
 xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpTestPointServiceImpl.java |  140 ++++++----------------------------------------
 1 files changed, 19 insertions(+), 121 deletions(-)

diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTestPointServiceImpl.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpTestPointServiceImpl.java
similarity index 68%
rename from xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTestPointServiceImpl.java
rename to xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpTestPointServiceImpl.java
index 023ceeb..f1d5ef8 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTestPointServiceImpl.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpTestPointServiceImpl.java
@@ -1,4 +1,4 @@
-package com.xiaopeng.operation.service.impl;
+package com.xiaopeng.map.service.serviceimpl;
 
 
 import cn.hutool.core.collection.CollUtil;
@@ -7,29 +7,29 @@
 import com.xiaopeng.api.dto.operation.PointMapQuery;
 import com.xiaopeng.api.dto.order.HistoryEndPointsDto;
 import com.xiaopeng.api.dto.order.HistoryStartPointsDto;
-import com.xiaopeng.api.model.operation.*;
+import com.xiaopeng.api.model.map.XpTestPoint;
+import com.xiaopeng.api.model.operation.XpElectronicFence;
+import com.xiaopeng.api.model.operation.XpElectronicFenceArea;
+import com.xiaopeng.api.model.operation.XpSystemSetting;
 import com.xiaopeng.api.query.operation.PointListQuery;
 import com.xiaopeng.api.query.operation.PointPageListListQuery;
 import com.xiaopeng.api.vo.order.XpHistoryEndPointsVo;
 import com.xiaopeng.api.vo.order.XpHistoryStartPointsVo;
-import com.xiaopeng.api.vo.order.XpPointsListVo;
-import com.xiaopeng.api.vo.order.XpPointsSearchVo;
 import com.xiaopeng.common.core.constant.CacheConstants;
 import com.xiaopeng.common.core.web.page.PageInfo;
 import com.xiaopeng.common.redis.service.RedisService;
-import com.xiaopeng.operation.dto.NearestDto;
-import com.xiaopeng.operation.mapper.XpSystemSettingMapper;
-import com.xiaopeng.operation.mapper.XpTestPointMapper;
-import com.xiaopeng.operation.query.PointByNameQuery;
-import com.xiaopeng.operation.service.IXpElectronicFenceAreaService;
-import com.xiaopeng.operation.service.IXpElectronicFenceService;
-import com.xiaopeng.operation.service.XpTestPointService;
-import com.xiaopeng.operation.utils.TimeRangeChecker;
-import com.xiaopeng.operation.utils.holiday.HolidayUtil;
-import com.xiaopeng.operation.utils.map.FastDistanceCalculator;
-import com.xiaopeng.operation.vo.NearestNextVo;
-import com.xiaopeng.operation.vo.NearestVo;
-import com.xiaopeng.operation.vo.OrderDistanceVo;
+import com.xiaopeng.map.dto.NearestDto;
+import com.xiaopeng.map.mapper.XpSystemSettingMapper;
+import com.xiaopeng.map.mapper.XpTestPointMapper;
+import com.xiaopeng.map.service.XpElectronicFenceAreaService;
+import com.xiaopeng.map.service.XpElectronicFenceService;
+import com.xiaopeng.map.service.XpTestPointService;
+import com.xiaopeng.map.utils.TimeRangeChecker;
+import com.xiaopeng.map.utils.holiday.HolidayUtil;
+import com.xiaopeng.map.utils.map.map.FastDistanceCalculator;
+import com.xiaopeng.map.vo.NearestNextVo;
+import com.xiaopeng.map.vo.NearestVo;
+import com.xiaopeng.map.vo.OrderDistanceVo;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
@@ -65,112 +65,10 @@
     private HolidayUtil holidayUtil;
 
     @Resource
-    private IXpElectronicFenceAreaService xpElectronicFenceAreaService;
+    private XpElectronicFenceAreaService xpElectronicFenceAreaService;
 
     @Resource
-    private IXpElectronicFenceService xpElectronicFenceService;
-
-
-    @Override
-    public NearestVo nearest(NearestDto dto) {
-        // 走缓存
-        Object orderDistanceObj = redisService.getCacheObject(CacheConstants.NEAR_POINT_DISTANCE);
-        Integer orderDistance;
-        if (orderDistanceObj != null) {
-            orderDistance = Integer.valueOf(orderDistanceObj.toString());
-        } else {
-            XpSystemSetting xpSystemSetting = xpSystemSettingMapper.selectOne(null);
-            orderDistance = xpSystemSetting.getNearPointDistance();
-        }
-
-
-        List<XpTestPoint> list1 = list(new LambdaQueryWrapper<XpTestPoint>().eq(XpTestPoint::getOperationStatus, 2).eq(XpTestPoint::getPointType,1).isNotNull(XpTestPoint::getElectronicAreaId));
-        if(list1.size()<2){
-            return new NearestVo();
-        }
-        // 获取所有的站点信息
-        List<XpTestPoint> list = list(new LambdaQueryWrapper<XpTestPoint>().eq(XpTestPoint::getOperationStatus, 2).eq(XpTestPoint::getPointType,1).isNotNull(XpTestPoint::getElectronicAreaId)
-                // 添加距离计算字段
-                .apply("ST_Distance_Sphere(point({0}, {1}), point(point_lon, point_lat)) <= {2}",
-                        dto.getLongitude(), dto.getLatitude(), orderDistance));
-
-
-        list = list.stream().filter(e->e.getElectronicAreaId().equals(dto.getElectronicAreaId())).collect(Collectors.toList());
-
-        NearestVo nearestVo = new NearestVo();
-        if(list.isEmpty()){
-            nearestVo.setPoints(new ArrayList<>());
-            nearestVo.setTotal(0);
-            return nearestVo;
-        }
-        List<NearestNextVo> nearestNextVos = new ArrayList<>();
-        LocalTime now = LocalTime.now();
-        List<Long> areaIds = list.stream().map(XpTestPoint::getElectronicAreaId).collect(Collectors.toList());
-        List<XpElectronicFenceArea> xpElectronicFenceAreas = xpElectronicFenceAreaService.listByIds(areaIds);
-        List<Long> fenceIds = xpElectronicFenceAreas.stream().map(XpElectronicFenceArea::getElectronicId).collect(Collectors.toList());
-        List<XpElectronicFence> xpElectronicFences = new ArrayList<>();
-        if (CollUtil.isNotEmpty(fenceIds)) {
-            xpElectronicFences = xpElectronicFenceService.listByIds(fenceIds);
-        }
-
-        //判断当前点位是否在运营时间范围内
-        for (XpTestPoint xpPoint : list) {
-            Integer operationType = xpPoint.getOperationType();
-            if(1 == operationType){
-                //与运营区同步
-                XpElectronicFenceArea xpElectronicFenceArea = xpElectronicFenceAreas.stream().filter(s -> s.getId().equals(xpPoint.getElectronicAreaId())).findFirst().orElse(null);
-                if(null == xpElectronicFenceArea){
-                    continue;
-                }
-                XpElectronicFence xpElectronicFence = xpElectronicFences.stream().filter(s -> s.getId().equals(xpElectronicFenceArea.getElectronicId())).findFirst().orElse(null);
-                if(null == xpElectronicFence){
-                    continue;
-                }
-                //失效类型 1=永不失效 2=定时失效
-                Integer failureType = xpElectronicFence.getFailureType();
-                //永不失效,但是还未到开始时间
-                if(1 == failureType && LocalDateTime.now().isBefore(xpElectronicFence.getEffectTime())){
-                    continue;
-                }else if(2 == failureType && (LocalDateTime.now().isBefore(xpElectronicFence.getEffectTime()) || LocalDateTime.now().isAfter(xpElectronicFence.getFailureTime()))){
-                    //定时失效,但是当前时间不在时间范围内
-                    continue;
-                }
-            }else{
-                //自定义时间段
-                // 判断是否在时间段内
-                boolean intime = getInTime(now, xpPoint.getEffectivePeriod(), xpPoint.getEffectiveTimePeriod());
-                if (!intime) {
-                    continue;
-                }
-            }
-
-            // 计算距离 小于的站点
-            double v = FastDistanceCalculator.distanceFast(dto.getLatitude(), dto.getLongitude(), xpPoint.getPointLat(), xpPoint.getPointLon());
-
-            // m做判断
-            if ((v) < orderDistance) {
-                NearestNextVo nearestNextVo = new NearestNextVo();
-                nearestNextVo.setId(xpPoint.getId());
-                nearestNextVo.setName(xpPoint.getPointName());
-                nearestNextVo.setLatitude(xpPoint.getPointLat());
-                nearestNextVo.setLongitude(xpPoint.getPointLon());
-                nearestNextVo.setDistance(new BigDecimal(v).setScale(2, RoundingMode.HALF_UP).doubleValue());
-                nearestNextVo.setAddress(xpPoint.getPointAddress());
-                nearestNextVo.setTime(xpPoint.getParkingTimeLimit());
-                nearestNextVo.setElectronicAreaId(xpPoint.getElectronicAreaId());
-
-
-                nearestNextVos.add(nearestNextVo);
-            }
-        }
-        if (!nearestNextVos.isEmpty()) {
-            nearestNextVos = nearestNextVos.stream().sorted(Comparator.comparing(NearestNextVo::getDistance)).collect(Collectors.toList());
-        }
-        nearestVo.setPoints(nearestNextVos);
-        nearestVo.setTotal(nearestNextVos.size());
-        return nearestVo;
-
-    }
+    private XpElectronicFenceService xpElectronicFenceService;
 
 
 

--
Gitblit v1.7.1