puzhibing
2026-03-26 f9df4519a06928dd85c0e98cbfa8f7090c12d95e
修改bug
1个文件已添加
11个文件已修改
111 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpTestPointClientFallbackFactory.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/order/XpTestOrderClientFallbackFactory.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpTestPointClient.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/order/XpTestOrderClient.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/order/XpTestOrder.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/map/QueryTestPoint.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpTestPointManagementController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpTestPlanController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTestPlanServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpTestOrderController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/model/vo/AddTestOrderVo.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpTestPointClientFallbackFactory.java
@@ -2,6 +2,7 @@
import com.xiaopeng.api.feignClient.operation.XpTestPointClient;
import com.xiaopeng.api.model.map.XpTestPoint;
import com.xiaopeng.api.vo.map.QueryTestPoint;
import com.xiaopeng.common.core.domain.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
@@ -23,7 +24,7 @@
            }
            @Override
            public R<List<XpTestPoint>> queryByIds(List<Long> ids) {
            public R<List<XpTestPoint>> queryPointByIds(QueryTestPoint query) {
                log.error("获取点位详情失败:{}", cause.getMessage());
                return R.fail("获取点位详情失败");
            }
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/order/XpTestOrderClientFallbackFactory.java
@@ -34,6 +34,12 @@
                log.error("取消订单失败:{}",  cause.getMessage());
                return R.fail("取消订单失败");
            }
            @Override
            public R<Long> queryCountByTestPlanId(Long testPlanId) {
                log.error("查询测试计划订单数量失败:{}",  cause.getMessage());
                return R.fail("查询测试计划订单数量失败");
            }
        };
    }
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpTestPointClient.java
@@ -2,10 +2,13 @@
import com.xiaopeng.api.factory.operation.XpTestPointClientFallbackFactory;
import com.xiaopeng.api.model.map.XpTestPoint;
import com.xiaopeng.api.vo.map.QueryTestPoint;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.dto.ServiceNameConstantsEnum;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@@ -25,8 +28,8 @@
    /**
     * 点位详情
     */
    @GetMapping("/api/v1/testPoint/queryPointById")
    R<List<XpTestPoint>> queryByIds(@RequestParam List<Long> ids);
    @PostMapping("/api/v1/testPoint/queryPointByIds")
    R<List<XpTestPoint>> queryPointByIds(@RequestBody QueryTestPoint query);
@@ -36,6 +39,6 @@
     * @param pointId
     * @return
     */
    @GetMapping("/inner/v1/testPoint/nowInTimePoint")
    @PostMapping("/inner/v1/testPoint/nowInTimePoint")
    R<Boolean> nowInTimePoint(@RequestParam Long pointId);
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/order/XpTestOrderClient.java
@@ -43,4 +43,13 @@
     */
    @PostMapping("/inner/testOrder/cancelTestOrderById")
    R<?> cancelTestOrderById(@RequestParam Long orderId);
    /**
     * 根据测试计划ID查询订单数量
     * @param testPlanId
     * @return
     */
    @PostMapping("/inner/v1/testOrder/queryCountByTestPlanId")
    R<Long> queryCountByTestPlanId(@RequestParam Long testPlanId);
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/order/XpTestOrder.java
@@ -37,6 +37,8 @@
    @ApiModelProperty(value = "订单类型(1=正常单,2=巡游单)")
    private Integer orderType;
    @ApiModelProperty(value = "测试计划id")
    private Integer testPlanId;
    @ApiModelProperty(value = "用户id")
    private Long cityId;
    @ApiModelProperty(value = "车辆id")
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/map/QueryTestPoint.java
New file
@@ -0,0 +1,11 @@
package com.xiaopeng.api.vo.map;
import lombok.Data;
import java.util.List;
@Data
public class QueryTestPoint {
    private List<Long> ids;
}
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpTestPointManagementController.java
@@ -12,6 +12,7 @@
import com.xiaopeng.api.model.operation.XpElectronicFenceArea;
import com.xiaopeng.api.query.operation.PointListQuery;
import com.xiaopeng.api.query.operation.PointPageListListQuery;
import com.xiaopeng.api.vo.map.QueryTestPoint;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.controller.BaseController;
import com.xiaopeng.common.core.web.page.PageInfo;
@@ -212,9 +213,9 @@
    /**
     * 点位详情
     */
    @GetMapping("/api/v1/testPoint/queryPointById")
    public R<List<XpTestPoint>> queryByIds(@RequestParam List<Long> ids){
        List<XpTestPoint> xpTestPoints = xpTestPointService.listByIds(ids);
    @PostMapping("/api/v1/testPoint/queryPointByIds")
    public R<List<XpTestPoint>> queryPointByIds(@RequestBody QueryTestPoint query){
        List<XpTestPoint> xpTestPoints = xpTestPointService.listByIds(query.getIds());
        return R.ok(xpTestPoints);
    }
}
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpTestPlanController.java
@@ -54,9 +54,10 @@
    @ApiOperation(value = "新增测试计划", tags = {"管理后台-测试计划"})
    @PostMapping(value = {"/api/v1/xp-test-plan/add"})
    public R<?> add(@Valid @RequestBody XpTestPlanAddDTO dto) {
        xpTestPlanService.add(dto);
        return R.ok();
    public R<Long> add() {
        XpTestPlan plan = new XpTestPlan();
        xpTestPlanService.save(plan);
        return R.ok(plan.getId());
    }
    @ApiOperation(value = "编辑测试计划", tags = {"管理后台-测试计划"})
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTestPlanServiceImpl.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.xiaopeng.api.feignClient.operation.XpTestPointClient;
import com.xiaopeng.api.feignClient.order.XpTestOrderClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetVehicleClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
@@ -12,8 +13,10 @@
import com.xiaopeng.api.model.operation.XpTestPlanPoint;
import com.xiaopeng.api.model.operation.XpTestPlanVehicle;
import com.xiaopeng.api.model.operation.XpTestPlan;
import com.xiaopeng.api.model.order.XpTestOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpFleet;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.map.QueryTestPoint;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.web.page.PageInfo;
@@ -53,6 +56,10 @@
    private final XpVehicleClient xpVehicleClient;
    private final XpFleetVehicleClient xpFleetVehicleClient;
    private final XpFleetClient xpFleetClient;
    private final XpTestOrderClient xpTestOrderClient;
    @Override
    public PageInfo<XpTestPlan> getPageList(TestPlanQuery query) {
        PageInfo<XpTestPlan> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
@@ -71,7 +78,8 @@
        page.getRecords().forEach(plan -> {
            plan.setPointNum(pointMap.get(plan.getId()).size());
            plan.setVehicleNum(vehicleMap.get(plan.getId()).size());
            Long testOrder = xpTestOrderClient.queryCountByTestPlanId(plan.getId()).getData();
            plan.setOrderNum(testOrder.intValue());
        });
        pageInfo.setRecords(page.getRecords());
        return pageInfo;
@@ -178,7 +186,9 @@
                .filter(Objects::nonNull)
                .collect(Collectors.toList());
        pointIds.addAll(pointIds1);
        List<XpTestPoint> data = testPointClient.queryByIds(pointIds).getData();
        QueryTestPoint query = new QueryTestPoint();
        query.setIds(pointIds);
        List<XpTestPoint> data = testPointClient.queryPointByIds(query).getData();
        Map<Long, XpTestPoint> pointMap = CollUtil.isNotEmpty(pointIds)
                ? data.stream()
                .collect(Collectors.toMap(XpTestPoint::getId, v -> v))
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpTestOrderController.java
@@ -5,6 +5,7 @@
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xiaopeng.api.dto.QueryOrderRouteDTO;
import com.xiaopeng.api.dto.operation.LonLatDto;
import com.xiaopeng.api.dto.order.GetOrderNumDto;
@@ -224,7 +225,6 @@
    /**
     * 订单车辆定位实时存储-订单车辆定位实时存储(内部接口)
     */
    @ApiOperation(value = "订单车辆定位实时存储")
    @PostMapping("/inner/v1/testOrder/saveVehicleLocation")
    public R<String> saveVehicleLocation(@RequestBody OrderTrajectoryVo vo) {
        OrderTrajectory orderTrajectory = new OrderTrajectory();
@@ -234,6 +234,16 @@
    }
    /**
     * 根据测试计划ID查询订单数量
     * @param testPlanId
     * @return
     */
    @PostMapping("/inner/v1/testOrder/queryCountByTestPlanId")
    public R<Long> queryCountByTestPlanId(@RequestParam Long testPlanId){
        long count = xpTestOrderService.count(new QueryWrapper<XpTestOrder>().eq("test_plan_id", testPlanId));
        return R.ok(count);
    }
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/model/vo/AddTestOrderVo.java
@@ -5,18 +5,26 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel
public class AddTestOrderVo {
    @ApiModelProperty("测试计划id")
    private Long testPlanId;
    private Integer testPlanId;
    @ApiModelProperty("测试计划点位id")
    private Long testPlanPointId;
    @ApiModelProperty("测试起点id")
    private Long startTestPointId;
    @ApiModelProperty("测试终点id")
    private Long endTestPointId;
    @ApiModelProperty("订单类型(1=测试单,2=巡游单)")
    private Integer orderType;
    @ApiModelProperty("是否停车(0=否,1=是)")
    private Integer stopFlag;
    @ApiModelProperty("车辆id")
    private List<Long> vehicleIds;
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java
@@ -154,9 +154,8 @@
     */
    @Override
    public void addTestOrder(AddTestOrderVo query) {
        XpTestPlanPoint xpTestPlanPoint = xpTestPlanClient.getXpTestPlanPointById(query.getTestPlanPointId()).getData();
        Long startTestPointId = xpTestPlanPoint.getStartTestPointId();
        Long endTestPointId = xpTestPlanPoint.getEndTestPointId();
        Long startTestPointId = query.getStartTestPointId();
        Long endTestPointId = query.getEndTestPointId();
        XpTestPoint xpPoint = xpTestPlanClient.getXpTestPointById(startTestPointId).getData();
        XpTestPoint endXpPoint = xpTestPlanClient.getXpTestPointById(endTestPointId).getData();
        if(xpPoint ==null || xpPoint.getOperationStatus()!=2){
@@ -222,6 +221,7 @@
        // 生成订单数据
        XpTestOrder xpOrder = new XpTestOrder();
        xpOrder.setTestPlanId(query.getTestPlanId());
        xpOrder.setOrderType(query.getOrderType());
        xpOrder.setMileageKilometers(0.0);
        xpOrder.setOrderNumber("XP" + System.currentTimeMillis());
@@ -253,15 +253,16 @@
        xpOrder.setCreateTime(LocalDateTime.now());
        xpOrder.setCityCode(openCity.getCityCode());
        List<XpTestPlanVehicle> data = xpTestPlanClient.getXpTestPlanVehicleByTestPlanId(query.getTestPlanId()).getData();
        for (XpTestPlanVehicle datum : data) {
            XpVehicle xpVehicle = xpVehicleClient.queryById(datum.getVehicleId()).getData();
            xpOrder.setVehicleId(datum.getVehicleId());
        List<Long> vehicleIds = query.getVehicleIds();
        for (Long vehicleId : vehicleIds) {
            XpVehicle xpVehicle = xpVehicleClient.queryById(vehicleId).getData();
            xpOrder.setVehicleId(vehicleId);
            xpOrder.setFleetId(xpVehicle.getFleetId());
            this.save(xpOrder);
            redisService.setCacheObject("ORDER_STATUS:" + xpOrder.getId(), 1, 24L, TimeUnit.HOURS);
            //缓存导航数据,用于下单后推送导航给车端和乘客端
            redisService.setCacheObject("TEST_ORDER_NAVIGATION_END_DATA:" + datum.getVehicleId(), JSON.toJSONString(routeVo), 24L, TimeUnit.HOURS);
            redisService.setCacheObject("TEST_ORDER_NAVIGATION_END_DATA:" + vehicleId, JSON.toJSONString(routeVo), 24L, TimeUnit.HOURS);
            //下发XPU消息
            PushOrderDto pushOrderDto = new PushOrderDto();
            pushOrderDto.setVin(xpVehicle.getVehicleVin());