puzhibing
2026-04-18 a783b6c315579493be67c9e6bfdb5e831a90e534
完善蓝牙解锁功能
新增加客服系统对接接口
7个文件已添加
7个文件已修改
441 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/vehicleConvoy/ServiceVehicleListDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/vehicleConvoy/XpVehicleClientFallbackFactory.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/vehicleConvoy/XpVehicleClient.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/CustomerServiceController.java 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/dto/UserOrderListDto.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpOrderService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/vo/OrderInfoVo.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/vo/ServiceOrderVo.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/vo/ServiceVehicleListVo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/vo/UserOrderListVo.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/IXpVehicleService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/vehicleConvoy/ServiceVehicleListDto.java
New file
@@ -0,0 +1,22 @@
package com.xiaopeng.api.dto.vehicleConvoy;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
@ApiModel
public class ServiceVehicleListDto {
    @ApiModelProperty("车牌号")
    private String plateNumber;
    @ApiModelProperty("vim码")
    private String vim;
    @ApiModelProperty("页码")
    @NotNull(message = "页码不能为空")
    private Integer pageNo;
    @ApiModelProperty("每页数量")
    @NotNull(message = "每页数量不能为空")
    private Integer pageSize;
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/vehicleConvoy/XpVehicleClientFallbackFactory.java
@@ -1,6 +1,7 @@
package com.xiaopeng.api.factory.vehicleConvoy;
import com.xiaopeng.api.dto.operation.VehiclePositionByVinDto;
import com.xiaopeng.api.dto.vehicleConvoy.ServiceVehicleListDto;
import com.xiaopeng.api.dto.vehicleConvoy.UpdateVehicleStateDto;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
@@ -12,6 +13,7 @@
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
@@ -105,6 +107,13 @@
            public R<Boolean> getVehicleTrunkOpenStatus(Long uid, Long id) {
                log.error("获取车辆后备箱开关状态失败,原因: {}", cause.getMessage());
                return R.fail("获取车辆后备箱开关状态失败:" + cause.getMessage());
            }};
            }
            @Override
            public R<List<XpVehicle>> getServiceVehicleList(ServiceVehicleListDto dto) {
                log.error("获取服务车辆列表失败,原因: {}", cause.getMessage());
                return R.fail("获取服务车辆列表失败:" + cause.getMessage());
            }
        };
    }
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/vehicleConvoy/XpVehicleClient.java
@@ -1,6 +1,7 @@
package com.xiaopeng.api.feignClient.vehicleConvoy;
import com.xiaopeng.api.dto.operation.VehiclePositionByVinDto;
import com.xiaopeng.api.dto.vehicleConvoy.ServiceVehicleListDto;
import com.xiaopeng.api.dto.vehicleConvoy.UpdateVehicleStateDto;
import com.xiaopeng.api.factory.vehicleConvoy.XpVehicleClientFallbackFactory;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
@@ -134,4 +135,13 @@
    @PostMapping("/logan/inner/vi/vehicle/getVehicleTrunkOpenStatus")
    R<Boolean> getVehicleTrunkOpenStatus(@RequestParam("uid") Long uid, @RequestParam("id") Long id);
    /**
     * 分页获取运营车辆列表
     * @param dto
     * @return
     */
    @PostMapping("/logan/inner/vehicle/getServiceVehicleList")
    R<List<XpVehicle>> getServiceVehicleList(@RequestBody ServiceVehicleListDto dto);
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/CustomerServiceController.java
New file
@@ -0,0 +1,144 @@
package com.xiaopeng.order.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xiaopeng.api.dto.account.UcUserInfo;
import com.xiaopeng.api.dto.vehicleConvoy.ServiceVehicleListDto;
import com.xiaopeng.api.feignClient.account.UserResourcesClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.utils.StringUtils;
import com.xiaopeng.order.dto.UserOrderListDto;
import com.xiaopeng.order.service.IXpOrderService;
import com.xiaopeng.order.vo.OrderInfoVo;
import com.xiaopeng.order.vo.ServiceOrderVo;
import com.xiaopeng.order.vo.ServiceVehicleListVo;
import com.xiaopeng.order.vo.UserOrderListVo;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 提供三方客服系统接口
 */
@RestController
@RequestMapping("/logan/rt/customerService")
public class CustomerServiceController {
    @Resource
    private XpVehicleClient xpVehicleClient;
    @Resource
    private IXpOrderService xpOrderService;
    @Resource
    private UserResourcesClient userResourcesClient;
    /**
     * 1. 判断 VIN 是否为 robotaxi 车辆
     * @param vim
     * @return
     */
    @GetMapping("/isRobotaxi/{vim}")
    @ApiOperation(value = "判断 VIN 是否为 robotaxi 车辆", notes = "客服系统对接")
    @ApiImplicitParam(name = "vim", value = "VIN码", required = true, dataType = "string", paramType = "path")
    public R<Boolean> isRobotaxi(@PathVariable String vim){
        if(StringUtils.isEmpty(vim)){
            return R.fail("VIM码不能为空");
        }
        XpVehicle xpVehicle = xpVehicleClient.findByVehicleVin(vim).getData();
        if(null != xpVehicle){
            return R.ok(true);
        }
        return R.ok(false);
    }
    /**
     * 2. 根据 VIN 查询在途/最近订单客户手机号
     * @param vim
     * @return
     */
    @GetMapping("/getServiceOrder/{vim}")
    @ApiOperation(value = "根据 VIN 查询在途/最近订单客户手机号", notes = "客服系统对接")
    @ApiImplicitParam(name = "vim", value = "VIN码", required = true, dataType = "string", paramType = "path")
    public R<ServiceOrderVo> getServiceOrder(@PathVariable String vim){
        if(StringUtils.isEmpty(vim)){
            return R.fail("VIM码不能为空");
        }
        XpVehicle xpVehicle = xpVehicleClient.findByVehicleVin(vim).getData();
        if(null == xpVehicle){
            return R.fail("VIM码不存在");
        }
        XpOrder one = xpOrderService.getOne(new QueryWrapper<XpOrder>().eq("vehicle_id", xpVehicle.getId())
                .eq("is_deleted", 0).last(" order by create_time desc limit 1"));
        if(null == one){
            return R.ok(new ServiceOrderVo());
        }
        ServiceOrderVo vo = new ServiceOrderVo();
        vo.setOrderId(one.getId());
        UcUserInfo ucUserInfo = userResourcesClient.getBaseUserByUid(one.getAppUserId().toString());
        vo.setCustomerPhone(null != ucUserInfo ? ucUserInfo.getMobile() : null);
        vo.setHasActiveOrder(!Arrays.asList(0, 8, 9, 10).contains(one.getStatus()));
        return R.ok(vo);
    }
    /**
     * 3. 获取当前在运营车辆列表
     * @param dto
     * @return
     */
    @PostMapping("/getServiceVehicleList")
    @ApiOperation(value = "获取当前在运营车辆列表", notes = "客服系统对接")
    public R<List<ServiceVehicleListVo>> getServiceVehicleList(@RequestBody ServiceVehicleListDto dto){
        R<List<XpVehicle>> serviceVehicleList = xpVehicleClient.getServiceVehicleList(dto);
        if(serviceVehicleList.getCode() != 200){
            return R.fail(serviceVehicleList.getMsg());
        }
        List<ServiceVehicleListVo> collect = serviceVehicleList.getData().stream().map(xpVehicle -> {
            ServiceVehicleListVo vo = new ServiceVehicleListVo();
            vo.setVim(xpVehicle.getVehicleVin());
            vo.setPlateNumber(xpVehicle.getPlateNumber());
            return vo;
        }).collect(Collectors.toList());
        return R.ok(collect);
    }
    /**
     * 4. 根据 UID 查询用户是否有 RT 订单 & 订单列表
     * @param dto
     * @return
     */
    @PostMapping("/getUserOrderList")
    @ApiOperation(value = "根据 UID 查询用户是否有 RT 订单 & 订单列表", notes = "客服系统对接")
    public R<List<UserOrderListVo>> getUserOrderList(@RequestBody UserOrderListDto dto){
        List<UserOrderListVo> userOrderList = xpOrderService.getUserOrderList(dto);
        return R.ok(userOrderList);
    }
    /**
     * 5. 根据订单号查询订单详情
     * @param orderId
     * @return
     */
    @GetMapping("/getOrderDetail/{orderId}")
    @ApiOperation(value = "根据订单号查询订单详情", notes = "客服系统对接")
    @ApiImplicitParam(name = "orderId", value = "订单ID", required = true, dataType = "Long", paramType = "path")
    public R<OrderInfoVo> getOrderDetail(@PathVariable Long orderId){
        if(null == orderId){
            return R.fail("订单ID不能为空");
        }
        return R.ok(xpOrderService.getOrderInfo(orderId));
    }
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/dto/UserOrderListDto.java
New file
@@ -0,0 +1,26 @@
package com.xiaopeng.order.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
@ApiModel
public class UserOrderListDto {
    @ApiModelProperty("用户id")
    @NotNull(message = "用户id不能为空")
    private Long uid;
    @ApiModelProperty("订单id")
    private Long orderId;
    @ApiModelProperty("订单状态")
    private Integer orderStatus;
    @ApiModelProperty("页码")
    @NotNull(message = "页码不能为空")
    private Integer pageNo;
    @ApiModelProperty("每页数量")
    @NotNull(message = "每页数量不能为空")
    private Integer pageSize;
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpOrderService.java
@@ -14,6 +14,7 @@
import com.xiaopeng.api.vo.order.XpPointInfoVo;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.order.dto.UserOrderListDto;
import com.xiaopeng.order.mangodb.model.OrderTrajectory;
import com.xiaopeng.order.model.dto.XpOrderCommentDto;
import com.xiaopeng.order.model.dto.XpOrderPayDto;
@@ -24,6 +25,10 @@
import com.xiaopeng.order.model.vo.XpOrderHistoryVO;
import com.xiaopeng.order.model.vo.XpOrderPageVO;
import com.xiaopeng.order.vo.OrderDetailVo;
import com.xiaopeng.order.vo.OrderInfoVo;
import com.xiaopeng.order.vo.UserOrderListVo;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import java.math.BigDecimal;
import java.util.List;
@@ -242,4 +247,19 @@
     */
    Integer getWaitPayOrderNum(String uid);
    /**
     * 根据 UID 查询用户是否有 RT 订单 & 订单列表
     * @param dto
     * @return
     */
    List<UserOrderListVo> getUserOrderList(UserOrderListDto dto);
    /**
     * 获取订单信息
     * @param orderId
     * @return
     */
    OrderInfoVo getOrderInfo(Long orderId);
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -7,6 +7,7 @@
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.ImmutableMap;
@@ -68,6 +69,7 @@
import com.xiaopeng.common.security.utils.SecurityUtils;
import com.xiaopeng.order.constant.I18nKeyConstant;
import com.xiaopeng.order.dto.MileageDto;
import com.xiaopeng.order.dto.UserOrderListDto;
import com.xiaopeng.order.job.base.QuartzManager;
import com.xiaopeng.order.job.base.TimeJobType;
import com.xiaopeng.order.job.jobs.*;
@@ -86,6 +88,8 @@
import com.xiaopeng.order.utils.*;
import com.xiaopeng.order.utils.holiday.HolidayUtil;
import com.xiaopeng.order.vo.OrderDetailVo;
import com.xiaopeng.order.vo.OrderInfoVo;
import com.xiaopeng.order.vo.UserOrderListVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
@@ -108,6 +112,7 @@
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
@@ -3800,4 +3805,45 @@
        );
        return num.intValue();
    }
    /**
     * 根据 UID 查询用户是否有 RT 订单 & 订单列表
     * @param dto
     * @return
     */
    @Override
    public List<UserOrderListVo> getUserOrderList(UserOrderListDto dto) {
        List<XpOrder> list = this.list(new QueryWrapper<XpOrder>().eq("app_user_id", dto.getUid())
                .eq("is_deleted", 0)
                .eq(dto.getOrderStatus() != null, "status", dto.getOrderStatus())
                .eq(dto.getOrderId() != null, "id", dto.getOrderId())
                .last(" order by create_time desc limit " + dto.getPageNo() + "," + dto.getPageSize())
        );
        List<UserOrderListVo> collect = list.stream().map(order -> {
            UserOrderListVo vo = new UserOrderListVo();
            vo.setOrderId(order.getId());
            vo.setOrderStatus(order.getStatus());
            vo.setOrderCreatedAt(order.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            XpPoint startPoint = xpPointClient.queryById(order.getStartPointId()).getData();
            vo.setPickupAddress(null != startPoint ? startPoint.getPointAddress() : null);
            XpPoint endPoint = xpPointClient.queryById(order.getEndPointId()).getData();
            vo.setDestAddress(null != endPoint ? endPoint.getPointAddress() : null);
            vo.setTotalPrice(order.getOrderMoney());
            return vo;
        }).collect(Collectors.toList());
        return collect;
    }
    /**
     * 获取订单详情
     * @param orderId
     * @return
     */
    @Override
    public OrderInfoVo getOrderInfo(Long orderId) {
        return null;
    }
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/vo/OrderInfoVo.java
New file
@@ -0,0 +1,51 @@
package com.xiaopeng.order.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel
public class OrderInfoVo {
    @ApiModelProperty("订单id")
    private Long orderId;
    @ApiModelProperty("订单状态(0=已取消,1=待接单,2=待出发,3=接驾中,4=待客上车,5=乘客已上车,6=服务中,7=待客下车,8=待付款,9=待评价,10=已完成)")
    private Integer orderStatus;
    @ApiModelProperty("预约上车点")
    private String pickupAddress;
    @ApiModelProperty("预约目的地")
    private String destAddress;
    @ApiModelProperty("靠边停车点")
    private String pullOverAddress;
    @ApiModelProperty("预计到达时间")
    private String estimatedArrivalTime;
    @ApiModelProperty("实际到达时间")
    private String actualArrivalTime;
    @ApiModelProperty("实际行驶里程(浮点数,如 21.1)")
    private BigDecimal actualMileage;
    @ApiModelProperty("订单总价")
    private BigDecimal totalPrice;
    @ApiModelProperty("起步价")
    private BigDecimal startPrice;
    @ApiModelProperty("等待费")
    private BigDecimal waitFee;
    @ApiModelProperty("里程费")
    private BigDecimal mileageFee;
    @ApiModelProperty("时长费")
    private BigDecimal durationFee;
    @ApiModelProperty("远途费")
    private BigDecimal longDistanceFee;
    @ApiModelProperty("优惠券使用金额")
    private BigDecimal couponDiscount;
    @ApiModelProperty("实际支付费用")
    private BigDecimal actualPayment;
    @ApiModelProperty("接单车辆 VIN")
    private String vin;
    @ApiModelProperty("接单车辆车牌号")
    private String plateNumber;
    @ApiModelProperty("取消原因类型(用户取消/系统取消/超时取消,仅已取消订单)")
    private String cancelReasonType;
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/vo/ServiceOrderVo.java
New file
@@ -0,0 +1,26 @@
package com.xiaopeng.order.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel
public class ServiceOrderVo {
    /**
     * 订单id
     */
    @ApiModelProperty("订单id")
    private Long orderId;
    /**
     * 客户手机号
     */
    @ApiModelProperty("客户手机号")
    private String customerPhone;
    /**
     * 是否有在途订单(布尔值)
     */
    @ApiModelProperty("是否有在途订单(布尔值)")
    private Boolean hasActiveOrder;
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/vo/ServiceVehicleListVo.java
New file
@@ -0,0 +1,15 @@
package com.xiaopeng.order.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel
public class ServiceVehicleListVo {
    @ApiModelProperty("vim码")
    private String vim;
    @ApiModelProperty("车牌号")
    private String plateNumber;
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/vo/UserOrderListVo.java
New file
@@ -0,0 +1,27 @@
package com.xiaopeng.order.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel
public class UserOrderListVo {
    @ApiModelProperty("订单id")
    private Long orderId;
    @ApiModelProperty("订单状态(0=已取消,1=待接单,2=待出发,3=接驾中,4=待客上车,5=乘客已上车,6=服务中,7=待客下车,8=待付款,9=待评价,10=已完成)")
    private Integer orderStatus;
    @ApiModelProperty("下单时间")
    private String orderCreatedAt;
    @ApiModelProperty("预约上车点")
    private String pickupAddress;
    @ApiModelProperty("预约目的地")
    private String destAddress;
    @ApiModelProperty("到达目的地时间")
    private String arrivedDestinationAt;
    @ApiModelProperty("支付金额")
    private BigDecimal totalPrice;
}
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
@@ -11,8 +11,10 @@
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mongodb.client.MongoCollection;
import com.xiaopeng.api.dto.operation.VehiclePositionByVinDto;
import com.xiaopeng.api.dto.vehicleConvoy.ServiceVehicleListDto;
import com.xiaopeng.api.dto.vehicleConvoy.UpdateVehicleStateDto;
import com.xiaopeng.api.dto.vehicleConvoy.VehicleTemperatureDto;
import com.xiaopeng.api.feignClient.maintenance.*;
@@ -1097,7 +1099,13 @@
    public R<String> generateBluetoothUnlockToken(){
    /**
     * 分页获取运营车辆列表
     * @param dto
     * @return
     */
    @PostMapping("/logan/inner/vehicle/getServiceVehicleList")
    public R<List<XpVehicle>> getServiceVehicleList(@RequestBody ServiceVehicleListDto dto){
        return R.ok(xpVehicleService.getServiceVehicleList(dto));
    }
}
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/IXpVehicleService.java
@@ -1,6 +1,8 @@
package com.xiaopeng.vehicleConvoy.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaopeng.api.dto.vehicleConvoy.ServiceVehicleListDto;
import com.xiaopeng.api.dto.vehicleConvoy.VehicleTemperatureDto;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.common.core.web.page.PageInfo;
@@ -8,6 +10,7 @@
import com.xiaopeng.vehicleConvoy.model.importExcel.XpVehicleImportExcel;
import com.xiaopeng.vehicleConvoy.model.query.*;
import com.xiaopeng.vehicleConvoy.model.vo.XpVehicleVO;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@@ -198,4 +201,12 @@
     * @return
     */
    Boolean getVehicleTrunkOpenStatus(String uid, Long id);
    /**
     * 分页获取运营车辆列表
     * @param dto
     * @return
     */
    List<XpVehicle> getServiceVehicleList(ServiceVehicleListDto dto);
}
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
@@ -5,12 +5,14 @@
import cn.hutool.core.lang.Validator;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.ImmutableMap;
import com.xiaopeng.api.dto.pushMessage.SendMessageDTO;
import com.xiaopeng.api.dto.vehicleConvoy.ServiceVehicleListDto;
import com.xiaopeng.api.dto.vehicleConvoy.VehicleTemperatureDto;
import com.xiaopeng.api.feignClient.automaticPilot.XpuVinClient;
import com.xiaopeng.api.feignClient.map.AdcFencePushClient;
@@ -1114,4 +1116,22 @@
            return false;
        }
    }
    /**
     * 获取服务车辆列表
     * @param dto
     * @return
     */
    @Override
    public List<XpVehicle> getServiceVehicleList(ServiceVehicleListDto dto) {
        List<XpVehicle> list = this.list(new QueryWrapper<XpVehicle>().eq("vehicle_type", 2)
                .eq("status", 2).eq("operating_status", 1)
                .eq("is_deleted", 0).like(StringUtils.isNotBlank(dto.getPlateNumber()), "plate_number", dto.getPlateNumber())
                .like(StringUtils.isNotBlank(dto.getVim()), "vehicle_vin", dto.getVim())
                .last(" order by create_time desc limit " + dto.getPageNo() + "," + dto.getPageSize())
        );
        return list;
    }
}