package com.xiaopeng.order.job.jobs; import com.alibaba.fastjson2.JSONObject; import com.xiaopeng.api.dto.automaticPilot.PushOrderDto; import com.xiaopeng.api.dto.pushMessage.SendMessageDTO; import com.xiaopeng.api.dto.vehicleConvoy.UpdateVehicleStateDto; import com.xiaopeng.api.model.order.XpOrder; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.enums.OrderStatusEnum; import com.xiaopeng.common.core.enums.PushMessageTypeEnum; import com.xiaopeng.order.job.base.AbstractJob; import lombok.extern.slf4j.Slf4j; import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Objects; /** * 直播推送定时任务 * @author Administrator * */ @Slf4j public class OrderCancelJob extends AbstractJob { public static final String name = "orderCancel_"; @Override public void execute(JobExecutionContext context) throws JobExecutionException { JobDataMap maps = context.getMergedJobDataMap(); Long orderId = maps.getLong("id"); try { log.info("开始执行订单取消任务"); XpOrder xpOrder = xpOrderService.getById(orderId); if(Objects.nonNull(xpOrder) && xpOrder.getStatus()==4){ log.info("订单取消开始"); XpOrder order = xpOrderService.cancelOrder(String.valueOf(xpOrder.getId())); // 下发命令 if (null != order.getVehicleId()) { R xpVehicleR = xpVehicleClient.queryById(order.getVehicleId()); XpVehicle xpVehicle = xpVehicleR.getData(); //还原车辆状态为空闲 xpVehicleClient.updateVehicleStatus(new UpdateVehicleStateDto(xpVehicle.getVehicleVin(), 0)); PushOrderDto pushOrderDto = new PushOrderDto(); pushOrderDto.setOrderId(order.getId().toString()); pushOrderDto.setVin(xpVehicle.getVehicleVin()); pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER); orderMissionClient.cancelOrder(pushOrderDto); //车辆继续巡游单 xpOrderService.addCruiseMission(xpVehicle); } log.info("订单取消状态修改完成"); } }catch(Exception e){ e.printStackTrace(); } } }