| | |
| | | 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; |
| | | import com.alibaba.fastjson2.JSONObject; |
| | |
| | | import com.xiaopeng.api.feignClient.maintenance.XpTaskRuleClient; |
| | | import com.xiaopeng.api.feignClient.map.XpMapClient; |
| | | import com.xiaopeng.api.feignClient.operation.*; |
| | | import com.xiaopeng.api.feignClient.order.XpCruiseOrderClient; |
| | | import com.xiaopeng.api.feignClient.pushMessage.XpPushMessageClient; |
| | | import com.xiaopeng.api.feignClient.vehicleConvoy.*; |
| | | import com.xiaopeng.api.model.maintenance.XpTaskRule; |
| | |
| | | import com.xiaopeng.api.vo.automaticPilot.VehiclePosition; |
| | | import com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType; |
| | | import com.xiaopeng.api.vo.automaticPilot.protobuf.OrderStatus; |
| | | import com.xiaopeng.api.vo.automaticPilot.protobuf.TaskActionType; |
| | | import com.xiaopeng.api.vo.operation.NearestNextVo; |
| | | import com.xiaopeng.api.vo.operation.RouteVo; |
| | | import com.xiaopeng.api.vo.order.*; |
| | |
| | | private BootCommonService bootCommonService; |
| | | @Autowired |
| | | private SysGroupMenuClient sysGroupMenuClient; |
| | | |
| | | @Autowired |
| | | private XpCruiseOrderClient xpCruiseOrderClient; |
| | | |
| | | @Autowired |
| | | private MongoTemplate mongoTemplate; |
| | |
| | | |
| | | @Resource |
| | | private BluetoothUnlockClient bluetoothUnlockClient; |
| | | |
| | | @Resource |
| | | private XpTradingStrategyClient tradingStrategyClient; |
| | | |
| | | @Value("${robotaxi.appId:xp_robotaxi_api}") |
| | | private String appid; |
| | |
| | | } |
| | | wrapper.eq(Objects.nonNull(query.getUid()), XpOrder::getAppUserId, query.getUid()); |
| | | wrapper.orderByDesc(XpOrder::getCreateTime); |
| | | if(null != query.getActivityId()){ |
| | | wrapper.eq(XpOrder::getActivityId, query.getActivityId()); |
| | | } |
| | | |
| | | List<XpOrder> list = this.list(wrapper); |
| | | BigDecimal orderMoney = list.stream().filter(order -> Objects.nonNull(order.getOrderMoney())).map(XpOrder::getOrderMoney).collect(Collectors.toList()).stream().reduce(BigDecimal::add).orElse(BigDecimal.ZERO); |
| | | BigDecimal couponMoney = list.stream().filter(order -> Objects.nonNull(order.getCouponMoney())).map(XpOrder::getCouponMoney).collect(Collectors.toList()).stream().reduce(BigDecimal::add).orElse(BigDecimal.ZERO); |
| | | |
| | | // 2. 分页查询 |
| | | Page<XpOrder> page = new Page<>(query.getPageNum(), query.getPageSize()); |
| | |
| | | |
| | | // 5. 组装 VO |
| | | List<XpOrderPageVO> voList = pageResult.getRecords().stream() |
| | | .map(order -> convertToPageVO(order, userInfoMap, vehicleMap, fleetMap)) |
| | | .map(order -> convertToPageVO(order, userInfoMap, vehicleMap, fleetMap, orderMoney, couponMoney)) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // 6. 返回分页结果 |
| | |
| | | |
| | | // 5. 组装 VO |
| | | return orderList.stream() |
| | | .map(order -> convertToPageVO(order, userInfoMap, vehicleMap, fleetMap)) |
| | | .map(order -> convertToPageVO(order, userInfoMap, vehicleMap, fleetMap, BigDecimal.ZERO, BigDecimal.ZERO)) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | |
| | | private XpOrderPageVO convertToPageVO(XpOrder order, |
| | | Map<String, UcUserInfo> userInfoMap, |
| | | Map<Long, XpVehicle> vehicleMap, |
| | | Map<Long, XpFleet> fleetMap) { |
| | | Map<Long, XpFleet> fleetMap, |
| | | BigDecimal orderMoney, |
| | | BigDecimal couponMoney) { |
| | | XpOrderPageVO vo = new XpOrderPageVO(); |
| | | vo.setId(order.getId()); |
| | | vo.setOrderNumber(order.getOrderNumber()); |
| | |
| | | vo.setStatus(order.getStatus()); |
| | | vo.setStartPointName(order.getStartPointName()); |
| | | vo.setEndPointName(order.getEndPointName()); |
| | | vo.setOrderTotalAmount(orderMoney); |
| | | vo.setDiscountTotalAmount(couponMoney); |
| | | |
| | | // 用户信息 |
| | | if (Objects.nonNull(order.getAppUserId()) && userInfoMap != null && userInfoMap.containsKey(order.getAppUserId().toString())) { |
| | |
| | | } |
| | | |
| | | Long userId = order.getAppUserId(); |
| | | Integer status = order.getStatus(); |
| | | if (order.getStatus() == 1) { |
| | | order.setStatus(0); |
| | | Long appUserId = order.getAppUserId(); |
| | | order.setAppUserId(null); |
| | | baseMapper.updateById(order); |
| | | order.setAppUserId(appUserId); |
| | | redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS); |
| | | bootCommonService.setCache_orderStatus(order.getId(),order,null); |
| | | //删除蓝牙秘钥 |
| | | String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + order.getId()); |
| | | if(StringUtils.isNotBlank(token)){ |
| | |
| | | // 1. 更新订单状态为已取消(0) |
| | | lambdaUpdate().set(XpOrder::getStatus, 0) |
| | | .eq(XpOrder::getId, order.getId()).update(); |
| | | redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS); |
| | | order.setStatus(OrderStatusEnum.CANCELED.getCode()); |
| | | |
| | | bootCommonService.setCache_orderStatus(order.getId(),order,null); |
| | | |
| | | // 2. 保存取消记录 |
| | | XpOrderCancel orderCancel = new XpOrderCancel(); |
| | |
| | | } |
| | | |
| | | // 下发命令 |
| | | PushOrderDto pushOrderDto = new PushOrderDto(); |
| | | pushOrderDto.setOrderId(order.getId().toString()); |
| | | pushOrderDto.setVin(xpVehicle.getVehicleVin()); |
| | | pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER); |
| | | orderMissionClient.cancelOrder(pushOrderDto); |
| | | log.info("运营人员取消订单成功,开始执行巡游订单 {}", order.getId()); |
| | | // PushOrderDto pushOrderDto = new PushOrderDto(); |
| | | // pushOrderDto.setOrderId(order.getId().toString()); |
| | | // pushOrderDto.setVin(xpVehicle.getVehicleVin()); |
| | | // pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER); |
| | | // orderMissionClient.cancelOrder(pushOrderDto); |
| | | // log.info("运营人员取消订单成功,开始执行巡游订单 {}", order.getId()); |
| | | //车辆继续巡游 |
| | | addCruiseMission(xpVehicle.getId()); |
| | | addCruiseMission(order, status); |
| | | |
| | | } else { |
| | | log.info("查询车辆信息失败,订单ID: {}, 下发取消订单命令失败", order.getId()); |
| | |
| | | Long appUserId = order.getAppUserId(); |
| | | order.setAppUserId(null); |
| | | this.updateById(order); |
| | | redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 7, 24L, TimeUnit.HOURS); |
| | | |
| | | bootCommonService.setCache_orderStatus(order.getId(),order,null); |
| | | |
| | | // 消息推送 |
| | | Map<String, Object> params1 = new HashMap<>(); |
| | |
| | | } |
| | | |
| | | //给XPU推送订单取消的报文 |
| | | PushOrderDto pushOrderDto = new PushOrderDto(); |
| | | pushOrderDto.setOrderId(order.getId().toString()); |
| | | pushOrderDto.setVin(xpVehicle.getVehicleVin()); |
| | | pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER); |
| | | orderMissionClient.cancelOrder(pushOrderDto); |
| | | // PushOrderDto pushOrderDto = new PushOrderDto(); |
| | | // pushOrderDto.setOrderId(order.getId().toString()); |
| | | // pushOrderDto.setVin(xpVehicle.getVehicleVin()); |
| | | // pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER); |
| | | // orderMissionClient.cancelOrder(pushOrderDto); |
| | | |
| | | //结束行程,修改状态和计算费用 |
| | | endTrip(order.getId(), appUserId.toString()); |
| | |
| | | |
| | | // 6.1.1 取消原订单指令 |
| | | PushOrderDto cancelDto = new PushOrderDto(); |
| | | cancelDto.setTaskId(IdUtil.getSnowflakeNextIdStr()); |
| | | cancelDto.setStartTaskId(order.getXpuStartTaskId()); |
| | | cancelDto.setEndTaskId(order.getXpuEndTaskId()); |
| | | cancelDto.setOrderId(order.getId().toString()); |
| | | cancelDto.setVin(oldVehicle.getVehicleVin()); |
| | | cancelDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER); |
| | |
| | | orderMissionClient.cancelOrder(cancelDto); |
| | | cacheReassignCancelContext(orderId, oldVehicleId, newVehicleId, |
| | | oldVehicle.getVehicleVin(), currentStatus); |
| | | log.info("已取消原车辆订单指令,订单ID: {}, VIN: {}, taskId: {}, cancelScene: {}", |
| | | orderId, oldVehicle.getVehicleVin(), cancelDto.getTaskId(), cancelDto.getCancelScene()); |
| | | log.info("已取消原车辆订单指令,订单ID: {}, VIN: {}, cancelScene: {}", |
| | | orderId, oldVehicle.getVehicleVin(), cancelDto.getCancelScene()); |
| | | |
| | | // 6.1.2 解绑乘客与原车辆关系 |
| | | if (Objects.nonNull(order.getAppUserId())) { |
| | |
| | | log.info("已绑定乘客与新车辆关系,用户ID: {}, VIN: {}", order.getAppUserId(), newVehicle.getVehicleVin()); |
| | | } |
| | | |
| | | // 11.2 下发订单到新车辆 |
| | | |
| | | // 关闭巡游单子 |
| | | R<XpCruiseOrder> stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(newVehicle.getVehicleVin()); |
| | | if (stringR == null || stringR.getCode() != 200) { |
| | | log.info("关闭巡游单子失败 车牌号 {}", newVehicle.getPlateNumber()); |
| | | } |
| | | log.info("关闭巡游单成功 {} {}", newVehicle.getPlateNumber(), order.getOrderNumber()); |
| | | XpCruiseOrder cruiseOrder = stringR.getData(); |
| | | // 下发命令 |
| | | PushOrderDto pushOrderDto = new PushOrderDto(); |
| | | pushOrderDto.setTaskId(order.getXpuTaskId()); |
| | | pushOrderDto.setStartTaskId(order.getXpuStartTaskId()); |
| | | pushOrderDto.setEndTaskId(order.getXpuEndTaskId()); |
| | | pushOrderDto.setVin(newVehicle.getVehicleVin()); |
| | | pushOrderDto.setOrderId(order.getId().toString()); |
| | | pushOrderDto.setStartLatitude(order.getStartLat()); |
| | |
| | | pushOrderDto.setEndPoiName(order.getEndPointName()); |
| | | pushOrderDto.setOrderType(OrderType.USER_ORDER); |
| | | pushOrderDto.setStage(1); |
| | | pushOrderDto.setLastOrderId("XU" + cruiseOrder.getId()); |
| | | pushOrderDto.setLastXpuTaskId(cruiseOrder.getXpuTaskId()); |
| | | pushOrderDto.setTaskActionType(TaskActionType.kTerminateForNewTask); |
| | | // 调用推送服务 orderId + carVin |
| | | orderMissionClient.pushOrder(pushOrderDto); |
| | | |
| | | |
| | | log.info("已下发订单到新车辆,订单ID: {}, VIN: {}", orderId, newVehicle.getVehicleVin()); |
| | | |
| | | // 11.3 更新新车辆状态为已接单 |
| | |
| | | |
| | | // 下发巡游订单到原车辆 |
| | | PushOrderDto pushOrderDto = new PushOrderDto(); |
| | | pushOrderDto.setTaskId(returnOrder.getXpuTaskId()); |
| | | pushOrderDto.setEndTaskId(returnOrder.getXpuTaskId()); |
| | | pushOrderDto.setVin(oldVehicle.getVehicleVin()); |
| | | pushOrderDto.setOrderId("XU" + returnOrder.getId()); |
| | | pushOrderDto.setStartLatitude(returnOrder.getStartLat()); |
| | |
| | | pushOrderDto.setEndLongitude(returnOrder.getEndLon()); |
| | | pushOrderDto.setOrderType(OrderType.CRUISE_ORDER); |
| | | pushOrderDto.setStage(2); |
| | | pushOrderDto.setLastOrderId("XU" + lastCruise.getId()); |
| | | pushOrderDto.setLastXpuTaskId(lastCruise.getXpuTaskId()); |
| | | pushOrderDto.setTaskActionType(TaskActionType.kTerminateForNewTask); |
| | | // 调用推送服务 orderId + carVin |
| | | orderMissionClient.pushOrder(pushOrderDto); |
| | | |
| | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | Integer status = order.getStatus(); |
| | | //判断还原车辆状态 |
| | | if (null == order.getVehicleId()) { |
| | | Object cacheObject1 = redisService.getCacheObject("CREATE_ORDER:" + order.getId().toString()); |
| | |
| | | xpVehicleClient.updateVehicleById(vehicle1); |
| | | log.info("用户取消订单,车辆状态修改0 {}", xpVehicle.getPlateNumber()); |
| | | } |
| | | |
| | | //下发XPU报文 |
| | | PushOrderDto pushOrderDto = new PushOrderDto(); |
| | | pushOrderDto.setOrderId(order.getId().toString()); |
| | | pushOrderDto.setVin(xpVehicle.getVehicleVin()); |
| | | pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER); |
| | | orderMissionClient.cancelOrder(pushOrderDto); |
| | | log.info("用户取消订单成功,开始执行巡游订单 {}", order.getId()); |
| | | //车辆继续巡游 |
| | | addCruiseMission(xpVehicle.getId()); |
| | | addCruiseMission(order, status); |
| | | } |
| | | order.setStatus(0); |
| | | Long appUserId = order.getAppUserId(); |
| | | order.setAppUserId(null); |
| | | baseMapper.updateById(order); |
| | | order.setAppUserId(appUserId); |
| | | redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS); |
| | | bootCommonService.setCache_orderStatus(order.getId(),order,null); |
| | | //删除蓝牙秘钥 |
| | | String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + order.getId()); |
| | | if(StringUtils.isNotBlank(token)){ |
| | |
| | | order.setAppUserId(null); |
| | | baseMapper.updateById(order); |
| | | order.setAppUserId(appUserId); |
| | | redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS); |
| | | bootCommonService.setCache_orderStatus(order.getId(),order,null); |
| | | //删除蓝牙秘钥 |
| | | String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + order.getId()); |
| | | if(StringUtils.isNotBlank(token)){ |
| | |
| | | xpOrder.setAppUserId(null); |
| | | xpOrder.setStatus(10); |
| | | baseMapper.updateById(xpOrder); |
| | | redisService.setCacheObject("ORDER_STATUS:" + xpOrder.getId(), 10, 24L, TimeUnit.HOURS); |
| | | bootCommonService.setCache_orderStatus(xpOrder.getId(),xpOrder,null); |
| | | |
| | | XpOrderEvaluate evaluate = new XpOrderEvaluate(); |
| | | evaluate.setOrderId(xpOrder.getId()); |
| | |
| | | sendRoute(appUserId.toString(), orderId, "ORDER_NAVIGATION_END_DATA", xpVehicle.getVehicleVin()); |
| | | // 删除定时任务job |
| | | QuartzManager.removeJob((OrderCancelJob.name + xpOrder.getId()).toUpperCase(), TimeJobType.ORDER_CANCEL); |
| | | //乘客已上车,重新倒计时不开始行程取消订单 |
| | | XpPoint xpPoint1 = xpPointClient.queryById(xpOrder.getStartPointId()).getData(); |
| | | XpTradingStrategy tradingStrategy = tradingStrategyClient.getTradingStrategyByCityCode(xpPoint1.getCityCode()).getData(); |
| | | if(null != tradingStrategy){ |
| | | Map<String, ? extends Object> cancelJobMaps1 = |
| | | new ImmutableMap.Builder<String, Long>(). |
| | | put("id", xpOrder.getId()) |
| | | .build(); |
| | | QuartzManager.addJob( |
| | | OrderCancelJob.class, |
| | | (OrderCancelJob.name + xpOrder.getId()).toUpperCase(), |
| | | TimeJobType.ORDER_CANCEL, |
| | | DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(tradingStrategy.getBdNotBoardedTime())), |
| | | cancelJobMaps1 |
| | | ); |
| | | } |
| | | |
| | | // 车辆到达上车点时间 |
| | | xpOrder.setArrivalTime(LocalDateTime.now()); |
| | | break; |
| | | case 6: |
| | | // 删除定时任务job |
| | | QuartzManager.removeJob((OrderCancelJob.name + xpOrder.getId()).toUpperCase(), TimeJobType.ORDER_CANCEL); |
| | | // 行程开始时间 |
| | | xpOrder.setTripBegin(LocalDateTime.now()); |
| | | //添加预估到达时间 |
| | |
| | | } |
| | | |
| | | //判断是否有连环单 |
| | | Long id = redisService.getCacheObject(CacheConstants.nextOrder(xpOrder.getId().toString())); |
| | | if(id != null){ |
| | | String json = redisService.getCacheObject(CacheConstants.nextOrder(xpOrder.getId().toString())); |
| | | if (StringUtils.isNotEmpty(json)){ |
| | | JSONObject jsonObject = JSON.parseObject(json); |
| | | Long id = jsonObject.getLong("orderId"); |
| | | jobMaps = new ImmutableMap.Builder<String, String>() |
| | | .put("id", id.toString()) |
| | | .put("oldOrderId", xpOrder.getId().toString()) |
| | | .put("appid", appid) |
| | | .put("orderType", OrderType.USER_ORDER) |
| | | .build(); |
| | | |
| | | QuartzManager.addJob( |
| | | PushChainReactionOrderJob.class, |
| | | (PushChainReactionOrderJob.name + id).toUpperCase(), |
| | | TimeJobType.ADD_CRUISE_MISSION, |
| | | TimeJobType.ADD_CHAIN_REACTION_ORDER_MISSION, |
| | | DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(point.getParkingTimeLimit())), |
| | | jobMaps |
| | | ); |
| | |
| | | xpOrder.setStatus(status); |
| | | xpOrder.setAppUserId(null); |
| | | this.updateById(xpOrder); |
| | | redisService.setCacheObject("ORDER_STATUS:" + xpOrder.getId(), status, 24L, TimeUnit.HOURS); |
| | | bootCommonService.setCache_orderStatus(xpOrder.getId(),xpOrder,null); |
| | | return R.ok(); |
| | | } |
| | | |
| | |
| | | xpOrder1.setStatus(OrderStatusEnum.PENDING_PAYMENT.getCode()); |
| | | xpOrder1.setUpdateTime(LocalDateTime.now()); |
| | | baseMapper.updateById(xpOrder1); |
| | | redisService.setCacheObject("ORDER_STATUS:" + id, xpOrder1.getStatus(), 24L, TimeUnit.HOURS); |
| | | bootCommonService.setCache_orderStatus(xpOrder1.getId(),xpOrder1,null); |
| | | |
| | | } |
| | | |
| | |
| | | order.setTripEnd(LocalDateTime.now()); |
| | | baseMapper.updateById(order); |
| | | order.setAppUserId(appUserId); |
| | | redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 8, 24L, TimeUnit.HOURS); |
| | | bootCommonService.setCache_orderStatus(order.getId(),order,null); |
| | | //删除蓝牙秘钥 |
| | | String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + orderId); |
| | | if(StringUtils.isNotBlank(token)){ |
| | |
| | | log.info("添加巡游单成功 {}", xpCruiseOrder.getId()); |
| | | //下发XUP巡游订单报文 |
| | | PushOrderDto pushOrderDto = new PushOrderDto(); |
| | | pushOrderDto.setTaskId(xpCruiseOrder.getXpuTaskId()); |
| | | pushOrderDto.setEndTaskId(xpCruiseOrder.getXpuTaskId()); |
| | | pushOrderDto.setVin(xpCruiseOrder.getVehicleVin()); |
| | | pushOrderDto.setOrderId("XU" + xpCruiseOrder.getId()); |
| | | pushOrderDto.setStartLatitude(xpCruiseOrder.getStartLat()); |
| | |
| | | pushOrderDto.setEndLongitude(xpCruiseOrder.getEndLon()); |
| | | pushOrderDto.setOrderType(OrderType.CRUISE_ORDER); |
| | | pushOrderDto.setStage(2); |
| | | pushOrderDto.setLastOrderId(order.getId() + ""); |
| | | pushOrderDto.setLastOrderId(order.getXpuEndTaskId()); |
| | | pushOrderDto.setTaskActionType(TaskActionType.kTerminateForNewTask); |
| | | orderMissionClient.pushOrder(pushOrderDto); |
| | | log.info("下发XUP巡游订单报文成功"); |
| | | } |
| | |
| | | |
| | | /** |
| | | * 取消订单后的继续巡游任务 |
| | | * @param vehicleId |
| | | */ |
| | | public void addCruiseMission(Long vehicleId) { |
| | | XpVehicle vehicle = xpVehicleClient.queryById(vehicleId).getData(); |
| | | public void addCruiseMission(XpOrder order, Integer status) { |
| | | XpVehicle vehicle = xpVehicleClient.queryById(order.getVehicleId()).getData(); |
| | | if (vehicle.getState() != 0 || vehicle.getOperatingStatus() != 1) { |
| | | return; |
| | | } |
| | |
| | | |
| | | //下发XPU消息报文 |
| | | PushOrderDto pushOrderDto = new PushOrderDto(); |
| | | pushOrderDto.setTaskId(xpCruiseOrder.getXpuTaskId()); |
| | | pushOrderDto.setEndTaskId(xpCruiseOrder.getXpuTaskId()); |
| | | pushOrderDto.setVin(xpCruiseOrder.getVehicleVin()); |
| | | pushOrderDto.setOrderId("XU" + xpCruiseOrder.getId()); |
| | | pushOrderDto.setStartLatitude(xpCruiseOrder.getStartLat()); |
| | |
| | | pushOrderDto.setEndLongitude(xpCruiseOrder.getEndLon()); |
| | | pushOrderDto.setOrderType(OrderType.CRUISE_ORDER); |
| | | pushOrderDto.setStage(2); |
| | | pushOrderDto.setLastOrderId(order.getId() + ""); |
| | | pushOrderDto.setLastXpuTaskId(status < 5 ? order.getXpuStartTaskId() : order.getXpuEndTaskId()); |
| | | pushOrderDto.setTaskActionType(status < 5 ? TaskActionType.kTerminateForNewTask : TaskActionType.kWaitPrevTaskFinish); |
| | | // 调用推送服务 orderId + carVin |
| | | log.info("开始推送XPU巡游订单 {}", xpCruiseOrder.getVehicleVin()); |
| | | orderMissionClient.pushOrder(pushOrderDto); |
| | |
| | | } |
| | | } |
| | | baseMapper.updateById(order); |
| | | redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 9, 24L, TimeUnit.HOURS); |
| | | bootCommonService.setCache_orderStatus(order.getId(),order,null); |
| | | return R.ok(); |
| | | } |
| | | |
| | |
| | | order.setAcceptanceTime(LocalDateTime.now()); |
| | | R<XpVehicle> byVehicleVin = xpVehicleClient.findByVehicleVin(dto.getXpVehicleVin()); |
| | | XpVehicle vehicle = null; |
| | | String plateNumber = null; |
| | | if (byVehicleVin.getCode() == 200) { |
| | | vehicle = byVehicleVin.getData(); |
| | | order.setVehicleId(vehicle.getId()); |
| | | order.setFleetId(vehicle.getFleetId()); |
| | | plateNumber = vehicle.getPlateNumber(); |
| | | addTaxiPassengerVo.setVin(vehicle.getVehicleVin()); |
| | | } |
| | | order.setStatus(2); |
| | |
| | | addTaxiPassengerVo.setUid(appUserId.toString()); |
| | | order.setAppUserId(null); |
| | | this.updateById(order); |
| | | redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 2, 24L, TimeUnit.HOURS); |
| | | bootCommonService.setCache_orderStatus(order.getId(),order,null); |
| | | |
| | | //构建推送消息 |
| | | Map<String, Object> params = new HashMap<>(); |
| | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 2, 24L, TimeUnit.HOURS); |
| | | // redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 2, 24L, TimeUnit.HOURS);//没看懂为啥重复 缓存 |
| | | addTaxiPassengerVo.setOrderNo(order.getOrderNumber()); |
| | | addTaxiPassengerVo.setAppId(appid); |
| | | userVehicleClient.addTaxiPassenger(addTaxiPassengerVo); |
| | |
| | | return true; |
| | | } |
| | | } |
| | | RouteVo routeVo = this.getRouteVo(xpOrder, vehicleVin); |
| | | if(routeVo.getDistance() <sylc){ |
| | | isCancel = true; |
| | | |
| | | try { |
| | | RouteVo routeVo = this.getRouteVo(xpOrder, vehicleVin); |
| | | if(routeVo.getDistance() <sylc){ |
| | | isCancel = true; |
| | | } |
| | | if(routeVo.getDuration() < sysj){ |
| | | isCancel = true; |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("获取两个点位车的距离错误",e); |
| | | throw new ServiceException("获取两个点位车的距离错误"); |
| | | } |
| | | if(routeVo.getDuration() < sysj){ |
| | | isCancel = true; |
| | | } |
| | | |
| | | |
| | | return isCancel; |
| | | } |