puzhibing
2026-03-13 297e64789d01866faaeabd484cbf656a51a60632
Merge remote-tracking branch 'origin/master'
18个文件已修改
145 ■■■■■ 已修改文件
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysLoginService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpChargingRecord.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleCleanController.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleRepairController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/vo/OperationRecordsVO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/IXpVehicleRepairService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpChargingRecordServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpVehicleRepairServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpChargingRecordMapper.xml 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/constant/I18nKeyConstant.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/resources/i18n/messages.properties 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/resources/i18n/messages_en_US.properties 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/resources/i18n/messages_zh_CN.properties 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpElectronicFenceServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/vo/FleetVehicleVO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysLoginService.java
@@ -107,7 +107,7 @@
        }
        if (Integer.valueOf("1").equals(user.getStatus())) {
            recordLogService.recordLogininfor(request, user.getId().intValue(), username, Constants.LOGIN_FAIL_STATUS, "用户已停用,请联系管理员");
            throw new ServiceException("您的账号:" + username + " 已禁用", I18nKeyConstant.LOGIN_ACCOUNT_DISABLED);
            throw new ServiceException("您的账号:" + username + " 已禁用", I18nKeyConstant.LOGIN_ACCOUNT_DISABLED, new Object[]{username});
        }
        passwordService.validate(user, password, request);
        // recordLogService.recordLogininfor(request, user.getId().intValue(), username, Constants.LOGIN_SUCCESS_STATUS, "登录成功");
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpChargingRecord.java
@@ -41,6 +41,8 @@
    @ApiModelProperty(value = "开始剩余电量")
    private Integer startRemainingBattery;
    @ApiModelProperty(value = "开始剩余续航")
    private Float startMileageRange;
    @ApiModelProperty(value = "开始充电图片")
    private String startChargingPicture;
@@ -51,7 +53,8 @@
    @ApiModelProperty(value = "结束剩余电量")
    private Integer endRemainingBattery;
    @ApiModelProperty(value = "结束剩余续航")
    private Float endMileageRange;
    @ApiModelProperty(value = "结束充电图片")
    private String endChargingPicture;
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleCleanController.java
@@ -107,6 +107,10 @@
        List<XpVehicleClean> records = page.getRecords();
        if(data==null){
            List<Long> userIds = records.stream().map(XpVehicleClean::getOperationsUserId).collect(Collectors.toList());
            if(userIds.isEmpty()){
                return R.ok(page);
            }
            R<List<XpOperationsUser>> r = xpOperationUserClient.listByIds(userIds);
            if(r.getData().isEmpty()){
                return R.ok(page);
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleRepairController.java
@@ -56,20 +56,12 @@
     */
    @ApiOperation(value = "车辆运维-车辆运维-车辆取回", tags = {"运维APP-车辆管理"})
    @PostMapping("/api/v1/vehicleRepair/saveReturnRepair")
    public R<String> saveReturnRepair(@RequestBody XpVehicleRepairReturnDTO dto) {
    public R<String> saveReturnRepair(@Validated @RequestBody XpVehicleRepairReturnDTO dto) {
        Long id = tokenService.getLoginOperationUser().getId();
        if (dto.getRepairMoney().toString().length() > 200) {
            throw new ServiceException("维修费用不能超过200字符", I18nKeyConstant.REPAIR_MONEY_TOO_LONG);
        }
        XpVehicleRepair xpVehicleRepair = xpVehicleRepairService.getById(dto.getId());
        xpVehicleRepair.setVehicleId(null);
        // 修改车辆取回信息
        xpVehicleRepair.setRepairMoney(dto.getRepairMoney());
        xpVehicleRepair.setRepairMoneyDetail(dto.getRepairMoneyDetail());
        xpVehicleRepair.setReturnUserId(id);
        xpVehicleRepair.setReturnTime(LocalDateTime.now());
        xpVehicleRepairService.updateById(xpVehicleRepair);
        xpVehicleRepairService.saveReturnRepair(dto,id);
        return R.ok();
    }
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/vo/OperationRecordsVO.java
@@ -42,4 +42,10 @@
    @ApiModelProperty(value = "结束剩余电量")
    private Integer endRemainingBattery;
    @ApiModelProperty(value = "开始剩余续航")
    private Float startMileageRange;
    @ApiModelProperty(value = "结束剩余续航")
    private Float endMileageRange;
}
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/IXpVehicleRepairService.java
@@ -3,6 +3,7 @@
import com.xiaopeng.api.model.maintenance.XpVehicleRepair;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.maintenance.dto.XpVehicleRepairReturnDTO;
import com.xiaopeng.maintenance.dto.XpVehicleRepairStartDTO;
import com.xiaopeng.maintenance.model.query.XpVehicleRepairPageQuery;
import com.xiaopeng.maintenance.model.vo.XpVehicleRepairVO;
@@ -50,4 +51,12 @@
     * @param id
     */
    void saveRepair(XpVehicleRepairStartDTO dto, Long id);
    /**
     * 保存车辆维修结束信息
     *
     * @param dto
     * @param id
     */
    void saveReturnRepair(XpVehicleRepairReturnDTO dto, Long id);
}
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpChargingRecordServiceImpl.java
@@ -8,6 +8,7 @@
import com.xiaopeng.api.model.maintenance.XpChargingRecord;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.maintenance.model.query.XpChargingRecordPageQuery;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
@@ -20,6 +21,9 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -42,6 +46,8 @@
    private XpVehicleClient xpVehicleClient;
    @Autowired
    private XpOperationUserClient xpOperationUserClient;
    @Autowired
    private MongoTemplate mongoTemplate;
    @Override
    public void startCharging(XpChargingRecordStartDTO dto, Long id) {
        // 创建车辆充电记录
@@ -51,6 +57,17 @@
        xpChargingRecord.setVehicleId(dto.getVehicleId());
        xpChargingRecord.setStartTime(LocalDateTime.now());
        xpChargingRecord.setStartOperationsUserId(id);
        // 查询车辆信息
        XpVehicle xpVehicle = xpVehicleClient.queryById(dto.getVehicleId()).getData();
        if(Objects.nonNull(xpVehicle)){
            // 查询车辆的续航里程
            VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class);
            if(Objects.nonNull(vehiclePosition)){
                xpChargingRecord.setStartMileageRange(vehiclePosition.getMileageRange());
            }else {
                xpChargingRecord.setStartMileageRange(0F);
            }
        }
        this.save(xpChargingRecord);
    }
@@ -58,11 +75,22 @@
    public void stopCharging(XpChargingRecordStopDTO dto, Long id) {
        // 查询车辆充电记录  进行修改
        XpChargingRecord xpChargingRecord = this.getById(dto.getId());
        // 查询车辆信息
        XpVehicle xpVehicle = xpVehicleClient.queryById(xpChargingRecord.getVehicleId()).getData();
        xpChargingRecord.setVehicleId(null);
        xpChargingRecord.setEndChargingPicture(dto.getEndChargingPicture());
        xpChargingRecord.setEndRemainingBattery(dto.getEndRemainingBattery());
        xpChargingRecord.setEndTime(LocalDateTime.now());
        xpChargingRecord.setEndOperationsUserId(id);
        if(Objects.nonNull(xpVehicle)){
            // 查询车辆的续航里程
            VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class);
            if(Objects.nonNull(vehiclePosition)){
                xpChargingRecord.setStartMileageRange(vehiclePosition.getMileageRange());
            }else {
                xpChargingRecord.setStartMileageRange(0F);
            }
        }
        this.updateById(xpChargingRecord);
    }
@@ -88,7 +116,7 @@
        }
        XpOperationsUser operationsUserEnd = xpOperationUserClient.queryById(xpChargingRecordVO.getEndOperationsUserId()).getData();
        if (Objects.nonNull(operationsUserEnd)) {
            xpChargingRecordVO.setOperatorStartName(operationsUserEnd.getNickName());
            xpChargingRecordVO.setOperatorEndName(operationsUserEnd.getNickName());
        }
        return xpChargingRecordVO;
    }
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpVehicleRepairServiceImpl.java
@@ -12,6 +12,7 @@
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.maintenance.dto.XpVehicleRepairReturnDTO;
import com.xiaopeng.maintenance.dto.XpVehicleRepairStartDTO;
import com.xiaopeng.maintenance.mapper.XpVehicleRepairMapper;
import com.xiaopeng.maintenance.model.query.XpVehicleRepairPageQuery;
@@ -67,7 +68,7 @@
        }
        XpOperationsUser operationsUserEnd = xpOperationUserClient.queryById(xpVehicleRepairVO.getReturnUserId()).getData();
        if (Objects.nonNull(operationsUserEnd)) {
            xpVehicleRepairVO.setOperatorStartName(operationsUserEnd.getNickName());
            xpVehicleRepairVO.setOperatorEndName(operationsUserEnd.getNickName());
        }
        return xpVehicleRepairVO;
    }
@@ -222,4 +223,22 @@
            xpVehicleClient.updateVehicleById(xpVehicle);
        }
    }
    @Override
    public void saveReturnRepair(XpVehicleRepairReturnDTO dto, Long id) {
        XpVehicleRepair xpVehicleRepair = this.getById(dto.getId());
        // 查询车辆信息
        XpVehicle xpVehicle = xpVehicleClient.queryById(xpVehicleRepair.getVehicleId()).getData();
        if(Objects.nonNull(xpVehicle)){
            // 修改车辆状态
            xpVehicle.setOperatingStatus(1);
            xpVehicleClient.updateVehicleById(xpVehicle);
        }
        xpVehicleRepair.setVehicleId(null);
        // 修改车辆取回信息
        xpVehicleRepair.setRepairMoney(dto.getRepairMoney());
        xpVehicleRepair.setRepairMoneyDetail(dto.getRepairMoneyDetail());
        xpVehicleRepair.setReturnUserId(id);
        xpVehicleRepair.setReturnTime(LocalDateTime.now());
    }
}
xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpChargingRecordMapper.xml
@@ -11,6 +11,7 @@
    <select id="operationRecords" resultType="com.xiaopeng.maintenance.model.vo.OperationRecordsVO">
        SELECT xcr.id, xcr.vehicle_id, xcr.start_remaining_battery,xcr.end_remaining_battery,
               xcr.start_mileage_range,xcr.end_mileage_range,
               xcr.start_operations_user_id AS operationsUserId,xcr.start_time AS operationTime
        FROM xp_charging_record xcr
        WHERE xcr.is_deleted = 0
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/constant/I18nKeyConstant.java
@@ -97,4 +97,7 @@
    String POINT_NUMBER_LOCK_FAIL = "point.number.lock.fail";
    // 点位-编号解析失败
    String POINT_NUMBER_PARSE_FAIL = "point.number.parse.fail";
    // 点位删除-存在关联巡游点位
    String POINT_DELETE_HAS_CRUISE_PLAN_POINT = "point.delete.has.cruise.plan.point";
}
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java
@@ -4,11 +4,13 @@
import com.xiaopeng.api.dto.operation.PointAddDto;
import com.xiaopeng.api.dto.operation.PointUpdateDto;
import com.xiaopeng.api.dto.operation.XpPointEnableDisableDto;
import com.xiaopeng.api.model.operation.XpCruisePlanPoint;
import com.xiaopeng.api.model.operation.XpElectronicFence;
import com.xiaopeng.api.model.operation.XpElectronicFenceArea;
import com.xiaopeng.api.model.operation.XpPoint;
import com.xiaopeng.api.query.operation.PointListQuery;
import com.xiaopeng.api.query.operation.PointPageListListQuery;
import com.xiaopeng.map.constant.I18nKeyConstant;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.utils.WebUtils;
@@ -16,12 +18,14 @@
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.api.dto.map.XpPointExportExcelQuery;
import com.xiaopeng.map.exportExcel.XpPointExportExcel;
import com.xiaopeng.map.mapper.XpCruisePlanPointMapper;
import com.xiaopeng.map.mangodb.service.XpGeoFencingPolygonService;
import com.xiaopeng.map.service.XpElectronicFenceAreaService;
import com.xiaopeng.map.service.XpElectronicFenceService;
import com.xiaopeng.map.service.XpPointService;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -67,6 +71,8 @@
    private XpElectronicFenceService xpElectronicFenceService;
    @Resource
    private XpGeoFencingPolygonService xpGeoFencingPolygonService;
    @Resource
    private XpCruisePlanPointMapper xpCruisePlanPointMapper;
    @ApiOperation(value = "获取所有运营中的区域", response = XpElectronicFenceArea.class)
@@ -154,9 +160,9 @@
    @PostMapping("/add")
    @ResponseBody
    @ApiOperation(value = "新增点位")
    public R<XpPoint> add(@Validated @RequestBody PointAddDto pointAddDto) {
        if (!xpGeoFencingPolygonService.isInFence(pointAddDto.getPointLon(), pointAddDto.getPointLat(), pointAddDto.getFenceId(), "prohibited_area")) {
            return R.fail("in_prohibited_area");
    public R<?> add(@Validated @RequestBody PointAddDto pointAddDto) {
        if (xpGeoFencingPolygonService.isInFence(pointAddDto.getPointLon(), pointAddDto.getPointLat(), pointAddDto.getFenceId(), "prohibited_area")) {
            return R.ok("in_prohibited_area");
        }
        return R.ok(xpPointService.addPointWithGeneratedNumber(pointAddDto));
    }
@@ -168,7 +174,22 @@
    @ResponseBody
    @ApiOperation(value = "删除点位")
    public R deletePoint(@RequestParam("ids") String ids) {
        xpPointService.removeBatchByIds(Arrays.stream(ids.split(",")).map(Long::parseLong).collect(Collectors.toList()));
        List<Long> pointIds = Arrays.stream(ids.split(","))
                .map(String::trim)
                .filter(s -> !s.isEmpty())
                .map(Long::parseLong)
                .distinct()
                .collect(Collectors.toList());
        if (pointIds.isEmpty()) {
            return R.ok();
        }
        Long relatedCount = xpCruisePlanPointMapper.selectCount(
                new LambdaQueryWrapper<XpCruisePlanPoint>().in(XpCruisePlanPoint::getPointId, pointIds)
        );
        if (relatedCount != null && relatedCount > 0) {
            throw new ServiceException("操作失败,该点位有关联的巡游点位", I18nKeyConstant.POINT_DELETE_HAS_CRUISE_PLAN_POINT);
        }
        xpPointService.removeBatchByIds(pointIds);
        return R.ok();
    }
@@ -184,14 +205,14 @@
        if (!xpPoint.getElectronicAreaId().equals(pointAddDto.getElectronicAreaId())) {
            BeanUtils.copyProperties(pointAddDto, xpPoint);
            if (!xpGeoFencingPolygonService.isInFence(pointAddDto.getPointLon(), pointAddDto.getPointLat(), pointAddDto.getFenceId(), "prohibited_area")) {
                return R.fail("in_prohibited_area");
            if (xpGeoFencingPolygonService.isInFence(pointAddDto.getPointLon(), pointAddDto.getPointLat(), pointAddDto.getFenceId(), "prohibited_area")) {
                return R.ok("in_prohibited_area");
            }
            xpPointService.updateById(xpPoint);
        } else {
            if (!xpGeoFencingPolygonService.isInFence(pointAddDto.getPointLon(), pointAddDto.getPointLat(), pointAddDto.getFenceId(), "prohibited_area")) {
                return R.fail("in_prohibited_area");
            if (xpGeoFencingPolygonService.isInFence(pointAddDto.getPointLon(), pointAddDto.getPointLat(), pointAddDto.getFenceId(), "prohibited_area")) {
                return R.ok("in_prohibited_area");
            }
            //先删除原有的数据,因为会存在点位的从属区域变化的情况,所以先删除原有的数据后添加新的数据重新分片到新的库中
xp-robotaxi-map-boot/src/main/resources/i18n/messages.properties
@@ -39,3 +39,4 @@
point.city.not.exist=城市信息不存在
point.number.lock.fail=点位编号生成繁忙,请稍后重试
point.number.parse.fail=点位编号生成失败(历史编号格式异常)
point.delete.has.cruise.plan.point=操作失败,该点位有关联的巡游点位
xp-robotaxi-map-boot/src/main/resources/i18n/messages_en_US.properties
@@ -32,3 +32,4 @@
point.city.not.exist=City information does not exist
point.number.lock.fail=Point number generation is busy, please try again later
point.number.parse.fail=Point number generation failed (invalid historical number format)
point.delete.has.cruise.plan.point=Operation failed. This point is associated with cruise plan points.
xp-robotaxi-map-boot/src/main/resources/i18n/messages_zh_CN.properties
@@ -32,3 +32,4 @@
point.city.not.exist=城市信息不存在
point.number.lock.fail=点位编号生成繁忙,请稍后重试
point.number.parse.fail=点位编号生成失败(历史编号格式异常)
point.delete.has.cruise.plan.point=操作失败,该点位有关联的巡游点位
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpElectronicFenceServiceImpl.java
@@ -81,9 +81,6 @@
    @Override
    public PageInfo<XpElectronicFence> pageList(ElectronicPageListQuery query) {
        PageInfo<XpElectronicFence> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        if (StringUtils.isEmpty(query.getCreateSort())&& StringUtils.isEmpty(query.getUpdateSort())){
            query.setCreateSort("2");
        }
        List<XpElectronicFence> list = this.baseMapper.pageList(pageInfo, query);
        if (list.isEmpty()) {
            return new PageInfo<>();
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/vo/FleetVehicleVO.java
@@ -32,6 +32,12 @@
    @ApiModelProperty(value = "运营状态")
    private Integer operatingStatus;
    @ApiModelProperty(value = "车辆类型 1=在库 2=运营")
    private Integer vehicleType;
    @ApiModelProperty(value = "车辆状态 1=待完善 2=待运营 3=保险/年检过期")
    private Integer status;
    @ApiModelProperty(value = "运营状态描述")
    private String operatingStatusDesc;
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java
@@ -461,6 +461,8 @@
                    vo.setVehicleColor(vehicle.getVehicleColor());
                    vo.setVehicleModel(vehicle.getVehicleModel());
                    vo.setOperatingStatus(vehicle.getOperatingStatus());
                    vo.setVehicleType(vehicle.getVehicleType());
                    vo.setStatus(vehicle.getStatus());
                    vo.setProcurementSource(vehicle.getProcurementSource());
                    vo.setElectronicId(vehicle.getElectronicId());
                    vo.setElectronicName(electronicNameMap.get(vehicle.getElectronicId()));
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java
@@ -255,6 +255,7 @@
                XpVehicle xpVehicle = xpVehicleMapper.selectById(xpPolicyApplication.getVehicleId());
                xpPolicyApplicationVO.setPlateNumber(xpVehicle.getPlateNumber());
                xpPolicyApplicationVO.setVehicleCode(xpVehicle.getVehicleCode());
                xpPolicyApplicationVO.setAuditRemarks(xpPolicyApplication.getAuditRemarks());
                if (xpPolicyApplicationVO.getAuditStatus() == 2) {
                    xpPolicyApplicationVO.setPolicyInformation(xpVehicle.getPolicyInformation());
                }