zhouhn
2026-02-13 7f3f38f75bd61896ef441c5487937d587a1d81a2
新增车辆信息查询的service
3个文件已添加
179 ■■■■■ 已修改文件
xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/feign/FeignVmpOpenService.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/feign/VehicleBaseResp.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/VehicleInfoService.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/feign/FeignVmpOpenService.java
New file
@@ -0,0 +1,45 @@
package com.xiaopeng.automaticPilot.feign;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
@FeignClient(name = "xp-vmp-open-boot")
public interface FeignVmpOpenService {
    /**
     * 通过vin获取车辆基本信息
     *
     * @param vin
     * @return
     */
    @GetMapping("/logan/vehicleInfo/vin")
    VehicleBaseResp getVehicleInfoByVin(@RequestParam("vin") String vin, @RequestParam("respList") List<String> respList);
    /**
     * 查询车辆绑定信息, 通过vin获取车辆xpu id
     * typeList类型,1:XPUID,2:待扩展
     * 参数示例:?vin=TESTE290000000000&typeList=1,2
     * 返回示例:{
     *     "1": "01010101010101010101010101010101",
     *     "2": "xxx"
     * }
     */
    @GetMapping("/logan/vehicle/bind/info/query")
    Map<String, String> getVehicleBindInfoByVin(@RequestParam("vin") String vin, @RequestParam("typeList") List<String> typeList);
    /**
     * 通过车辆绑定信息获取车架号, 通过xpu id获取车辆vin
     * type类型,1:XPUID,2:待扩展
     * 参数示例:?value=00000000000000000000000000000001&type=1
     * 返回示例:{
     *     L1NSPGHB9RB900099
     * }
     */
    @GetMapping("/logan/vehicle/bind/info/getVin")
    String getVinByXpuId(@RequestParam("value") String xpuId, @RequestParam("type") Integer type);
}
xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/feign/VehicleBaseResp.java
New file
@@ -0,0 +1,83 @@
package com.xiaopeng.automaticPilot.feign;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class VehicleBaseResp implements Serializable {
    private static final long serialVersionUID = -1251766408952592117L;
    /**
     * 车架号
     */
    private String vin;
    /**
     * 大屏虚拟id(兼容旧接口)
     */
    private String vid;
    /**
     * 大屏硬件id
     */
    private String cduId;
    /**
     * sim卡id
     */
    private String iccid;
    /**
     * 物料编码id
     */
    private String vehicleMaterielId;
    /**
     * 车型code.
     * DB, DC, DE就是G3
     * ED 就是 P7
     * VehicleTypeType
     */
    private String vehicleTypeCode;
    /**
     * 车型名称,eg:D10,D20,D21..
     */
    private String vehicleTypeName;
    /**
     * 对外名称,eg:1.0,G3,P5...
     */
    private String vehicleSaleName;
    /**
     * 车牌信息(车牌号)
     */
    private String plateNo;
    /**
     * 车辆用途
     */
    private Integer usage;
    /**
     * 公告车型code
     */
    private String proclamationCode;
    /***
     * 给实时流
     */
    private String batchNo;
}
xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/VehicleInfoService.java
New file
@@ -0,0 +1,51 @@
package com.xiaopeng.automaticPilot.service;
import com.alibaba.fastjson.JSON;
import com.xiaopeng.automaticPilot.feign.FeignVmpOpenService;
import com.xiaopeng.common.core.exception.ServiceException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
 * @author zhouhn
 * 2026/2/13
 */
@Slf4j
@Service
public class VehicleInfoService {
    // 查询车管 车辆信息返回字段,用于按需返回字段
    public static final List<String> VEHICLE_RESP_LIST = Arrays.asList("vin", "vid", "cduId", "iccid", "vehicleMaterielId",
            "vehicleTypeCode", "vehicleTypeName", "vehicleSaleName" , "plateNo", "usage", "proclamationCode", "batchNo");
    // 查询车管绑定类型,1:XPUID,2:待扩展
    public static final String XPU_ID_TYPE = "1";
    // 查询车管 车辆xpuid信息返回字段,用于按需返回字段
    public static final List<String> TYPE_LIST = Collections.singletonList("1");
    @Autowired
    private FeignVmpOpenService feignVmpOpenService;
    /**
     * @description: 根据vin查询xpuId
     * @param: vin
     * @return: xpuId
     */
    public String getXpuIdByVin(String vin) throws Exception {
        Map<String, String> xpuIdMapping = feignVmpOpenService.getVehicleBindInfoByVin(vin, TYPE_LIST);
        log.info("getMqttPublishTopic vin,{},xpuIdMapping,{}", vin,  JSON.toJSONString(xpuIdMapping));
        if (xpuIdMapping == null || StringUtils.isEmpty(xpuIdMapping.get(XPU_ID_TYPE)) ) {
            log.error("根据vin查询车辆xpuid信息为空,vin={}", vin);
            throw new ServiceException("xpu id not exist for vin:" + vin);
        }
        return xpuIdMapping.get(XPU_ID_TYPE);
    }
}