From 1be79cd717d4b3c7a85e0a87badcab78fde3d69c Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 07 三月 2026 21:13:42 +0800
Subject: [PATCH] 合并代码

---
 xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java |  633 ---------------------------------------------------------
 1 files changed, 0 insertions(+), 633 deletions(-)

diff --git a/xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java b/xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
index 822c6ea..e69de29 100644
--- a/xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
+++ b/xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -1,633 +0,0 @@
-package com.xiaopeng.automaticPilot.service;
-
-import cn.hutool.core.lang.Snowflake;
-import cn.hutool.core.util.IdUtil;
-import com.alibaba.fastjson2.JSON;
-import com.alibaba.fastjson2.JSONObject;
-import com.xiaopeng.api.dto.map.OrderRouteAndFareDto;
-import com.xiaopeng.api.dto.operation.LonLatDto;
-import com.xiaopeng.api.dto.order.PopOrderDto;
-import com.xiaopeng.api.dto.pushMessage.PushOrderRouteDTO;
-import com.xiaopeng.api.dto.pushMessage.SendMessageDTO;
-import com.xiaopeng.api.feignClient.map.XpMapClient;
-import com.xiaopeng.api.feignClient.order.XpOrderClient;
-import com.xiaopeng.api.feignClient.pushMessage.XpPushMessageClient;
-import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
-import com.xiaopeng.api.model.order.XpOrder;
-import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
-import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
-import com.xiaopeng.api.vo.automaticPilot.proto.down.GeoPoint;
-import com.xiaopeng.api.vo.automaticPilot.proto.down.ResponseMessage;
-import com.xiaopeng.api.vo.automaticPilot.proto.down.StatusCode;
-import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudOrderOperation.*;
-import com.xiaopeng.api.vo.automaticPilot.proto.up.MessageType;
-import com.xiaopeng.api.vo.automaticPilot.proto.up.MsgContent;
-import com.xiaopeng.api.vo.automaticPilot.proto.up.RTCmdType;
-import com.xiaopeng.api.vo.automaticPilot.proto.up.RtMsgHeader;
-import com.xiaopeng.api.vo.automaticPilot.proto.up.navigationDeviationEvent.NavigationDeviationEvent;
-import com.xiaopeng.api.vo.automaticPilot.proto.up.navigationDeviationEvent.NavigationDeviationMessage;
-import com.xiaopeng.api.vo.automaticPilot.proto.up.navigationDeviationEvent.RtEventType;
-import com.xiaopeng.api.vo.automaticPilot.proto.up.orderStateUpdateEvent.OrderStatusInfoEvent;
-import com.xiaopeng.api.vo.automaticPilot.proto.up.systemStatusXpu.*;
-import com.xiaopeng.api.vo.automaticPilot.proto.up.xpuNavigationRequest.NavigationRequest;
-import com.xiaopeng.api.vo.automaticPilot.proto.up.xpuNavigationRequest.OrderPhase;
-import com.xiaopeng.api.vo.operation.RouteVo;
-import com.xiaopeng.automaticPilot.util.XPUUtil;
-import com.xiaopeng.common.core.domain.R;
-import com.xiaopeng.common.core.enums.OrderStatusEnum;
-import com.xiaopeng.common.core.enums.PushMessageTypeEnum;
-import com.xiaopeng.common.core.utils.SnowFlake;
-import com.xiaopeng.common.core.utils.StringUtils;
-import com.xiaopeng.common.core.utils.uuid.UUID;
-import com.xiaopeng.common.redis.service.RedisService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.mongodb.core.MongoTemplate;
-import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
-import org.springframework.data.mongodb.core.query.Criteria;
-import org.springframework.data.mongodb.core.query.Query;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.*;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Kafka 消费者服务
- */
-@Slf4j
-@Service
-public class KafkaConsumerService {
-
-    @Resource
-    private XpMapClient xpMapClient;
-
-    @Resource
-    private XpOrderClient xpOrderClient;
-
-    @Resource
-    private MongoTemplate mongoTemplate;
-
-    @Resource
-    private XpVehicleClient xpVehicleClient;
-
-    @Resource
-    private XPUUtil xpuUtil;
-
-    @Autowired
-    public RedisTemplate redisTemplate;
-
-    @Resource
-    private XpPushMessageClient xpPushMessageClient;
-
-
-
-    /**
-     * 消费消息 - XPU上报Robotaxi云端的消息topic(高优先级)
-     *
-     */
-    public void topicProdRobotaxiXpuHigh(String message) {
-        MsgContent msgContent = JSON.parseObject(message, MsgContent.class);
-        handleXPUMessage(msgContent, message);
-    }
-
-    /**
-     * 消费消息 - XPU上报Robotaxi云端的消息topic(低优先级)
-     */
-    public void topicProdRobotaxiXpuNormal(String message) {
-        MsgContent msgContent = JSON.parseObject(message, MsgContent.class);
-        handleXPUMessage(msgContent, message);
-    }
-
-
-    /**
-     * 处理XPU消息
-     * @param msgContent
-     * @param message
-     */
-    public void handleXPUMessage(MsgContent msgContent, String message){
-        RtMsgHeader header = msgContent.getHeader();
-        MessageType type = header.getType();
-        //处理请求消息
-        if (MessageType.MESSAGE_TYPE_REQUEST == type) {
-            //区分业务类型
-            RTCmdType cmd = header.getCmd();
-            switch (cmd) {
-                case SYSTEM_STATUS_XPU:
-                    log.info("XPU发布系统运行状态 (XPU→云端):{}", message);
-                    systemStatusXpu(msgContent);
-                    break;
-                case XPU_NAVIGATION_REQUEST:
-                    log.info("XPU向云端请求导航 (XPU→云端):{}", message);
-                    xpuNavigationRequest(msgContent);
-                    break;
-                case TRIP_STATUS_UPDATE_EVENT:
-                    log.info("行程状态更新(XPU→云端)(XPU→座舱):{}", message);
-                    break;
-                case PULLOVER_STATUS_EVENT:
-                    log.info("靠边停车状态(XPU→云端)(XPU→座舱):{}", message);
-                    break;
-                case DRIVING_MODE_UPDATE_EVENT:
-                    log.info("驾驶模式变化(XPU→云端)(XPU→座舱):{}", message);
-                    break;
-                case SYSTEM_STATUS_UPDATE_EVENT:
-                    log.info("系统状态变化(XPU→云端)(XPU→座舱):{}", message);
-                    break;
-                case TASK_STATE_UPDATE_EVENT:
-                    log.info("任务状态变化(XPU→云端)(XPU→座舱):{}", message);
-                    break;
-                case ORDER_STATE_UPDATE_EVENT:
-                    log.info("订单状态变化(XPU→云端)(XPU→座舱):{}", message);
-                    orderStateUpdateEvent(msgContent);
-                    break;
-                case POINT_ARRIVAL_STATUS_EVENT:
-                    log.info("到达目标点状态(XPU→云端)(XPU→座舱):{}", message);
-                    break;
-                case PICKUP_CONFIRMATION_EVENT:
-                    log.info("用户上车确认(XPU→云端)(XPU→座舱):{}", message);
-                    break;
-                case DROPOFF_INFO_EVENT:
-                    log.info("用户下车信息(XPU→云端):{}", message);
-                    break;
-                case NAVIGATION_DEVIATION_EVENT:
-                    log.info("导航偏航(XPU→云端):{}", message);
-                    navigationDeviationEvent(msgContent);
-                    break;
-                case EMERGENCY_STOP_EVENT:
-                    log.info("急停(XPU→云端)(XPU→座舱):{}", message);
-                    break;
-                case NAVIGATION_UPDATE_EVENT:
-                    log.info("导航信息变化(XPU→云端):{}", message);
-                    break;
-                case TASK_QUEUE_UPDATE_EVENT:
-                    log.info("XPU待执行任务队列(XPU→云端):{}", message);
-                    break;
-                case SYSTEM_STATE_ANAPSHOT_SYNC_EVENT:
-                    log.info("每次MQTT连接之后触发 (XPU→云端):{}", message);
-                    break;
-                case ORDER_STATE_UPDATE_TO_CDU_EVENT:
-                    log.info("更新订单状态到CDU (XPU→云端):{}", message);
-                    break;
-                default:
-                    log.info("消息不在处理范围内,忽略:{}", message);
-            }
-
-
-        }
-        //消息应答
-        if(MessageType.MESSAGE_TYPE_RESPONSE == type){
-            com.xiaopeng.api.vo.automaticPilot.proto.up.ResponseMessage resposne = msgContent.getContent_detail().getObject("resposne", com.xiaopeng.api.vo.automaticPilot.proto.up.ResponseMessage.class);
-            com.xiaopeng.api.vo.automaticPilot.proto.up.StatusCode code = resposne.getCode();
-            Long requestSeq = resposne.getRequest_seq();
-            if(code == com.xiaopeng.api.vo.automaticPilot.proto.up.StatusCode.OK){
-                Object sequence = redisTemplate.opsForValue().get(requestSeq);
-                if(sequence!=null){
-                    String[] split = sequence.toString().split("_");
-                    if(split[0].equals("pushOrder")){
-                        PopOrderDto dto = new PopOrderDto();
-                        dto.setOrderId(Long.valueOf(split[1]));
-                        dto.setXpVehicleVin(split[2]);
-                        xpOrderClient.popOrder(dto);
-                    }
-                }
-            }
-        }
-    }
-
-
-
-
-
-    /**
-     * XPU发布系统运行状态---车辆实时位置
-     *
-     * @param msgContent
-     */
-    public void systemStatusXpu(MsgContent msgContent) {
-        //开始处理消息对应的业务逻辑
-        SystemRuntimeStatus systemRuntimeStatus = msgContent.getContent_detail().getObject("systemRuntimeStatus", SystemRuntimeStatus.class);
-        //获取实时位姿
-        RealtimePose pose = systemRuntimeStatus.getPose();
-        Wgs naviPose = pose.getNavi_pose();
-        Double latitude = naviPose.getLatitude();
-        Double longitude = naviPose.getLongitude();
-        Double course = naviPose.getCourse();
-        Float alt = naviPose.getAlt();
-        //获取车辆静态信息
-        VehicleStaticInfo staticInfo = systemRuntimeStatus.getVehicle_status().getStatic_info();
-        String xpuId = staticInfo.getXpu_id();
-        XpVehicle xpVehicle = xpVehicleClient.findByVehicleXpuId(xpuId).getData();
-        String vin = xpVehicle.getVehicleVin();
-        //先响应消息
-        Long sequence = msgContent.getHeader().getSequence();
-        responseMessage(sequence, vin);
-        //保存车辆实时位置到redis
-        redisTemplate.opsForGeo().add("vehiclePosition:" + vin, new GeoJsonPoint(longitude, latitude), vin);
-
-        //保存车辆实时信息到mongodb
-        VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vin)), VehiclePosition.class);
-        if (null == vehiclePosition) {
-            vehiclePosition = new VehiclePosition();
-        }
-        vehiclePosition.setVin(vin);
-        vehiclePosition.setPoint(new GeoJsonPoint(longitude, latitude));
-        vehiclePosition.setCourse(course);
-        vehiclePosition.setAlt(alt);
-        VehicleStatus vehicleStatus = systemRuntimeStatus.getVehicle_status();
-        //车辆动态信息
-        VehicleDynamicStatus dynamicStatus = vehicleStatus.getDynamic_status();
-        dynamicStatus.setSpeed(dynamicStatus.getSpeed());
-        vehiclePosition.setCurrentElectricity(dynamicStatus.getBattery_level());
-        //订单信息
-        OrderStatusInfo runningOrderStatusInfo = systemRuntimeStatus.getRunning_order_status_info();
-        Long orderId = null;
-        String order_id = runningOrderStatusInfo.getOrder_id();
-        vehiclePosition.setHasOrder(0);
-        if (StringUtils.isNotEmpty(order_id)) {
-            if (order_id.contains("XU")) {
-                vehiclePosition.setHasOrder(1);
-                orderId = Long.parseLong(order_id.substring(2));
-            } else {
-                orderId = Long.parseLong(order_id);
-            }
-        }
-        vehiclePosition.setOrderId(orderId);
-        mongoTemplate.save(vehiclePosition);
-        //调用推送服务接口
-        if (null != orderId) {
-            RtTripInfo rtTripInfo = systemRuntimeStatus.getRt_trip_info();
-            PushOrderRouteDTO dto = new PushOrderRouteDTO();
-            dto.setOrderId(orderId);
-            dto.setRouteType(order_id.contains("XU") ? 2 : 1);
-            dto.setLongitude(longitude);
-            dto.setLatitude(latitude);
-            dto.setDuration(rtTripInfo.getRemaining_time());
-            dto.setDistance(rtTripInfo.getRemaining_distance().intValue());
-            xpPushMessageClient.pushOrderRoute(dto);
-        }
-    }
-
-
-    /**
-     * XPU向云端请求导航
-     *
-     * @param msgContent
-     */
-    public void xpuNavigationRequest(MsgContent msgContent) {
-        //开始处理消息对应的业务逻辑
-        NavigationRequest naviRequest = msgContent.getContent_detail().getObject("naviRequest", NavigationRequest.class);
-        String orderId = naviRequest.getOrder_id();
-        String taskId = naviRequest.getTask_id();
-        OrderPhase orderPhase = naviRequest.getOrder_phase();
-        log.info("订单ID:{}", orderId);
-        log.info("任务ID:{}", taskId);
-        switch (orderPhase) {
-            case IDLE:
-                log.info("订单的任务未开始执行");
-                break;
-            case ROUTE_TO_PICKUP:
-                log.info("驶往上车点的行程");
-                buildNaviRequest(orderId, taskId, orderPhase, msgContent.getHeader().getSequence());
-                break;
-            case ROUTE_TO_DESTINATION:
-                log.info("驶往下车点的行程");
-                buildNaviRequest(orderId, taskId, orderPhase, msgContent.getHeader().getSequence());
-                break;
-            case ROUTE_TO_CRUISE:
-                log.info("巡游阶段路线");
-                buildNaviRequest(orderId, taskId, orderPhase, msgContent.getHeader().getSequence());
-                break;
-        }
-    }
-
-
-    /**
-     * 车辆偏航后重新规划线路
-     *
-     * @param msgContent
-     */
-    public void navigationDeviationEvent(MsgContent msgContent) {
-        //先响应消息
-        Long sequence = msgContent.getHeader().getSequence();
-        //开始处理消息对应的业务逻辑
-        NavigationDeviationEvent deviationEvent = msgContent.getContent_detail().getObject("deviationEvent", NavigationDeviationEvent.class);
-        //偏航事件类型 1:请求导航,2:取消导航
-        if (deviationEvent.getEvent_type().equals(RtEventType.RT_EVENT_TYPE_REQUEST)) {
-            NavigationDeviationMessage navigationDeviationMessage = deviationEvent.getNavigation_deviation_message();
-            String orderId = navigationDeviationMessage.getOrder_id();
-            String taskId = navigationDeviationMessage.getTask_id();
-            Double longitude = navigationDeviationMessage.getLongitude();
-            Double latitude = navigationDeviationMessage.getLatitude();
-            //订单类型  1:乘客订单,2=巡游订单
-            Integer orderType = 1;
-            LonLatDto destination = new LonLatDto();
-            LonLatDto origin = new LonLatDto();
-            if (orderId.contains("XU")) {
-                orderType = 2;
-                // todo 下发巡游单的导航数据
-                //巡游单
-                origin.setLongitude(longitude);
-                origin.setLatitude(latitude);
-                destination.setLongitude(116.40528);
-                destination.setLatitude(39.90498);
-                //响应消息
-                responseMessage(sequence, "");
-            } else {
-                //正常单
-                R<XpOrder> xpOrderR = xpOrderClient.queryOrderById(Long.parseLong(orderId));
-                if (200 != xpOrderR.getCode()) {
-                    throw new RuntimeException("订单不存在");
-                }
-                XpOrder xpOrder = xpOrderR.getData();
-                XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData();
-                //响应消息
-                responseMessage(sequence, xpVehicle.getVehicleVin());
-                //驶往上车点的行程
-                if (Arrays.asList(3).contains(xpOrder.getStatus())) {
-                    //查询司机当前位置到起点的线路
-                    origin.setLongitude(longitude);
-                    origin.setLatitude(latitude);
-                    destination.setLongitude(xpOrder.getStartLon());
-                    destination.setLatitude(xpOrder.getStartLat());
-                }
-                //驶往下车点的行程
-                if (Arrays.asList(6).contains(xpOrder.getStatus())) {
-                    //查询起点到终点的线路
-                    origin.setLongitude(longitude);
-                    origin.setLatitude(latitude);
-                    destination.setLongitude(xpOrder.getEndLon());
-                    destination.setLatitude(xpOrder.getEndLat());
-                }
-                OrderRouteAndFareDto dto = new OrderRouteAndFareDto();
-                dto.setOrderId(Long.parseLong(orderId));
-                dto.setOrigin(origin);
-                dto.setDestination(destination);
-                R<RouteVo> routeVoR = xpMapClient.getOrderDistanceAndDuration(dto);
-                if (200 != routeVoR.getCode()) {
-                    throw new RuntimeException("获取订单线路和运费失败");
-                }
-                RouteVo routeVo = routeVoR.getData();
-                //构建导航下发请求对象
-                cloudOrderOperation(orderType, orderId, taskId, routeVo, xpVehicle.getVehicleVin());
-            }
-        }
-    }
-
-
-    /**
-     * 构建导航请求
-     *
-     * @param orderId
-     * @param taskId
-     * @param orderPhase
-     */
-    public void buildNaviRequest(String orderId, String taskId, OrderPhase orderPhase, Long sequence) {
-        //订单类型  1:乘客订单,2=巡游订单
-        Integer orderType = 1;
-        LonLatDto destination = new LonLatDto();
-        LonLatDto origin = new LonLatDto();
-        if (orderId.contains("XU")) {
-            orderType = 2;
-            // todo 下发巡游单的导航数据
-            //巡游单
-            if (orderPhase.equals(OrderPhase.ROUTE_TO_CRUISE)) {
-                origin.setLongitude(116.40528);
-                origin.setLatitude(39.90498);
-                destination.setLongitude(116.40528);
-                destination.setLatitude(39.90498);
-
-                //先响应消息
-                responseMessage(sequence, "");
-            }
-        } else {
-            //正常单
-            R<XpOrder> xpOrderR = xpOrderClient.queryOrderById(Long.parseLong(orderId));
-            if (200 != xpOrderR.getCode()) {
-                throw new RuntimeException("订单不存在");
-            }
-            XpOrder xpOrder = xpOrderR.getData();
-            //驶往上车点的行程
-            if (orderPhase.equals(OrderPhase.ROUTE_TO_PICKUP)) {
-                XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData();
-                //先响应消息
-                responseMessage(sequence, xpVehicle.getVehicleVin());
-                //查询车辆位置
-                VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class);
-                if (Objects.isNull(vehiclePosition)) {
-                    throw new RuntimeException("车辆位置信息不存在");
-                }
-                //查询司机当前位置到起点的线路
-                origin.setLongitude(vehiclePosition.getPoint().getX());
-                origin.setLatitude(vehiclePosition.getPoint().getY());
-                destination.setLongitude(xpOrder.getStartLon());
-                destination.setLatitude(xpOrder.getStartLat());
-            }
-            //驶往下车点的行程
-            if (orderPhase.equals(OrderPhase.ROUTE_TO_DESTINATION)) {
-                //查询起点到终点的线路
-                origin.setLongitude(xpOrder.getStartLon());
-                origin.setLatitude(xpOrder.getStartLat());
-                destination.setLongitude(xpOrder.getEndLon());
-                destination.setLatitude(xpOrder.getEndLat());
-            }
-            OrderRouteAndFareDto dto = new OrderRouteAndFareDto();
-            dto.setOrderId(Long.parseLong(orderId));
-            dto.setOrigin(origin);
-            dto.setDestination(destination);
-            R<RouteVo> routeVoR = xpMapClient.getOrderDistanceAndDuration(dto);
-            if (200 != routeVoR.getCode()) {
-                throw new RuntimeException("获取订单线路和运费失败");
-            }
-            XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData();
-            RouteVo routeVo = routeVoR.getData();
-            //构建导航下发请求对象
-            cloudOrderOperation(orderType, orderId, taskId, routeVo, xpVehicle.getVehicleVin());
-        }
-    }
-
-
-    /**
-     * 云端订单操作----下发导航数据
-     *
-     * @param routeVo
-     */
-    public void cloudOrderOperation(Integer orderType, String orderId, String taskId, RouteVo routeVo, String vin) {
-        //构建消息体
-        OrderOperation orderOperation = new OrderOperation();
-        orderOperation.setOrder_id(orderId);
-        orderOperation.setTask_id(taskId);
-        orderOperation.setOperation_type(OrderOperationType.CLOUD_UPDATE_WAYPOINTS);
-
-        //构建航点
-        List<Waypoint> waypoints = new ArrayList<>();
-        List<LonLatDto> polyline = routeVo.getPolyline();
-        for (int i = 0; i < polyline.size(); i++) {
-            LonLatDto lonLatDto = polyline.get(i);
-            Waypoint waypoint = new Waypoint();
-            waypoint.setWaypoint_id(UUID.randomUUID().toString());
-            if (0 == i) {
-                waypoint.setPoint_type(PointType.START_POINT);
-                //订单类型不同,点位的动作类型不同
-                waypoint.setAction_type(1 == orderType ? ActionType.PICK_UP : ActionType.ACTION_UNSPECIFIED);
-            } else if (polyline.size() - 1 == i) {
-                waypoint.setPoint_type(PointType.END_POINT);
-                waypoint.setAction_type(1 == orderType ? ActionType.DROP_OFF : ActionType.ACTION_UNSPECIFIED);
-            } else {
-                waypoint.setPoint_type(PointType.WAY_POINT);
-                //订单类型不同,点位的动作类型不同
-                waypoint.setAction_type(ActionType.ACTION_UNSPECIFIED);
-            }
-            //构建经纬度
-            GeoPoint geoPoint = new GeoPoint();
-            geoPoint.setLongitude(lonLatDto.getLongitude());
-            geoPoint.setLatitude(lonLatDto.getLatitude());
-            waypoint.setPoint(geoPoint);
-            waypoint.setSequence(i + 1);
-            waypoints.add(waypoint);
-        }
-        orderOperation.setWaypoints(waypoints);
-        SnowFlake snowFlake = new SnowFlake(0, 0);
-        snowFlake.withStartTimestamp(1420041600000L);
-        long sequence = snowFlake.nextId();
-        // 处理数据
-        redisTemplate.opsForValue().set(sequence,"pushOrder_"+orderId+"_"+vin,30, TimeUnit.MINUTES);
-        //开发发送请求到XPU
-        xpuUtil.cloudOrderOperation(orderOperation, vin,sequence);
-    }
-
-
-    /**
-     * 构建响应消息
-     */
-    public void responseMessage(Long request_seq, String vin) {
-        ResponseMessage responseMessage = new ResponseMessage();
-        responseMessage.setRequest_seq(request_seq);
-        responseMessage.setCode(StatusCode.OK);
-        responseMessage.setTimestamp(System.currentTimeMillis());
-        xpuUtil.responseMessage(responseMessage, vin);
-    }
-
-
-    /**
-     * 订单状态更新事件
-     * @param msgContent
-     */
-    public void orderStateUpdateEvent(MsgContent msgContent) {
-        //先响应消息
-        Long sequence = msgContent.getHeader().getSequence();
-        //开始处理消息对应的业务逻辑
-        OrderStatusInfoEvent orderStatusInfoEvent = msgContent.getContent_detail().getObject("orderStatusInfoEvent", OrderStatusInfoEvent.class);
-        //只处理请求消息
-        if (orderStatusInfoEvent.getEvent_type().equals(RtEventType.RT_EVENT_TYPE_REQUEST)) {
-            com.xiaopeng.api.vo.automaticPilot.proto.up.orderStateUpdateEvent.OrderStatusInfo orderStatusInfo = orderStatusInfoEvent.getOrder_status_info();
-            String orderId = orderStatusInfo.getOrder_id();
-            //普通单
-            com.xiaopeng.api.vo.automaticPilot.proto.up.orderStateUpdateEvent.OrderStatus status = orderStatusInfo.getStatus();
-            switch (status) {
-                case ORDER_STATUS_UNSPECIFIED:
-                    //订单状态未知
-                    log.info("订单状态未知,不做任何处理:{}", orderId);
-                    break;
-                case ORDER_RECEIVED:
-                    //收到订单
-                    buildPushOrderStatus(orderId, OrderStatusEnum.READY_DEPART, sequence);
-                    break;
-                case ORDER_STARTED:
-                    //开始执行订单
-                    log.info("开始执行订单,不做任何处理:{}", orderId);
-                    break;
-                case ORDER_EN_ROUTE_TO_PICKUP:
-                    //前往上车点
-                    buildPushOrderStatus(orderId, OrderStatusEnum.PICK_UP, sequence);
-                    break;
-                case ORDER_ARRIVED_AT_PICKUP:
-                    //到达上车点
-                    log.info("到达上车点,不做任何处理:{}", orderId);
-                    break;
-                case ORDER_WAITING_FOR_PICKUP:
-                    //等待乘客上车
-                    buildPushOrderStatus(orderId, OrderStatusEnum.PICK_UP_GUESTS, sequence);
-                    break;
-                case ORDER_PASSENGER_ONBOARD:
-                    //乘客已上车
-                    buildPushOrderStatus(orderId, OrderStatusEnum.PASSENGER_BOARDED, sequence);
-                    break;
-                case ORDER_EN_ROUTE_TO_DESTINATION:
-                    //前往目的地
-                    buildPushOrderStatus(orderId, OrderStatusEnum.IN_SERVICE, sequence);
-                    break;
-                case ORDER_ARRIVED_AT_DESTINATION:
-                    //到达目的地
-                    log.info("到达目的地,不做任何处理:{}", orderId);
-                    break;
-                case ORDER_WAITING_FOR_DROPOFF:
-                    //等待乘客下车
-                    buildPushOrderStatus(orderId, OrderStatusEnum.SEE_OFF_GUESTS, sequence);
-                    break;
-                case ORDER_DROPOFF_COMPLETED:
-                    //下车完成
-                    buildPushOrderStatus(orderId, OrderStatusEnum.APPROVAL_REJECTION, sequence);
-                    break;
-                case ORDER_COMPLETED:
-                    //已完成
-                    log.info("已完成,不做任何处理:{}", orderId);
-                    break;
-                case ORDER_CANCELLED:
-                    //已取消
-                    buildPushOrderStatus(orderId, OrderStatusEnum.CANCELED, sequence);
-                    break;
-                case ORDER_ARRIVED_AT_CRUISE_DESTINATION:
-                    //到达巡游终点
-                    buildPushOrderStatus(orderId, null, sequence);
-                    break;
-                case ORDER_PAUSED:
-                    //订单暂停
-                    log.info("订单暂停,不做任何处理:{}", orderId);
-                    break;
-                default:
-                    break;
-            }
-        }
-    }
-
-
-    /**
-     * 构建订单状态推送消息
-     * @param orderId
-     * @param status
-     */
-    public void buildPushOrderStatus(String orderId, OrderStatusEnum status, Long sequence){
-        if(orderId.contains("XU")){
-            //巡游单
-            //响应消息
-            responseMessage(sequence, "");
-        }else{
-            //普通单
-            R<XpOrder> xpOrderR = xpOrderClient.queryOrderById(Long.parseLong(orderId));
-            XpOrder xpOrder = xpOrderR.getData();
-            XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData();
-            //响应消息
-            responseMessage(sequence, xpVehicle.getVehicleVin());
-
-            //构建推送消息
-            Map<String, Object> params = new HashMap<>();
-            Map<String, Object> content = new HashMap<>();
-            content.put("orderId", orderId);
-            content.put("status", status.getCode());
-            params.put("type", PushMessageTypeEnum.ORDER_STATUS.getDesc());
-            params.put("content", com.alibaba.fastjson2.JSONObject.toJSONString(content));
-            params.put("timestamp", System.currentTimeMillis() + "");
-            String message = JSONObject.toJSONString(params);
-            Long appUserId = xpOrder.getAppUserId();
-            SendMessageDTO dto = new SendMessageDTO();
-            dto.setAppUserId(appUserId + "");
-            dto.setMessage(message);
-            R<String> stringR = xpPushMessageClient.sendStatus(dto);
-            if (R.isError(stringR)) {
-                log.error("推送消息失败:{}", stringR.getMsg());
-            }
-        }
-    }
-
-}

--
Gitblit v1.7.1