liujie
2026-02-12 d80a20a9458abdbd601779c4ed8474ca092027bf
小程序接口
6个文件已修改
100 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/operation/VehiclePositionByVinDto.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/vehicleConvoy/XpVehicleClient.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/mango/VehiclePositionService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/pom.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicleConvoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 车辆列表