xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/operation/VehiclePositionByVinDto.java
@@ -13,8 +13,8 @@ @NoArgsConstructor public class VehiclePositionByVinDto { // 区域id private Long areaId; // 围栏id private Long fenceId; // 车辆vin private List<String> vinList; xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/vehicleConvoy/XpVehicleClient.java
@@ -69,6 +69,6 @@ /** * 查询车辆信息 进行筛选 */ @PostMapping("/logan/vehicle/queryVehiclePositionByVin") R<List<VehiclePositionVo>> queryVehiclePositionByVin(@RequestBody VehiclePositionByVinDto dto); @PostMapping("/inner/vehicle/queryVehiclePositionByVin") R<List<String>> queryVehiclePositionByVin(@RequestBody VehiclePositionByVinDto dto); } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -10,6 +10,7 @@ import com.xiaopeng.api.feignClient.vehicleConvoy.UserVehicleClient; import com.xiaopeng.api.feignClient.vehicleConvoy.VehicleControlClient; import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient; import com.xiaopeng.api.model.operation.XpElectronicFence; import com.xiaopeng.api.model.operation.XpTradingStrategy; import com.xiaopeng.api.model.order.XpOrder; import com.xiaopeng.api.vo.automaticPilot.VehiclePosition; @@ -18,6 +19,7 @@ import com.xiaopeng.common.core.constant.CacheConstants; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.redis.service.RedisService; import com.xiaopeng.operation.mapper.XpElectronicFenceMapper; import com.xiaopeng.operation.service.IXpElectronicFenceAreaService; import com.xiaopeng.operation.service.IXpTradingStrategyService; import com.xiaopeng.operation.service.XpPointService; @@ -81,6 +83,9 @@ threadPoolTaskExecutor.setThreadNamePrefix("taskOrder-"); threadPoolTaskExecutor.initialize(); } @Autowired private XpElectronicFenceMapper xpElectronicFenceMapper; /** * 5秒执行一次 @@ -221,6 +226,10 @@ } XpOrder xpOrder = xpOrderR.getData(); // 找出围栏id Long xpElectronicFenceAreaId = xpOrder.getXpElectronicFenceAreaId(); XpElectronicFence xpElectronicFence = xpElectronicFenceMapper.selectById(xpElectronicFenceAreaId); for (int i = 0; i < count; i++) { System.out.println("进入找车环节"); @@ -236,12 +245,18 @@ List<String> vinList = positionList.stream().map(VehiclePosition::getVin).collect(Collectors.toList()); // 获取车辆的信息 筛选出可用车辆 R<List<VehiclePositionVo>> vehiclePositionVos = xpVehicleClient.queryVehiclePositionByVin(new VehiclePositionByVinDto(xpOrder.getXpElectronicFenceAreaId(), vinList, xpTradingStrategy.getSimultaneouslyOrderCount())); R<List<String>> vehiclePositionVos = xpVehicleClient.queryVehiclePositionByVin(new VehiclePositionByVinDto(xpElectronicFence.getId(), vinList, xpTradingStrategy.getSimultaneouslyOrderCount())); if(vehiclePositionVos.getCode()!=200){ continue; } List<VehiclePositionVo> availableVehiclesNearby =vehiclePositionVos.getData(); List<VehiclePositionVo> availableVehiclesNearby = BeanUtil.copyToList(positionList, VehiclePositionVo.class); List<String> data = vehiclePositionVos.getData(); // 找出符合条件的 availableVehiclesNearby = availableVehiclesNearby.stream().filter(e->data.contains(e.getVin())).collect(Collectors.toList()); // List<VehiclePositionVo> availableVehiclesNearby =vehiclePositionVos.getData(); if (!availableVehiclesNearby.isEmpty()) { if (availableVehiclesNearby.size() > 1) { xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/mango/VehiclePositionService.java
@@ -40,7 +40,7 @@ .near(referencePoint) .maxDistance(distanceInMeters)); query.addCriteria(Criteria.where("status").is(1)); // 运营中 query.addCriteria(Criteria.where("state").is(1)); // 接单中 query.addCriteria(Criteria.where("state").is(0)); // 空闲中 // 可以添加排序,按距离排序 query.with(Sort.by(Sort.Direction.ASC, "point")); xp-robotaxi-order-boot/pom.xml
@@ -15,14 +15,14 @@ </description> <dependencies> <!-- <dependency>--> <!-- <groupId>com.alibaba.cloud</groupId>--> <!-- <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>--> <!-- </dependency>--> <!-- <dependency>--> <!-- <groupId>com.alibaba.cloud</groupId>--> <!-- <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>--> <!-- </dependency>--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> @@ -120,21 +120,23 @@ </dependency> <dependency> <groupId>com.xiaopeng.logan</groupId> <artifactId>logan-starter-core</artifactId> <version>2.3.5</version> </dependency> <dependency> <groupId>com.xiaopeng.logan</groupId> <artifactId>logan-commons-legacy</artifactId> <version>2.3.5</version> </dependency> <dependency> <groupId>com.xiaopeng.logan</groupId> <artifactId>logan2-namor-client</artifactId> <version>1.16.0</version> </dependency> <!-- <dependency>--> <!-- <groupId>com.xiaopeng.logan</groupId>--> <!-- <artifactId>logan-starter-core</artifactId>--> <!-- <version>2.3.5</version>--> <!-- </dependency>--> <!-- <dependency>--> <!-- <groupId>com.xiaopeng.logan</groupId>--> <!-- <artifactId>logan-commons-legacy</artifactId>--> <!-- <version>2.3.5</version>--> <!-- </dependency>--> <!-- <dependency>--> <!-- <groupId>com.xiaopeng.logan</groupId>--> <!-- <artifactId>logan2-namor-client</artifactId>--> <!-- <version>1.16.0</version>--> <!-- </dependency>--> </dependencies> <build> xp-robotaxi-vehicleConvoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
@@ -7,6 +7,8 @@ import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.xiaopeng.api.dto.operation.VehiclePositionByVinDto; import com.xiaopeng.api.dto.vehicleConvoy.VehicleTemperatureDto; import com.xiaopeng.api.feignClient.order.XpOrderClient; import com.xiaopeng.api.model.order.XpOrder; @@ -15,6 +17,7 @@ import com.xiaopeng.api.feignClient.order.XpOrderClient; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.api.model.vehicleConvoy.XpVehicleAnnualRecord; import com.xiaopeng.api.vo.operation.VehiclePositionVo; import com.xiaopeng.api.vo.vehicleConvoy.VehicleTemperatureVo; import com.xiaopeng.api.vo.vehicleConvoy.VehiclesCommandCallbackVo; import com.xiaopeng.common.core.domain.R; @@ -376,6 +379,26 @@ } /** * 查询车辆位置信息 做筛选 * @param dto * @return */ @PostMapping("/inner/vehicle/queryVehiclePositionByVin") public R<List<String>> queryVehiclePositionByVin(@RequestBody VehiclePositionByVinDto dto){ List<XpVehicle> list = xpVehicleService.list(new LambdaQueryWrapper<XpVehicle>().eq(XpVehicle::getState, 0).eq(XpVehicle::getStatus, 1).eq(XpVehicle::getElectronicId, dto.getFenceId()).in(XpVehicle::getVehicleVin, dto.getVinList())); if(list.isEmpty()){ return R.ok(new ArrayList<>()); }else { List<String> vehiclePositionVos = new ArrayList<>(list.size()); for (XpVehicle xpVehicle : list) { vehiclePositionVos.add(xpVehicle.getVehicleVin()); } return R.ok(vehiclePositionVos); } } /** * 查询可改派的车辆列表 * * @return 车辆列表