liujie
2026-06-09 c96fbe6b0aeb413a17c429133ee6d81d138144b9
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleOperationsController.java
@@ -82,12 +82,12 @@
        // 判断是否有正在进行的正常订单
        // 查询车辆
        XpVehicle xpVehicle = xpVehicleClient.queryById(dto.getVehicleId()).getData();
        if(xpVehicle.getState()==1){
        if (xpVehicle.getState() == 1) {
            return R.fail("车辆正在接单中");
        }
        String vin = SensitiveDataCryptoUtil.decryptIfPossible(xpVehicle.getVehicleVin());
        VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vin)), VehiclePosition.class);
        if(vehiclePosition==null || vehiclePosition.getPoint()==null){
        if (vehiclePosition == null || vehiclePosition.getPoint() == null) {
            return R.fail("车辆位置信息不存在");
        }
        Integer departureStatus = dto.getDepartureStatus();
@@ -103,33 +103,36 @@
        vehicleEventDTO.setOrderId("");
        vehicleEventDTO.setEventKey("RT_web_vehicle_status_changed");
        vehicleEventDTO.setEventTime(System.currentTimeMillis());
        Map<String,Object> attributes = new HashMap<>();
        Map<String, Object> attributes = new HashMap<>();
        attributes.put("vin", vin);
        attributes.put("order_id","");
        attributes.put("timestamp",vehicleEventDTO.getEventTime());
        if(departureStatus == 1){
            attributes.put("main_status","ONLINE");
            // TODO 预留位置 目前无状态
            attributes.put("sub_status","");
            attributes.put("prev_sub_status","");
        attributes.put("order_id", "");
        attributes.put("timestamp", vehicleEventDTO.getEventTime());
        }else {
            attributes.put("main_status","OFFLINE");
        // 1.0埋点新增
        attributes.put("odometer_km", vehiclePosition.getTotalOdometer());
        if (departureStatus == 1) {
            attributes.put("main_status", "ONLINE");
            // TODO 预留位置 目前无状态
            attributes.put("sub_status","");
            attributes.put("prev_sub_status","");
            attributes.put("sub_status", "");
            attributes.put("prev_sub_status", "");
        } else {
            attributes.put("main_status", "OFFLINE");
            // TODO 预留位置 目前无状态
            attributes.put("sub_status", "");
            attributes.put("prev_sub_status", "");
        }
        vehicleEventDTO.setAttributes(attributes);
        vehicleBuriedPointClient.sendVehicleEvent(vehicleEventDTO);
        // 发车
        if(dto.getDepartureStatus()==1){
        if (dto.getDepartureStatus() == 1) {
            // 找车辆的任务  生成巡游单子 下发命令
            //发车之前,检查所有之前没终止的数据,将其终止
            xpCruiseOrderClient.stopAllCruiseOrder(vin);
            R<XpCruiseOrder> newCruiseOrder = xpCruisePlanClient.getNewCruiseOrder(new NewCruiseOrderDto(xpVehicle.getId(), vin, xpVehicle.getFleetId(),vehiclePosition.getPoint()));
            if(newCruiseOrder.getData()!=null){
                //标记订单为返程类型巡游单
            R<XpCruiseOrder> newCruiseOrder = xpCruisePlanClient.getNewCruiseOrder(new NewCruiseOrderDto(xpVehicle.getId(), vin, xpVehicle.getFleetId(), vehiclePosition.getPoint()));
            if (newCruiseOrder.getData() != null && 200 == newCruiseOrder.getCode()) {
                //方向为正向
                XpCruiseOrder cruiseOrder = newCruiseOrder.getData();
                cruiseOrder.setOrderType(2);
@@ -137,16 +140,16 @@
                //不停车替换新任务
                cruiseOrder.setTaskActionType(TaskActionType.kTerminateForNewTask);
                R<Long> longR = xpCruiseOrderClient.addCruiseOrder(cruiseOrder);
                if(200 != longR.getCode()){
                if (200 != longR.getCode()) {
                    return R.fail(longR.getMsg());
                }
            }
        }else if(dto.getDepartureStatus()==3){
        } else if (dto.getDepartureStatus() == 3) {
            // 收车 关闭当前巡游单子 生成新的返程单子  找到收车站点
            XpCruiseOrder oldCruiseOrder = xpCruiseOrderClient.cancelCruiseOrderByVin(vin).getData();
            XpCruiseOrder xpCruiseOrder = new XpCruiseOrder();
            if(vehiclePosition!=null){
            if (vehiclePosition != null) {
                double x = vehiclePosition.getPoint().getX();
                double y = vehiclePosition.getPoint().getY();
                xpCruiseOrder.setStartLon(x);
@@ -163,7 +166,7 @@
            // 找到收车站点
            XpCruiseOrder returnCruisePoint = xpCruisePlanClient.findReturnCruisePoint(xpCruiseOrder).getData();
            if(returnCruisePoint!=null){
            if (returnCruisePoint != null) {
                //不停车替换新任务
                returnCruisePoint.setLastOrderId1("XU" + oldCruiseOrder.getId());
                returnCruisePoint.setLastXpuTaskId(oldCruiseOrder.getXpuTaskId());
@@ -202,7 +205,7 @@
            if (StringUtils.isNotBlank(vehiclePictures)) {
                JSONObject jsonObject = JSONObject.parseObject(vehiclePictures);
                // 1
                    String downloadUrl = jsonObject.getString("url");;
                String downloadUrl = jsonObject.getString("url");
                try {
                    downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                } catch (UnsupportedEncodingException e) {