liujie
2026-03-11 8fcf11054de75eb7886f0c5766508c715679300a
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -412,6 +412,7 @@
        wrapper.orderByDesc(XpOrder::getCreateTime);
        return wrapper;
    }
    private LambdaQueryWrapper<XpOrder> buildExcelQueryWrapper(XpOrderExcelQuery query) {
        LambdaQueryWrapper<XpOrder> wrapper = new LambdaQueryWrapper<>();
@@ -548,7 +549,7 @@
        vo.setStatus(order.getStatus());
        // 用户信息
        if (Objects.nonNull(order.getAppUserId()) && userInfoMap !=null && userInfoMap.containsKey(order.getAppUserId().toString())) {
        if (Objects.nonNull(order.getAppUserId()) && userInfoMap != null && userInfoMap.containsKey(order.getAppUserId().toString())) {
            UcUserInfo userInfo = userInfoMap.get(order.getAppUserId().toString());
            vo.setNickName(userInfo.getNickName());
            vo.setPhoneNumber(userInfo.getMobile());
@@ -574,15 +575,15 @@
     * 取消订单
     */
    private void cancelOrder(XpOrder order) {
        redisService.removeByPattern(order.getQueueName(),order.getOrderNumber());
        redisService.removeByPattern(order.getQueueName(), order.getOrderNumber());
        //判断还原车辆状态
        if(null == order.getVehicleId()){
        if (null == order.getVehicleId()) {
            Object cacheObject1 = redisService.getCacheObject("CREATE_ORDER:" + order.getId().toString());
            if(null != cacheObject1){
            if (null != cacheObject1) {
                com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSON.parseObject(cacheObject1.toString());
                String vin = jsonObject.getString("vin");
                XpVehicle vehicle = xpVehicleClient.findByVehicleVin(vin).getData();
                if(null != vehicle && 0 != vehicle.getState()){
                if (null != vehicle && 0 != vehicle.getState()) {
                    vehicle.setState(0);
                    xpVehicleClient.updateVehicleById(vehicle);
                }
@@ -625,7 +626,7 @@
            }
            //还原车辆状态
            if(1 == xpVehicle.getState()){
            if (1 == xpVehicle.getState()) {
                xpVehicleClient.updateVehicleStatus(new UpdateVehicleStateDto(xpVehicle.getVehicleVin(), 0));
            }
@@ -1087,7 +1088,7 @@
    @Transactional
    public void cancelOrder(Long orderId, String uid) {
        XpOrder order = this.getById(orderId);
        if(order.getStatus()==0){
        if (order.getStatus() == 0) {
            return;
        }
        if (order == null) {
@@ -1101,17 +1102,17 @@
        }
        try {
            redisService.removeByPattern(order.getQueueName(),order.getOrderNumber());
        }catch (Exception e){
            redisService.removeByPattern(order.getQueueName(), order.getOrderNumber());
        } catch (Exception e) {
        }
        //判断还原车辆状态
        if(null == order.getVehicleId()){
        if (null == order.getVehicleId()) {
            Object cacheObject1 = redisService.getCacheObject("CREATE_ORDER:" + order.getId().toString());
            if(null != cacheObject1){
            if (null != cacheObject1) {
                com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSON.parseObject(cacheObject1.toString());
                String vin = jsonObject.getString("vin");
                XpVehicle vehicle = xpVehicleClient.findByVehicleVin(vin).getData();
                if(null != vehicle && 0 != vehicle.getState()){
                if (null != vehicle && 0 != vehicle.getState()) {
                    vehicle.setState(0);
                    xpVehicleClient.updateVehicleById(vehicle);
                }
@@ -1124,7 +1125,7 @@
            baseMapper.updateById(order);
            return;
        }
        if(order.getStatus()==1){
        if (order.getStatus() == 1) {
            order.setStatus(0);
            baseMapper.updateById(order);
            return;
@@ -1159,7 +1160,7 @@
        xpOrderCancel.setCancelReason("用户取消订单");
        xpOrderCancelService.save(xpOrderCancel);
        //还原车辆状态
        if(1 == xpVehicle.getState()){
        if (1 == xpVehicle.getState()) {
            xpVehicleClient.updateVehicleStatus(new UpdateVehicleStateDto(xpVehicle.getVehicleVin(), 0));
        }
@@ -1219,7 +1220,7 @@
        xpOrderCancel.setCreateTime(LocalDateTime.now());
        xpOrderCancelService.save(xpOrderCancel);
        redisService.removeByPattern(order.getQueueName(),order.getOrderNumber());
        redisService.removeByPattern(order.getQueueName(), order.getOrderNumber());
        R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(order.getVehicleId());
@@ -1374,6 +1375,11 @@
        order.setStatus(8);
        order.setAppUserId(null);
        order.setTripEnd(LocalDateTime.now());
        long minutes = Duration.between(order.getBoardingTime(), order.getTripEnd()).toMinutes();
        order.setDuration((double) minutes);
//        order.setMileageKilometers(80.0);
        baseMapper.updateById(order);
        // 解绑用户与车辆关系
@@ -1737,13 +1743,13 @@
            return;
        }
        if(vehicle.getState()!=0 || vehicle.getOperatingStatus()!=1){
        if (vehicle.getState() != 0 || vehicle.getOperatingStatus() != 1) {
            return;
        }
        // 判断是否有计划
        R<XpCruisePlanVehicle> xpCruisePlanR = xpCruisePlanClient.getCruisePlan(vehicle.getId());
        if(xpCruisePlanR==null || xpCruisePlanR.getData()==null){
        if (xpCruisePlanR == null || xpCruisePlanR.getData() == null) {
            return;
        }
@@ -2201,17 +2207,15 @@
                OrderTrajectory.class
        );
        orderDetailVo.setTrajectories(trajectories);
        if (order.getTripBegin() != null && order.getTripEnd() != null) {
        if (order.getBoardingTime() != null && order.getTripEnd() != null) {
            // 计算两个时间相差多少分钟
            long minutesDifference = Duration.between(order.getTripBegin(), order.getTripEnd()).toMinutes();
            long minutesDifference = Duration.between(order.getBoardingTime(), order.getTripEnd()).toMinutes();
            orderDetailVo.setOrderTime(minutesDifference);
        } else {
            orderDetailVo.setOrderTime(0l);
        }
        if (order.getStartMileage() != null) {
            orderDetailVo.setTotalMileage(order.getStartMileage() + (order.getMileageKilometers() != null ? order.getMileageKilometers() : 0D));
        orderDetailVo.setTotalMileage(order.getMileageKilometers() != null ? order.getMileageKilometers() : 0D);
        }
        return orderDetailVo;
    }
@@ -2271,7 +2275,7 @@
                // value 订单Id_经纬度_状态_用户id_订单编号_距离_时间
                try {
                    redisService.popFirstElement(order.getQueueName());
                }catch (Exception e){
                } catch (Exception e) {
                    log.error("Redis弹出队列元素出错");
                }
                XpGeoQueryEntity xpGeoQueryEntity = new XpGeoQueryEntity();
@@ -2384,7 +2388,9 @@
        if (xpOrder.getVehicleId() != null) {
            R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(xpOrder.getVehicleId());
            xpOrderDetailVO.setPlateNumber(xpVehicleR.getData().getPlateNumber());
            XpVehicle vehicle = xpVehicleR.getData();
            xpOrderDetailVO.setPlateNumber(vehicle.getPlateNumber());
            xpOrderDetailVO.setVehiclePictures(vehicle.getVehiclePictures());
        }
        return xpOrderDetailVO;