xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -26,6 +26,7 @@ import com.xiaopeng.operation.service.XpPointService; import com.xiaopeng.operation.utils.mango.VehiclePositionService; import com.xiaopeng.api.vo.operation.VehiclePositionVo; import lombok.SneakyThrows; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; @@ -215,8 +216,12 @@ * @param orderNo 订单号 * @param xpTradingStrategy 规则 */ @SneakyThrows private void processPushOrder(String quoteName, int count, String uid, String[] split, String orderNo, XpTradingStrategy xpTradingStrategy, String distance, String duration, String planRule) { System.out.println("进入推单环环节"); if(count==0){ count=1; } // 订单状态 R<XpOrder> xpOrderR = xpOrderClient.queryOrderByOrderNo(orderNo); if (xpOrderR.getCode() != 200) { @@ -229,7 +234,8 @@ // 找出围栏id Long xpElectronicFenceAreaId = xpOrder.getXpElectronicFenceAreaId(); XpElectronicFence xpElectronicFence = xpElectronicFenceMapper.selectById(xpElectronicFenceAreaId); Long electronicId = xpElectronicFenceAreaService.getById(xpElectronicFenceAreaId).getElectronicId(); XpElectronicFence xpElectronicFence = xpElectronicFenceMapper.selectById(electronicId); for (int i = 0; i < count; i++) { @@ -237,6 +243,7 @@ // 根据距离找车 // 车多则根据配置找具体车数量 根据距离最近 // 更改 暂不限制数量 List<VehiclePosition> positionList = vehiclePositionService.findAvailableVehiclesNearby(Double.parseDouble(split[0]), Double.parseDouble(split[1]), xpTradingStrategy.getOnePushDistance(), xpTradingStrategy.getSimultaneouslyOrderCount()); // 获取车辆的区域信息 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/mango/VehiclePositionService.java
@@ -14,10 +14,10 @@ @Service public class VehiclePositionService { @Resource private MongoTemplate mongoTemplate; /** * 查询附近指定距离内且状态正常的车辆 * @param longitude 经度 @@ -28,27 +28,26 @@ public List<VehiclePosition> findAvailableVehiclesNearby(double longitude, double latitude, double distanceInMeters,int num) { // 创建查询点 Point referencePoint = new Point(longitude, latitude); // 设置最大距离(MongoDB使用公里或米,这里转换为公里) distanceInMeters = distanceInMeters / 1000; try { // 创建查询点 Point referencePoint = new Point(longitude, latitude); // 构建查询条件 Query query = new Query(); query.addCriteria(Criteria.where("point") .near(referencePoint) .maxDistance(distanceInMeters)); query.addCriteria(Criteria.where("status").is(1)); // 运营中 query.addCriteria(Criteria.where("state").is(0)); // 空闲中 // 可以添加排序,按距离排序 query.with(Sort.by(Sort.Direction.ASC, "point")); // // 可以限制返回数量 // query.limit(num); return mongoTemplate.find(query, VehiclePosition.class); // 构建查询条件 Query query = new Query(); // 地理位置查询 query.addCriteria(Criteria.where("point") .near(referencePoint) .maxDistance(distanceInMeters)); query.with(Sort.by(Sort.Direction.ASC, "point")); return mongoTemplate.find(query, VehiclePosition.class); }catch (Exception e){ e.printStackTrace(); } return null; }