From 3bb68de5e58ec0935061ac7e143ee9d818b8c449 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期六, 14 二月 2026 15:55:29 +0800
Subject: [PATCH] 点位修改

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java |   52 +++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 47 insertions(+), 5 deletions(-)

diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
index 9c83592..1fa4ccf 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
@@ -3,10 +3,12 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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.XpPoint;
 import com.xiaopeng.api.model.operation.XpSystemSetting;
+import com.xiaopeng.api.query.operation.PointPageListQuery;
 import com.xiaopeng.api.vo.order.XpHistoryEndPointsVo;
 import com.xiaopeng.api.vo.order.XpHistoryStartPointsVo;
 import com.xiaopeng.api.vo.order.XpPointsListVo;
@@ -17,17 +19,17 @@
 import com.xiaopeng.operation.mapper.XpPointMapper;
 import com.xiaopeng.operation.mapper.XpSystemSettingMapper;
 import com.xiaopeng.operation.query.PointByNameQuery;
-import com.xiaopeng.api.dto.operation.PointMapQuery;
-import com.xiaopeng.api.query.operation.PointPageListQuery;
 import com.xiaopeng.operation.service.XpPointService;
+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 org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.time.LocalTime;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
@@ -51,14 +53,17 @@
     @Resource
     private RedisService redisService;
 
+    @Resource
+    private HolidayUtil holidayUtil;
+
 
     @Override
     public NearestVo nearest(NearestDto dto) {
         // 获取所有的站点信息
-        List<XpPoint> list = list(new LambdaQueryWrapper<XpPoint>().eq(XpPoint::getOperationStatus, 2).isNotNull(XpPoint::getElectronicAreaId));
+        List<XpPoint> list = list(new LambdaQueryWrapper<XpPoint>().eq(XpPoint::getOperationStatus, 2).eq(XpPoint::getPointType,1).isNotNull(XpPoint::getElectronicAreaId));
         NearestVo nearestVo = new NearestVo();
         List<NearestNextVo> nearestNextVos = new ArrayList<>();
-
+        LocalTime now = LocalTime.now();
         // 走缓存
         Object orderDistanceObj = redisService.getCacheObject(CacheConstants.NEAR_POINT_DISTANCE);
         Integer orderDistance;
@@ -70,6 +75,40 @@
         }
 
         for (XpPoint xpPoint : list) {
+
+            //  2非工作日  0工作日  1节假日 3调休日
+            Integer holidayToday = holidayUtil.isHolidayToday();
+            Integer operationType = xpPoint.getEffectivePeriod();
+            if(operationType==1){
+                boolean inTime = TimeRangeChecker.isCurrentTimeInRanges(now, xpPoint.getEffectiveTimePeriod());
+                if (!inTime) {
+                    continue;
+                }
+            }else if(operationType==2){
+                if(holidayToday!=0){
+                    continue;
+                }
+                boolean inTime = TimeRangeChecker.isCurrentTimeInRanges(now, xpPoint.getEffectiveTimePeriod());
+                if (!inTime) {
+                    continue;
+                }
+            }else if(operationType==3){
+                if(holidayToday!=2){
+                    continue;
+                }
+                boolean inTime = TimeRangeChecker.isCurrentTimeInRanges(now, xpPoint.getEffectiveTimePeriod());
+                if (!inTime) {
+                    continue;
+                }
+            }else if(operationType==4){
+                if(holidayToday!=1){
+                    continue;
+                }
+                boolean inTime = TimeRangeChecker.isCurrentTimeInRanges(now, xpPoint.getEffectiveTimePeriod());
+                if (!inTime) {
+                    continue;
+                }
+            }
             // 计算距离 小于的站点
             double v = FastDistanceCalculator.distanceFast(dto.getLatitude(), dto.getLongitude(), xpPoint.getPointLat(), xpPoint.getPointLon());
             if (v < orderDistance) {
@@ -82,6 +121,8 @@
                 nearestNextVo.setAddress(xpPoint.getPointAddress());
                 nearestNextVo.setTime(xpPoint.getParkingTimeLimit());
                 nearestNextVo.setElectronicAreaId(xpPoint.getElectronicAreaId());
+
+
                 nearestNextVos.add(nearestNextVo);
             }
         }
@@ -94,6 +135,7 @@
 
     }
 
+
     @Override
     public List<XpPoint> pointMap(PointMapQuery query) {
         List<XpPoint> list = this.baseMapper.pointMap(query);

--
Gitblit v1.7.1