puzhibing
2026-04-26 47b3380b661bfde1d451cf1f2df34353e4ab6e1f
完善部分遗漏功能
9个文件已修改
114 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpTradingStrategyClientFallbackFactory.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpTradingStrategyClient.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpTradingStrategyController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/IXpTradingStrategyService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTradingStrategyServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/job/jobs/OrderCancelJob.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpTradingStrategyClientFallbackFactory.java
@@ -1,14 +1,30 @@
package com.xiaopeng.api.factory.operation;
import com.xiaopeng.api.feignClient.operation.XpTradingStrategyClient;
import com.xiaopeng.api.model.operation.XpTradingStrategy;
import com.xiaopeng.api.vo.operation.XpTradingStrategyDetailVO;
import com.xiaopeng.common.core.domain.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class XpTradingStrategyClientFallbackFactory  implements FallbackFactory<XpTradingStrategyClient> {
    @Override
    public XpTradingStrategyClient create(Throwable cause) {
        return () -> R.fail("策略查询失败");
        return new XpTradingStrategyClient(){
            public R<XpTradingStrategyDetailVO> queryById() {
                return R.fail("调用交易策略接口失败");
            }
            public R<XpTradingStrategy> getTradingStrategyByCityCode(String cityCode) {
                return R.fail("调用交易策略接口失败");
            }
        };
    }
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpTradingStrategyClient.java
@@ -2,15 +2,26 @@
import com.xiaopeng.api.factory.operation.XpTradingStrategyClientFallbackFactory;
import com.xiaopeng.api.model.operation.XpTradingStrategy;
import com.xiaopeng.api.vo.operation.XpTradingStrategyDetailVO;
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.PathVariable;
@FeignClient(contextId = "XpTradingStrategyClient", value = ServiceNameConstantsEnum.XP_OPERATION_SERVICE, fallbackFactory = XpTradingStrategyClientFallbackFactory.class)
public interface XpTradingStrategyClient {
    @GetMapping("/logan/inner/xpOperationStrategy/getOne")
    R<XpTradingStrategyDetailVO> queryById();
    /**
     * 根据开通城市获取交易策略
     * @param cityCode
     * @return
     */
    @GetMapping("/logan/inner/xpOperationStrategy/getTradingStrategyByCityCode/{cityCode}")
    R<XpTradingStrategy> getTradingStrategyByCityCode(@PathVariable String cityCode);
}
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -1202,12 +1202,12 @@
                    }
                    break;
                case ORDER_PASSENGER_ONBOARD:
                    //先手动暂停触发,因为现目前车机响应状态时机不对
                    try {
                        Thread.sleep(waittime);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
//                    //先手动暂停触发,因为现目前车机响应状态时机不对
//                    try {
//                        Thread.sleep(waittime);
//                    } catch (InterruptedException e) {
//                        throw new RuntimeException(e);
//                    }
                    //乘客已上车
                    if(!orderId.contains("XU")){
                        if(orderId.contains("TEST")){
xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
@@ -594,6 +594,7 @@
        if (!inTime) {
            throw new ServiceException("当前点位未开通服务", I18nKeyConstant.NO_CURRENT_REGION);
        }
        // todo 需要判断用户是否白名单,且白名单当天最大订单量
        // 判断当天取消的次数 后台配置 redis 查询
        // 静默处理
@@ -613,7 +614,6 @@
        // 根据id获取手机号
        Boolean isPriorityDispatch = true;
//        R<XpAppUser> xpAppUserR = xpAppUserClient.queryOperationsUserById(Long.valueOf(uid));
//        if (xpAppUserR.getCode() == R.SUCCESS) {
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpTradingStrategyController.java
@@ -10,10 +10,7 @@
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
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.RestController;
import org.springframework.web.bind.annotation.*;
/**
 * <p>
@@ -72,4 +69,16 @@
        tradingStrategyService.save(dto);
        return R.ok();
    }
    /**
     * 根据开通城市获取交易策略
     * @param cityCode
     * @return
     */
    @GetMapping("/logan/inner/xpOperationStrategy/getTradingStrategyByCityCode/{cityCode}")
    public R<XpTradingStrategy> getTradingStrategyByCityCode(@PathVariable String cityCode){
        XpTradingStrategy detail = tradingStrategyService.getTradingStrategyByCityCode(cityCode);
        return R.ok(detail);
    }
}
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/IXpTradingStrategyService.java
@@ -28,4 +28,12 @@
     * @param dto 交易策略编辑参数
     */
    void editStrategy(XpTradingStrategyEditDTO dto);
    /**
     * 根据开通城市获取交易策略
     * @param cityCode
     * @return
     */
    XpTradingStrategy getTradingStrategyByCityCode(String cityCode);
}
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTradingStrategyServiceImpl.java
@@ -89,4 +89,22 @@
            tradingStrategyCityService.saveBatch(dto.getCityList());
        }
    }
    /**
     * 根据开通城市获取交易策略
     * @param cityCode
     * @return
     */
    @Override
    public XpTradingStrategy getTradingStrategyByCityCode(String cityCode) {
        XpTradingStrategyCity one = tradingStrategyCityService.lambdaQuery()
                .eq(XpTradingStrategyCity::getCityCode, cityCode)
                .one();
        if(Objects.isNull(one)){
            return null;
        }
        XpTradingStrategy xpTradingStrategy = this.getById(one.getStrategyId());
        return xpTradingStrategy;
    }
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/job/jobs/OrderCancelJob.java
@@ -32,7 +32,7 @@
        try {
            log.info("开始执行订单取消任务");
            XpOrder xpOrder = xpOrderService.getById(orderId);
            if(Objects.nonNull(xpOrder) && xpOrder.getStatus()==4){
            if(Objects.nonNull(xpOrder) && (xpOrder.getStatus()==4 || xpOrder.getStatus()==5)){
                Integer status = xpOrder.getStatus();
                log.info("订单取消开始");
                XpOrder order = xpOrderService.cancelOrder(String.valueOf(xpOrder.getId()));
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -190,6 +190,9 @@
    @Resource
    private BluetoothUnlockClient bluetoothUnlockClient;
    @Resource
    private XpTradingStrategyClient tradingStrategyClient;
    @Value("${robotaxi.appId:xp_robotaxi_api}")
    private String appid;
@@ -2000,8 +2003,29 @@
                sendRoute(appUserId.toString(), orderId, "ORDER_NAVIGATION_END_DATA", xpVehicle.getVehicleVin());
                // 删除定时任务job
                QuartzManager.removeJob((OrderCancelJob.name + xpOrder.getId()).toUpperCase(), TimeJobType.ORDER_CANCEL);
                //乘客已上车,重新倒计时不开始行程取消订单
                XpPoint xpPoint1 = xpPointClient.queryById(xpOrder.getStartPointId()).getData();
                XpTradingStrategy tradingStrategy = tradingStrategyClient.getTradingStrategyByCityCode(xpPoint1.getCityCode()).getData();
                if(null != tradingStrategy){
                    Map<String, ? extends Object> cancelJobMaps1 =
                            new ImmutableMap.Builder<String, Long>().
                                    put("id", xpOrder.getId())
                                    .build();
                    QuartzManager.addJob(
                            OrderCancelJob.class,
                            (OrderCancelJob.name + xpOrder.getId()).toUpperCase(),
                            TimeJobType.ORDER_CANCEL,
                            DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(tradingStrategy.getBdNotBoardedTime())),
                            cancelJobMaps1
                    );
                }
                // 车辆到达上车点时间
                xpOrder.setArrivalTime(LocalDateTime.now());
                break;
            case 6:
                // 删除定时任务job
                QuartzManager.removeJob((OrderCancelJob.name + xpOrder.getId()).toUpperCase(), TimeJobType.ORDER_CANCEL);
                // 行程开始时间
                xpOrder.setTripBegin(LocalDateTime.now());
                //添加预估到达时间