zhouhn
2026-03-01 9cfb088df1f92c04eaa26c25419c02a84ee83a6a
增加XPU初始化请求接口
3个文件已添加
1个文件已修改
116 ■■■■■ 已修改文件
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/XpuVinController.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/dto/CheckL4AvailableRequest.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/dto/L4CapabilityVO.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/dto/XpuInitStatusRequest.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/XpuVinController.java
@@ -1,21 +1,33 @@
package com.xiaopeng.automaticPilot.controller;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.automaticPilot.dto.CheckL4AvailableRequest;
import com.xiaopeng.automaticPilot.dto.L4CapabilityVO;
import com.xiaopeng.automaticPilot.dto.XpCommonResponse;
import com.xiaopeng.automaticPilot.dto.XpuInitStatusRequest;
import com.xiaopeng.automaticPilot.util.XPUUtil;
import com.xiaopeng.common.core.domain.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Slf4j
@RestController
@RequestMapping("")
public class XpuVinController {
    @Resource
    private XPUUtil xpuUtil;
    @Resource
    private XpVehicleClient xpVehicleClient;
    /**
@@ -28,4 +40,47 @@
        String xpuId = xpuUtil.getXpuIdByVin(vin);
        return R.ok(xpuId);
    }
    /**
     * 判断车辆是否能启动L4自动驾驶能力
     */
    @PostMapping("/xpu/v1/autopilot/L4/checkAvailable")
    public XpCommonResponse<L4CapabilityVO> checkL4Available(@RequestBody @Valid CheckL4AvailableRequest request) {
        log.info("Check L4 available request: {}", request);
        L4CapabilityVO vo = new L4CapabilityVO();
        vo.setVin(request.getVin());
        vo.setUid(request.getUserId());
        List<String> capabilities = new ArrayList<>();
        // 默认支持VPD
        capabilities.add("VPD");
        try {
            R<XpVehicle> vehicleR = xpVehicleClient.findByVehicleVin(request.getVin());
            if (vehicleR != null && vehicleR.getCode() == 200 && vehicleR.getData() != null) {
                XpVehicle vehicle = vehicleR.getData();
                // 车辆类型:1=待完善 2=运营车辆
                // 只有运营车辆才支持RT
                if (Objects.equals(vehicle.getVehicleType(), 2)) {
                    capabilities.add("RT");
                }
            } else {
                log.warn("Vehicle not found for vin: {}", request.getVin());
            }
        } catch (Exception e) {
            log.error("Error querying vehicle info", e);
        }
        vo.setL4Capability(capabilities);
        return XpCommonResponse.ok(vo);
    }
    /**
     * XPU初始化状态上报
     */
    @PostMapping("/xpu/v1/autopilot/L4/init")
    public XpCommonResponse<Void> initXpuStatus(@RequestBody @Valid XpuInitStatusRequest request) {
        log.info("XPU init status report: {}", request);
        return XpCommonResponse.ok(null);
    }
}
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/dto/CheckL4AvailableRequest.java
New file
@@ -0,0 +1,12 @@
package com.xiaopeng.automaticPilot.dto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class CheckL4AvailableRequest {
    @NotBlank(message = "vin cannot be empty")
    private String vin;
    private Long userId;
}
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/dto/L4CapabilityVO.java
New file
@@ -0,0 +1,11 @@
package com.xiaopeng.automaticPilot.dto;
import lombok.Data;
import java.util.List;
@Data
public class L4CapabilityVO {
    private String vin;
    private Long uid;
    private List<String> l4Capability;
}
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/dto/XpuInitStatusRequest.java
New file
@@ -0,0 +1,30 @@
package com.xiaopeng.automaticPilot.dto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class XpuInitStatusRequest {
    @NotBlank
    private String vin;
    @NotBlank
    private String xpuId;
    @NotNull
    private RobotaxiAreaInfo robotaxiAreaInfo;
    @NotNull
    private Long timestamp;
    @Data
    public static class RobotaxiAreaInfo {
        @NotBlank
        private String mapId;
        @NotBlank
        private String mapVersion;
        @NotNull
        private Boolean downloaded;
        private String currentVersion;
        @NotBlank
        private String remark;
    }
}