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 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; /** * 根据车辆VIN查询XPUID * @param vin * @return */ @GetMapping("/xpu/getXpuIdByVin") public R getXpuIdByVin(@RequestParam("vin") String vin){ String xpuId = xpuUtil.getXpuIdByVin(vin); return R.ok(xpuId); } /** * 判断车辆是否能启动L4自动驾驶能力 */ @PostMapping("/xpu/v1/autopilot/L4/checkAvailable") public XpCommonResponse 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 capabilities = new ArrayList<>(); // 默认支持VPD capabilities.add("VPD"); try { R 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 initXpuStatus(@RequestBody @Valid XpuInitStatusRequest request) { log.info("XPU init status report: {}", request); return XpCommonResponse.ok(null); } }