From e7311db7b916fb597ef3fa23b54222a1ca96dcc8 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 13 二月 2026 14:52:31 +0800
Subject: [PATCH] feat(order): 添加订单弹出功能和地理查询实体迁移
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java | 40 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 40 insertions(+), 0 deletions(-)
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
index a169094..f89847b 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -12,6 +12,7 @@
import com.xiaopeng.api.dto.order.GetOrderNumDto;
import com.xiaopeng.api.dto.order.HistoryEndPointsDto;
import com.xiaopeng.api.dto.order.HistoryStartPointsDto;
+import com.xiaopeng.api.dto.order.PopOrderDto;
import com.xiaopeng.api.dto.pushMessage.SendMessageDTO;
import com.xiaopeng.api.dto.statistics.DailyCountDTO;
import com.xiaopeng.api.dto.statistics.OrderStatisticsDTO;
@@ -28,6 +29,7 @@
import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetVehicleClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
import com.xiaopeng.api.model.account.XpAppUser;
+import com.xiaopeng.api.model.operation.XpGeoQueryEntity;
import com.xiaopeng.api.model.operation.XpPoint;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.order.XpOrderCancel;
@@ -71,11 +73,13 @@
import com.xiaopeng.order.utils.holiday.HolidayUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.transaction.core.TransactionType;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
@@ -1590,6 +1594,42 @@
/**
+ * 成功操作下发命令后调用 用于弹出redis队列的获取成功的数据
+ * @param dto
+ */
+ @Override
+ @Transactional
+// @ShardingTransactionType(TransactionType.BASE)
+ public void popOrder(PopOrderDto dto) {
+
+ XpOrder order = this.getById(dto.getOrderId());
+ order.setAcceptanceTime(LocalDateTime.now());
+ order.setVehicleId(dto.getXpVehicleId());
+ order.setStatus(2);
+
+ // Redis弹出这个队列元素
+ // value 订单Id_经纬度_状态_用户id_订单编号_距离_时间
+ String popFirstElement = redisService.popFirstElement(dto.getQueueName());
+ XpGeoQueryEntity xpGeoQueryEntity = new XpGeoQueryEntity();
+ String[] split = popFirstElement.split("_");
+ xpGeoQueryEntity.setOrderId(split[0]);
+ String[] split1 = split[1].split(",");
+ xpGeoQueryEntity.setLocation(new GeoJsonPoint(Double.parseDouble(split1[0]), Double.parseDouble(split1[1])));
+ xpGeoQueryEntity.setTimestamp(new Date());
+ // 计算2个时间的秒数
+ LocalDateTime createTime = order.getCreateTime();
+ LocalDateTime acceptanceTime = order.getAcceptanceTime();
+ xpGeoQueryEntity.setSeconds((int) Duration.between(createTime, acceptanceTime).getSeconds());
+ String currentTimeSlot = DateUtils.getCurrentTimeSlot();
+ xpGeoQueryEntity.setTime(currentTimeSlot);
+ // 存mongo数据
+ xpPricingClient.saveXpGeoQueryEntity(xpGeoQueryEntity);
+ this.updateById(order);
+
+ }
+
+
+ /**
* 获取当前用户正在执行的订单
*
* @param uid
--
Gitblit v1.7.1