yyy
2026-04-21 6f55da80d19cba61bd23cd302b76bbb23038f7bd
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -2,6 +2,7 @@
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
@@ -181,6 +182,9 @@
    @Value("${robotaxi.appId:xp_robotaxi_api}")
    private String appid;
    @Resource(name = "hutoolSnowflake")
    private Snowflake snowflake;
    @Override
@@ -1104,6 +1108,7 @@
            // 11.2 下发订单到新车辆
            PushOrderDto pushOrderDto = new PushOrderDto();
            pushOrderDto.setTaskId(order.getXpuTaskId());
            pushOrderDto.setVin(newVehicle.getVehicleVin());
            pushOrderDto.setOrderId(order.getId().toString());
            pushOrderDto.setStartLatitude(order.getStartLat());
@@ -1182,6 +1187,7 @@
            returnOrder.setLastOrderId(lastCruise.getId());
            returnOrder.setCreateTime(LocalDateTime.now());
            returnOrder.setMissionId(lastCruise.getMissionId());
            returnOrder.setXpuTaskId(snowflake.nextId() + "");
            // 返程起点 = 当前订单的终点(车辆当前位置附近)
            returnOrder.setStartPointId(order.getEndPointId());
@@ -1220,6 +1226,7 @@
            // 下发巡游订单到原车辆
            PushOrderDto pushOrderDto = new PushOrderDto();
            pushOrderDto.setTaskId(returnOrder.getXpuTaskId());
            pushOrderDto.setVin(oldVehicle.getVehicleVin());
            pushOrderDto.setOrderId("XU" + returnOrder.getId());
            pushOrderDto.setStartLatitude(returnOrder.getStartLat());
@@ -2557,6 +2564,7 @@
        xpCruiseOrder.setStartPointName(order.getEndPointName());
        xpCruiseOrder.setStartLon(order.getEndLon());
        xpCruiseOrder.setStartLat(order.getEndLat());
        xpCruiseOrder.setXpuTaskId(snowflake.nextId() + "");
        // 完成的直接走终点   终止的走起点
        if(null != xpCruiseOrders){
@@ -2617,6 +2625,7 @@
        log.info("添加巡游单成功 {}", xpCruiseOrder.getId());
        //下发XUP巡游订单报文
        PushOrderDto pushOrderDto = new PushOrderDto();
        pushOrderDto.setTaskId(xpCruiseOrder.getXpuTaskId());
        pushOrderDto.setVin(xpCruiseOrder.getVehicleVin());
        pushOrderDto.setOrderId("XU" + xpCruiseOrder.getId());
        pushOrderDto.setStartLatitude(xpCruiseOrder.getStartLat());
@@ -2664,6 +2673,7 @@
        xpCruiseOrder.setFleetId(vehicle.getFleetId());
        xpCruiseOrder.setVehicleVin(vehicle.getVehicleVin());
        xpCruiseOrder.setOrderType(2);
        xpCruiseOrder.setXpuTaskId(snowflake.nextId() + "");
        // 返程起点是当前正常订单的终点
        xpCruiseOrder.setStartPointId(null);
        xpCruiseOrder.setStartPointName(null);
@@ -2733,6 +2743,7 @@
        //下发XPU消息报文
        PushOrderDto pushOrderDto = new PushOrderDto();
        pushOrderDto.setTaskId(xpCruiseOrder.getXpuTaskId());
        pushOrderDto.setVin(xpCruiseOrder.getVehicleVin());
        pushOrderDto.setOrderId("XU" + xpCruiseOrder.getId());
        pushOrderDto.setStartLatitude(xpCruiseOrder.getStartLat());
@@ -2989,6 +3000,10 @@
            this.updateById(order);
        }
        res.setTime(new BigDecimal(order.getDuration() == null ? 0 : order.getDuration()).multiply(new BigDecimal(60)).setScale(0, RoundingMode.HALF_UP));
        XpSystemSetting xpSystemSetting = xpSystemSettingClient.getSystemSettingOne().getData();
        if(null != xpSystemSetting){
            res.setOperateFree(xpSystemSetting.getOperateFree());
        }
        return R.ok(res);
    }