xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -2,7 +2,6 @@
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSON;
import com.xiaopeng.api.dto.account.UseUserCouponDto;
import com.xiaopeng.api.dto.automaticPilot.PushOrderDto;
import com.xiaopeng.api.dto.map.RouteAndFareDto;
import com.xiaopeng.api.dto.operation.LonLatDto;
@@ -18,6 +17,7 @@
import com.xiaopeng.api.model.operation.XpElectronicFence;
import com.xiaopeng.api.model.operation.XpTradingStrategy;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.order.XpOrderReassign;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.OrderType;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
@@ -28,13 +28,13 @@
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.enums.OrderStatusEnum;
import com.xiaopeng.common.redis.service.RedisService;
import com.xiaopeng.operation.config.UidVinBindingConfig;
import com.xiaopeng.operation.dto.PriorityMatchResult;
import com.xiaopeng.operation.mapper.XpElectronicFenceMapper;
import com.xiaopeng.operation.service.IXpElectronicFenceAreaService;
import com.xiaopeng.operation.service.IXpTradingStrategyService;
import com.xiaopeng.operation.service.XpPointService;
import com.xiaopeng.operation.config.UidVinBindingConfig;
import com.xiaopeng.operation.dto.PriorityMatchResult;
import com.xiaopeng.operation.service.UidVinPriorityMatcher;
import com.xiaopeng.operation.service.XpPointService;
import com.xiaopeng.operation.utils.mango.VehiclePositionService;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -1086,31 +1086,43 @@
        return false;
    }
    /**
     * 订单处理
     * 重新改派
     * 1.优化好点 做个倒计时的异步改派多次
     * @param count 轮数
     * @param uid
     * @param uid 用户id
     * @param longitude  经度
     * @param latitude  纬度
     * @param orderNo 订单号
     */
    @SneakyThrows
    public void reassignPushOrder(int count, String uid, Double longitude, Double latitude, String orderNo) {
        System.out.println("进入推单环环节");
    public XpOrderReassign reassignPushOrder(int count, String uid, Double longitude, Double latitude, String orderNo) {
        log.info("进入推单环环节");
        if (count == 0) {
            count = 1;
        }
        // 订单状态
        R<XpOrder> xpOrderR = xpOrderClient.queryOrderByOrderNo(orderNo);
        if (xpOrderR.getCode() != 200) {
            return;
            return null;
        }
//        List<Integer> notDrive = new ArrayList<Integer>(){{ //未行驶的情况下订单故障状态点 status=2、3、4、5
//            add(OrderStatusEnum.READY_DEPART.getCode());add(OrderStatusEnum.PICK_UP.getCode());
//            add(OrderStatusEnum.PICK_UP_GUESTS.getCode());add(OrderStatusEnum.PASSENGER_BOARDED.getCode());
//        }};
        if (xpOrderR.getData().getStatus() != 1) {
            return;
            return null;
        }
        XpOrder data = xpOrderR.getData();
        XpTradingStrategy xpTradingStrategy = xpTradingStrategyService.getOne(null);
        boolean orderCarStatus = false;//未派到车 默认
        XpOrderReassign entity = new XpOrderReassign(data.getId(),data.getVehicleId(),data.getFleetId(),longitude,latitude,"接驾故障");
        entity.setIsComplete(false);
        entity.setAppUserId(Long.valueOf(uid));
        //循环找车
        for (int i = 0; i < count; i++) {
            log.info("进入找车环节");
@@ -1158,29 +1170,23 @@
                // 调用推送服务  orderId + carVin
                orderMissionClient.pushOrder(pushOrderDto);
                //接单成功 将 修改 订单的状态=1 ( 状态 0=已取消,1=待接单,2=待出发,3=接驾中,4=待客上车,5=乘客已上车,6=服务中,7=待客下车,8=待付款,9=待评价,10=已完成)
                orderCarStatus = true;
                entity.setNewVehicleId(vehicleId1.getId());
                entity.setNewFleetId(vehicleId1.getFleetId());
                entity.setIsComplete(true);
//                //接单成功 将 修改 订单的状态=1 ( 状态 0=已取消,1=待接单,2=待出发,3=接驾中,4=待客上车,5=乘客已上车,6=服务中,7=待客下车,8=待付款,9=待评价,10=已完成)
//                orderCarStatus = true;
                xpOrderClient.updateOrderStatus(data.getId(), OrderStatusEnum.PENDING_ORDER.getCode());
                redisService.setCacheObject("ORDER_STATUS:" + data.getId(), OrderStatusEnum.PENDING_ORDER.getCode(), 24L, TimeUnit.HOURS);
                break;
            } catch (Exception e) {
                throw new RuntimeException(e);
            } finally {
                lock.unlock();
            }
        }
        //未找到车 系统强制取消订单,状态流转至“系统自动取消”。 自动退回优惠卷
        if(!orderCarStatus){
            xpOrderClient.updateOrderStatus(data.getId(),OrderStatusEnum.CANCELED.getCode());
            redisService.setCacheObject("ORDER_STATUS:" + data.getId(), OrderStatusEnum.CANCELED.getCode(), 24L, TimeUnit.HOURS);
            //有优惠卷 自动退回优惠卷
            if(data.getCouponId() != null ){
                UseUserCouponDto useUserCouponDto = new UseUserCouponDto();
                useUserCouponDto.setUserCouponId(data.getCouponId() );
                xpAppUserCouponClient.backUserCoupon(useUserCouponDto);
            }
        }
        //保存改派记录
        return entity;
    }