From 8d0f9a9592013d00731008ee38e4414765e85921 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 12 二月 2026 17:22:41 +0800
Subject: [PATCH] 小程序接口
---
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/map/XpMapClient.java | 2 +-
xp-robotaxi-common/xp-common-redis/src/main/java/com/xiaopeng/common/redis/service/RedisService.java | 7 ++++---
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPricingServiceImpl.java | 18 +++++++++---------
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java | 12 +++++++++---
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java | 7 ++++++-
5 files changed, 29 insertions(+), 17 deletions(-)
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/map/XpMapClient.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/map/XpMapClient.java
index 45f77d0..11414e5 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/map/XpMapClient.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/map/XpMapClient.java
@@ -14,7 +14,6 @@
@FeignClient(contextId = "XpMapClient", value = ServiceNameConstantsEnum.XP_MAP_SERVICE, fallbackFactory = XpMapClientFallbackFactory.class)
public interface XpMapClient {
-
/**
* 获取距离和时长
* @param dto
@@ -24,6 +23,7 @@
R<RouteVo> getDistanceAndDuration(@RequestBody RouteAndFareDto dto);
+
/**
* 判断是否同一经营区域
* @param dto
diff --git a/xp-robotaxi-common/xp-common-redis/src/main/java/com/xiaopeng/common/redis/service/RedisService.java b/xp-robotaxi-common/xp-common-redis/src/main/java/com/xiaopeng/common/redis/service/RedisService.java
index 718d003..5815245 100644
--- a/xp-robotaxi-common/xp-common-redis/src/main/java/com/xiaopeng/common/redis/service/RedisService.java
+++ b/xp-robotaxi-common/xp-common-redis/src/main/java/com/xiaopeng/common/redis/service/RedisService.java
@@ -173,8 +173,9 @@
}
// 获取第一个元素但不删除
- public Object getFirstElement(String key) {
- return redisTemplate.opsForList().index(key, 0);
+ public String getFirstElement(String key) {
+ String index = (String) redisTemplate.opsForList().index(key, 0);
+ return index;
}
// 获取第一个元素并删除(弹出)
@@ -374,7 +375,7 @@
*/
public Set<String> getQuoteMatchName(String name) {
// 模糊查询key为name的值
- Set<String> keys = redisTemplate.keys("*" + name );
+ Set<String> keys = redisTemplate.keys(name + "*");
return keys;
}
}
diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java
index 7b72893..45ebfa8 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java
@@ -5,6 +5,7 @@
import com.alibaba.fastjson.JSONObject;
import com.xiaopeng.api.dto.operation.LonLatDto;
import com.xiaopeng.api.vo.operation.RouteVo;
+import com.xiaopeng.common.core.utils.HttpUtils;
import com.xiaopeng.map.mangodb.service.XpGeoFencingPolygonService;
import com.xiaopeng.map.utils.mangoUtils.MongoGeoFenceUtil;
import org.springframework.beans.factory.annotation.Autowired;
@@ -54,11 +55,15 @@
params.put("start", start.getLongitude() + "," + start.getLatitude());
params.put("end", end.getLongitude() + "," + end.getLatitude());
params.put("routeUserType",2);
- params.put("voidPolygons", avoidRoads);
+ if(avoidRoads!=null && !avoidRoads.isEmpty()){
+ params.put("voidPolygons", avoidRoads);
+ }
if(routePlanRule!=null){
params.put("strategy", routePlanRule);
}
+ String post = HttpUtils.post(url, JSON.toJSONString(params));
+ System.out.println("高德地图返回结果:"+ post);
String forObject = restTemplate.getForObject(url, String.class, params);
JSONObject jsonObject = JSON.parseObject(forObject);
String data = jsonObject.getString("data");
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPricingServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPricingServiceImpl.java
index c61391c..e408dc5 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPricingServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPricingServiceImpl.java
@@ -396,11 +396,11 @@
// 获取起步里程
- XpPricing xpPricing = this.baseMapper.selectOne(new LambdaQueryWrapper<XpPricing>().eq(XpPricing::getCityId, dto.getOpenCityId()));
- Integer startMileage = XpPricingUtil.getStartMileage(xpPricing.getStartingFareJson());
- if (startMileage == null) {
- throw new ServiceException("当前区域未开通服务", I18nKeyConstant.NO_CURRENT_REGION);
- }
+// XpPricing xpPricing = this.baseMapper.selectOne(new LambdaQueryWrapper<XpPricing>().eq(XpPricing::getCityId, dto.getOpenCityId()));
+// Integer startMileage = XpPricingUtil.getStartMileage(xpPricing.getStartingFareJson());
+// if (startMileage == null) {
+// throw new ServiceException("当前区域未开通服务", I18nKeyConstant.NO_CURRENT_REGION);
+// }
// 根据id获取手机号
@@ -417,7 +417,7 @@
// 生成订单数据
XpOrder xpOrder = new XpOrder();
- xpOrder.setStartMileage(Double.valueOf(startMileage));
+// xpOrder.setStartMileage(Double.valueOf(startMileage));
xpOrder.setAppUserId(Long.valueOf(uid));
xpOrder.setOrderNumber("XP" + System.currentTimeMillis());
@@ -473,10 +473,10 @@
Integer distance = 0;
Integer duration = 0;
if (distanceAndDuration.getCode() != 200) {
- throw new ServiceException("订单生成失败", I18nKeyConstant.ORDER_CREATE_FAIL);
+// throw new ServiceException("订单生成失败", I18nKeyConstant.ORDER_CREATE_FAIL);
}
- distance = distanceAndDuration.getData().getDistance();
- duration = distanceAndDuration.getData().getDuration();
+// distance = distanceAndDuration.getData().getDistance();
+// duration = distanceAndDuration.getData().getDuration();
// 产生订单
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
index 22acf2e..5e710ef 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -83,18 +83,18 @@
/**
* 5秒执行一次
*/
-// @Scheduled(cron = "0/5 * * * * ?")
+ @Scheduled(cron = "0/5 * * * * ?")
public void taskOrder() {
System.out.println("5秒执行一次");
Set<String> quoteMatchName = redisService.getQuoteMatchName(CacheConstants.QUEUE_POINT_ID);
for (String name : quoteMatchName) {
- Object firstElement = redisService.getFirstElement(name);
+ String firstElement = redisService.getFirstElement(name);
if (firstElement != null) {
String[] split = firstElement.toString().split("_");
// 如果市未处理 创建新任务
if (split[2].equals("0")) {
// 状态改为处理中
- redisService.updateFirst(name, split[0] + "_" + split[1] + "_1");
+// redisService.updateFirst(name, split[0] + "_" + split[1] + "_1"+split[3]+split[4]+split[5]+split[6]);
threadPoolTaskExecutor.submit(() -> {
orderProcess(name, firstElement.toString());
});
@@ -110,6 +110,7 @@
* @param firstElement 队列第一个元素
*/
private void orderProcess(String quoteName, String firstElement) {
+ System.out.println("进入处理环节");
XpTradingStrategy xpTradingStrategy = xpTradingStrategyService.getOne(null);
String orderId = firstElement.split("_")[0];
String lonLat = firstElement.split("_")[1];
@@ -207,6 +208,7 @@
* @param xpTradingStrategy 规则
*/
private void processPushOrder(String quoteName, int count, String uid, String[] split, String orderNo, XpTradingStrategy xpTradingStrategy, String distance, String duration, String planRule) {
+ System.out.println("进入推单环环节");
// 订单状态
R<XpOrder> xpOrderR = xpOrderClient.queryOrderByOrderNo(orderNo);
if (xpOrderR.getCode() != 200) {
@@ -217,9 +219,13 @@
}
for (int i = 0; i < count; i++) {
+
+ System.out.println("进入找车环节");
// 根据距离找车
// 车多则根据配置找具体车数量 根据距离最近
List<VehiclePosition> positionList = vehiclePositionService.findAvailableVehiclesNearby(Double.parseDouble(split[0]), Double.parseDouble(split[1]), xpTradingStrategy.getOnePushDistance(), xpTradingStrategy.getSimultaneouslyOrderCount());
+
+
List<VehiclePositionVo> availableVehiclesNearby = BeanUtil.copyToList(positionList, VehiclePositionVo.class);
if (!availableVehiclesNearby.isEmpty()) {
--
Gitblit v1.7.1