| | |
| | | // 6. 获取评价信息 |
| | | LambdaQueryWrapper<XpOrderEvaluate> evaluateWrapper = new LambdaQueryWrapper<>(); |
| | | evaluateWrapper.eq(XpOrderEvaluate::getOrderId, id); |
| | | XpOrderEvaluate evaluate = xpOrderEvaluateService.getOne(evaluateWrapper); |
| | | XpOrderEvaluate evaluate = xpOrderEvaluateService.getOne(evaluateWrapper.orderByDesc(XpOrderEvaluate::getCreateTime).last(" limit 0,1")); |
| | | if (Objects.nonNull(evaluate)) { |
| | | vo.setOrderRating(evaluate.getOrderRating()); |
| | | } |
| | |
| | | orderCancel.setUserId(SecurityUtils.getUserId()); // 当前登录用户ID |
| | | orderCancel.setCancelReason("运营人员取消订单"); |
| | | xpOrderCancelService.save(orderCancel); |
| | | // 消息推送 |
| | | Map<String, Object> params = new HashMap<>(); |
| | | Map<String, Object> content = new HashMap<>(); |
| | | content.put("orderId", order.getId().toString()); |
| | | content.put("status", OrderStatusEnum.CANCELED.getCode()); |
| | | params.put("type", PushMessageTypeEnum.ORDER_STATUS.getDesc()); |
| | | params.put("content", com.alibaba.fastjson2.JSONObject.toJSONString(content)); |
| | | params.put("timestamp", new Date().getTime() + ""); |
| | | String message = JSONObject.toJSONString(params); |
| | | SendMessageDTO sendMessageDTO = new SendMessageDTO(); |
| | | sendMessageDTO.setMessage(message); |
| | | sendMessageDTO.setAppUserId(String.valueOf(order.getAppUserId())); |
| | | xpPushMessageClient.sendStatus(sendMessageDTO); |
| | | |
| | | //查询车辆信息 |
| | | R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(order.getId()); |
| | | R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(order.getVehicleId()); |
| | | if (xpVehicleR.getCode() == HttpStatus.SUCCESS && Objects.nonNull(xpVehicleR.getData())) { |
| | | XpVehicle xpVehicle = xpVehicleR.getData(); |
| | | // 组装调用车机参数 |
| | |
| | | cancelTaxiPassengerVo.setVin(xpVehicle.getVehicleVin()); |
| | | cancelTaxiPassengerVo.setUid(order.getAppUserId().toString()); |
| | | cancelTaxiPassengerVo.setOrderNo(order.getOrderNumber()); |
| | | // TODO 加配置文件取 |
| | | cancelTaxiPassengerVo.setAppId(appid); |
| | | |
| | | BaseVehicleUserDto baseVehicleUserDto = userVehicleClient.cancelTaxiPassenger(cancelTaxiPassengerVo); |
| | | if (baseVehicleUserDto == null) { |
| | | // TODO 本地无法调通 |
| | |
| | | } |
| | | |
| | | //还原车辆状态 |
| | | if (1 == xpVehicle.getState()) { |
| | | xpVehicleClient.updateVehicleStatus(new UpdateVehicleStateDto(xpVehicle.getVehicleVin(), 0)); |
| | | } |
| | | |
| | | // 消息推送 |
| | | Map<String, Object> params = new HashMap<>(); |
| | | Map<String, Object> content = new HashMap<>(); |
| | | content.put("orderId", order.getId().toString()); |
| | | content.put("status", OrderStatusEnum.CANCELED.getCode()); |
| | | params.put("type", PushMessageTypeEnum.ORDER_STATUS.getDesc()); |
| | | params.put("content", com.alibaba.fastjson2.JSONObject.toJSONString(content)); |
| | | params.put("timestamp", new Date().getTime() + ""); |
| | | String message = JSONObject.toJSONString(params); |
| | | SendMessageDTO sendMessageDTO = new SendMessageDTO(); |
| | | sendMessageDTO.setMessage(message); |
| | | sendMessageDTO.setAppUserId(String.valueOf(order.getAppUserId())); |
| | | xpPushMessageClient.sendStatus(sendMessageDTO); |
| | | |
| | | xpVehicleClient.updateVehicleStatus(new UpdateVehicleStateDto(xpVehicle.getVehicleVin(), 0)); |
| | | |
| | | // 下发命令 |
| | | if (order.getStatus() > 1) { |
| | | 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); |
| | | //车辆继续巡游 |
| | | addCruiseMission(xpVehicle); |
| | | |
| | | } else { |
| | | log.info("查询车辆信息失败,订单ID: {}, 下发取消订单命令失败", order.getId()); |
| | | } |
| | |
| | | return; |
| | | } |
| | | order.setStatus(0); |
| | | |
| | | // 组装调用车机参数 |
| | | CancelTaxiPassengerVo cancelTaxiPassengerVo = new CancelTaxiPassengerVo(); |
| | | Long vehicleId = order.getVehicleId(); |
| | | R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(vehicleId); |
| | | XpVehicle xpVehicle = xpVehicleR.getData(); |
| | | if (xpVehicle == null) { |
| | | throw new ServiceException("车辆不存在", I18nKeyConstant.VEHICLE_NOT_EXISTS); |
| | | } |
| | | cancelTaxiPassengerVo.setVin(xpVehicle.getVehicleVin()); |
| | | cancelTaxiPassengerVo.setUid(order.getAppUserId().toString()); |
| | | cancelTaxiPassengerVo.setOrderNo(order.getOrderNumber()); |
| | | // TODO 加配置文件取 |
| | | cancelTaxiPassengerVo.setAppId(appid); |
| | | |
| | | BaseVehicleUserDto baseVehicleUserDto = userVehicleClient.cancelTaxiPassenger(cancelTaxiPassengerVo); |
| | | if (baseVehicleUserDto == null) { |
| | | // TODO 本地无法调通 |
| | | // throw new RuntimeException("取消订单失败"); |
| | | } |
| | | order.setAppUserId(null); |
| | | baseMapper.updateById(order); |
| | | XpOrderCancel xpOrderCancel = new XpOrderCancel(); |
| | |
| | | xpOrderCancel.setCancelSource(1); |
| | | xpOrderCancel.setCancelReason("用户取消订单"); |
| | | xpOrderCancelService.save(xpOrderCancel); |
| | | //还原车辆状态 |
| | | if (1 == xpVehicle.getState()) { |
| | | xpVehicleClient.updateVehicleStatus(new UpdateVehicleStateDto(xpVehicle.getVehicleVin(), 0)); |
| | | } |
| | | |
| | | |
| | | // 设置当天的取消次数缓存 |
| | | Object cacheObject = redisService.getCacheObject("CANCEL_ORDER_" + uid); |
| | |
| | | |
| | | // 下发命令 |
| | | if (null != order.getVehicleId()) { |
| | | R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(order.getVehicleId()); |
| | | // 组装调用车机参数 |
| | | CancelTaxiPassengerVo cancelTaxiPassengerVo = new CancelTaxiPassengerVo(); |
| | | XpVehicle xpVehicle = xpVehicleR.getData(); |
| | | if (xpVehicle == null) { |
| | | throw new ServiceException("车辆不存在", I18nKeyConstant.VEHICLE_NOT_EXISTS); |
| | | } |
| | | cancelTaxiPassengerVo.setVin(xpVehicle.getVehicleVin()); |
| | | cancelTaxiPassengerVo.setUid(order.getAppUserId().toString()); |
| | | cancelTaxiPassengerVo.setOrderNo(order.getOrderNumber()); |
| | | cancelTaxiPassengerVo.setAppId(appid); |
| | | |
| | | BaseVehicleUserDto baseVehicleUserDto = userVehicleClient.cancelTaxiPassenger(cancelTaxiPassengerVo); |
| | | if (baseVehicleUserDto == null) { |
| | | // TODO 本地无法调通 |
| | | // throw new RuntimeException("取消订单失败"); |
| | | } |
| | | |
| | | //还原车辆状态 |
| | | if (1 == xpVehicle.getState()) { |
| | | xpVehicleClient.updateVehicleStatus(new UpdateVehicleStateDto(xpVehicle.getVehicleVin(), 0)); |
| | | } |
| | | |
| | | //下发XPU报文 |
| | | PushOrderDto pushOrderDto = new PushOrderDto(); |
| | | pushOrderDto.setOrderId(order.getId().toString()); |
| | | pushOrderDto.setVin(xpVehicle.getVehicleVin()); |
| | | pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER); |
| | | orderMissionClient.cancelOrder(pushOrderDto); |
| | | //车辆继续巡游 |
| | | addCruiseMission(xpVehicle); |
| | | } |
| | | |
| | | } |
| | |
| | | @Override |
| | | @Transactional |
| | | @ShardingSphereTransactionType(TransactionType.BASE) |
| | | public void cancelOrder(String orderId) { |
| | | public XpOrder cancelOrder(String orderId) { |
| | | XpOrder order = this.getById(orderId); |
| | | if (order == null) { |
| | | throw new ServiceException("订单不存在", I18nKeyConstant.ORDER_NOT_EXISTS); |
| | |
| | | xpOrderCancelService.save(xpOrderCancel); |
| | | |
| | | redisService.removeByPattern(order.getQueueName(), order.getOrderNumber()); |
| | | |
| | | |
| | | R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(order.getVehicleId()); |
| | | XpVehicle xpVehicle = xpVehicleR.getData(); |
| | | |
| | | |
| | | // 消息推送 |
| | |
| | | |
| | | // 移除mongo数据 |
| | | xpPricingClient.deleteXpGeoQueryEntity(order.getId().toString()); |
| | | |
| | | // 下发命令 |
| | | if (null != order.getVehicleId()) { |
| | | PushOrderDto pushOrderDto = new PushOrderDto(); |
| | | pushOrderDto.setOrderId(order.getId().toString()); |
| | | pushOrderDto.setVin(xpVehicle.getVehicleVin()); |
| | | pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER); |
| | | orderMissionClient.cancelOrder(pushOrderDto); |
| | | Long uid = order.getAppUserId(); |
| | | // 设置当天的取消次数缓存 |
| | | Object cacheObject = redisService.getCacheObject("CANCEL_ORDER_" + uid); |
| | | if (cacheObject == null) { |
| | | redisService.setCacheCancelOrder("CANCEL_ORDER_" + uid, 1); |
| | | } else { |
| | | Integer i = Integer.valueOf(cacheObject.toString()); |
| | | redisService.setCacheCancelOrder("CANCEL_ORDER_" + uid, i + 1); |
| | | } |
| | | |
| | | return order; |
| | | } |
| | | |
| | | /** |
| | |
| | | throw new ServiceException("当前城市未配置定价规则", I18nKeyConstant.ORDER_PRICING_NOT_EXISTS); |
| | | } |
| | | // 费用 |
| | | // // 查询订单轨迹 |
| | | // List<OrderTrajectory> trajectories = mongoTemplate.find( |
| | | // new Query(Criteria.where("orderId").is(orderId)) |
| | | // .with(Sort.by(Sort.Direction.ASC, "locatetime")), |
| | | // OrderTrajectory.class |
| | | // ); |
| | | // List<TaxiPricingDemoService.GpsPoint> gpsPoints = new ArrayList<>(); |
| | | // for (OrderTrajectory trajectory : trajectories) { |
| | | // TaxiPricingDemoService.GpsPoint point = new TaxiPricingDemoService.GpsPoint(trajectory.getDistance(), trajectory.getLocatetime()); |
| | | // gpsPoints.add(point); |
| | | // } |
| | | // 补充临时轨迹数据 |
| | | List<TaxiPricingDemoService.GpsPoint> gpsPoints = TaxiPricingDemoService.createMockGpsPoints(DateUtils.toDate(order.getCreateTime())); |
| | | // 查询订单轨迹 |
| | | List<OrderTrajectory> trajectories = mongoTemplate.find( |
| | | new Query(Criteria.where("orderId").is(orderId)) |
| | | .with(Sort.by(Sort.Direction.ASC, "locatetime")), |
| | | OrderTrajectory.class |
| | | ); |
| | | List<TaxiPricingDemoService.GpsPoint> gpsPoints = new ArrayList<>(); |
| | | for (OrderTrajectory trajectory : trajectories) { |
| | | TaxiPricingDemoService.GpsPoint point = new TaxiPricingDemoService.GpsPoint(trajectory.getDistance(), trajectory.getLocatetime()); |
| | | gpsPoints.add(point); |
| | | } |
| | | // 补充临时轨迹数据 |
| | | // List<TaxiPricingDemoService.GpsPoint> gpsPoints = TaxiPricingDemoService.createMockGpsPoints(DateUtils.toDate(order.getCreateTime())); |
| | | |
| | | |
| | | TaxiPricingDemoService.PricingConfig config = new TaxiPricingDemoService.PricingConfig(); |
| | |
| | | double paramNum5 =0.0; |
| | | |
| | | |
| | | for (int i = 0; i < startingFareJsonArray.size(); i++) { |
| | | com.alibaba.fastjson.JSONObject jsonObject = startingFareJsonArray.getJSONObject(i); |
| | | String num1 = jsonObject.getString("num1"); |
| | | String num2 = jsonObject.getString("num2"); |
| | | String num3 = jsonObject.getString("num3"); |
| | | String num4 = jsonObject.getString("num4"); |
| | | String num5 = jsonObject.getString("num5"); |
| | | String num6 = jsonObject.getString("num6"); |
| | | String num7 = jsonObject.getString("num7"); |
| | | |
| | | |
| | | //一口价 |
| | | if(pricing.getPricingType() == 2){ |
| | | JSONObject basicPricingJson = JSONObject.parseObject(pricing.getBasicPricingJson()); |
| | | String num1 = "00:00"; |
| | | String num2 = "23:59"; |
| | | String num3 = basicPricingJson.getString("num1"); |
| | | String num4 = basicPricingJson.getString("num2"); |
| | | String num5 = basicPricingJson.getString("num3"); |
| | | String num6 = basicPricingJson.getString("num4"); |
| | | String num7 = basicPricingJson.getString("num5"); |
| | | config.normals.add(new TaxiPricingDemoService.PricingRule("普通时段", num1, num2, Double.parseDouble(num3), Double.parseDouble(num4), Double.parseDouble(num5), Double.parseDouble(num6), Double.parseDouble(num7))); |
| | | // 判断当前是那个时段 |
| | | |
| | | Calendar calendarStart = Calendar.getInstance(); |
| | | calendarStart.setTime(date); |
| | | calendarStart.set(Calendar.HOUR_OF_DAY, Integer.valueOf(jsonObject.getString("num1").split(":")[0])); |
| | | calendarStart.set(Calendar.MINUTE, Integer.valueOf(jsonObject.getString("num1").split(":")[1])); |
| | | |
| | | Calendar calendarEnd = Calendar.getInstance(); |
| | | calendarEnd.setTime(date); |
| | | calendarEnd.set(Calendar.HOUR_OF_DAY, Integer.valueOf(jsonObject.getString("num2").split(":")[0])); |
| | | calendarEnd.set(Calendar.MINUTE, Integer.valueOf(jsonObject.getString("num2").split(":")[1])); |
| | | // 找到符合条件的直接跳出循环 |
| | | if (date.getTime() > calendarStart.getTimeInMillis() && date.getTime() < calendarEnd.getTimeInMillis()) { |
| | | paramNum4 = jsonObject.getDouble("num4"); |
| | | paramNum5 = jsonObject.getDouble("num5"); |
| | | break; |
| | | } |
| | | |
| | | |
| | | paramNum4 = basicPricingJson.getDouble("num2"); |
| | | paramNum5 = basicPricingJson.getDouble("num3"); |
| | | } |
| | | |
| | | |
| | | //动态计费 |
| | | if (pricing.getPricingType() == 1) { |
| | | |
| | | for (int i = 0; i < startingFareJsonArray.size(); i++) { |
| | | com.alibaba.fastjson.JSONObject jsonObject = startingFareJsonArray.getJSONObject(i); |
| | | String num1 = jsonObject.getString("num1"); |
| | | String num2 = jsonObject.getString("num2"); |
| | | String num3 = jsonObject.getString("num3"); |
| | | String num4 = jsonObject.getString("num4"); |
| | | String num5 = jsonObject.getString("num5"); |
| | | String num6 = jsonObject.getString("num6"); |
| | | String num7 = jsonObject.getString("num7"); |
| | | config.normals.add(new TaxiPricingDemoService.PricingRule("普通时段", num1, num2, Double.parseDouble(num3), Double.parseDouble(num4), Double.parseDouble(num5), Double.parseDouble(num6), Double.parseDouble(num7))); |
| | | // 判断当前是那个时段 |
| | | |
| | | Calendar calendarStart = Calendar.getInstance(); |
| | | calendarStart.setTime(date); |
| | | calendarStart.set(Calendar.HOUR_OF_DAY, Integer.valueOf(jsonObject.getString("num1").split(":")[0])); |
| | | calendarStart.set(Calendar.MINUTE, Integer.valueOf(jsonObject.getString("num1").split(":")[1])); |
| | | |
| | | Calendar calendarEnd = Calendar.getInstance(); |
| | | calendarEnd.setTime(date); |
| | | calendarEnd.set(Calendar.HOUR_OF_DAY, Integer.valueOf(jsonObject.getString("num2").split(":")[0])); |
| | | calendarEnd.set(Calendar.MINUTE, Integer.valueOf(jsonObject.getString("num2").split(":")[1])); |
| | | // 找到符合条件的直接跳出循环 |
| | | if (date.getTime() > calendarStart.getTimeInMillis() && date.getTime() < calendarEnd.getTimeInMillis()) { |
| | | paramNum4 = jsonObject.getDouble("num4"); |
| | | paramNum5 = jsonObject.getDouble("num5"); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | |
| | | JSONObject basicPricingJson = JSONObject.parseObject(pricing.getBasicPricingJson()); |
| | | config.peaks.add(new TaxiPricingDemoService.PricingRule("高峰期", basicPricingJson.getString("num21").split(" - ")[0], basicPricingJson.getString("num21").split(" - ")[1], Double.parseDouble(basicPricingJson.getString("num23")),paramNum4, paramNum5, Double.parseDouble(basicPricingJson.getString("num24")), Double.parseDouble(basicPricingJson.getString("num25")))); |
| | | config.peaks.add(new TaxiPricingDemoService.PricingRule("高峰期", basicPricingJson.getString("num22").split(" - ")[0], basicPricingJson.getString("num22").split(" - ")[1], Double.parseDouble(basicPricingJson.getString("num23")), paramNum4, paramNum5, Double.parseDouble(basicPricingJson.getString("num24")), Double.parseDouble(basicPricingJson.getString("num25")))); |
| | |
| | | |
| | | |
| | | TaxiPricingDemoService.TaxiPricingService service = new TaxiPricingDemoService.TaxiPricingService(); |
| | | |
| | | Integer holidayToday = holidayUtil.isHolidayToday(); |
| | | |
| | | |
| | | Map<String, BigDecimal> bill = service.calculateOrderPrice(DateUtils.toDate(order.getBoardingTime()), order.getMileageKilometers(), gpsPoints, config,holidayToday); |
| | | System.err.println("======= 订单计费账单 ======="); |
| | | bill.forEach((detail, price) -> System.err.println(detail + ": " + price + " 元")); |
| | | log.info("======= 订单计费账单 ======="); |
| | | bill.forEach((detail, price) -> log.info(detail + ": " + price + " 元")); |
| | | |
| | | BigDecimal totalAmount = bill.values().stream().reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | System.err.println("--------------------------"); |
| | | System.err.println("应付总额: " + totalAmount + " 元"); |
| | | log.info("--------------------------"); |
| | | log.info("应付总额: " + totalAmount + " 元"); |
| | | BigDecimal startMoney = BigDecimal.ZERO; |
| | | // 默认费率1 |
| | | double priceRate = 1; |
| | |
| | | if (vehicle != null) { |
| | | // 修改车辆状态 |
| | | vehicle.setState(0); |
| | | |
| | | |
| | | //发送巡游订单 |
| | | addCruiseMission(vehicle, order); |
| | | // // 获取配置 根据配置判断是否该收车 如果是则找到收车点位进行收车操作 |
| | | // R<XpTaskRule> xpTaskRuleR = xpTaskRuleClient.queryDetail(); |
| | |
| | | jobMaps |
| | | ); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 取消订单后的继续巡游任务 |
| | | * @param vehicle |
| | | */ |
| | | public void addCruiseMission(XpVehicle vehicle) { |
| | | if (vehicle.getState() != 0 || vehicle.getOperatingStatus() != 1) { |
| | | return; |
| | | } |
| | | if (vehicle.getState() != 0 || vehicle.getOperatingStatus() != 1) { |
| | | return; |
| | | } |
| | | // 判断是否有计划 |
| | | R<XpCruisePlanVehicle> xpCruisePlanR = xpCruisePlanClient.getCruisePlan(vehicle.getId()); |
| | | if (xpCruisePlanR == null || xpCruisePlanR.getData() == null) { |
| | | return; |
| | | } |
| | | |
| | | VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vehicle.getVehicleVin())), VehiclePosition.class); |
| | | // 获取配置 根据配置判断是否该收车 如果是则找到收车点位进行收车操作 |
| | | R<XpTaskRule> xpTaskRuleR = xpTaskRuleClient.queryDetail(); |
| | | XpTaskRule xpTaskRule = xpTaskRuleR.getData(); |
| | | |
| | | // 生成新的巡游单子 回到最新巡游的初始起点位置 |
| | | XpCruiseOrder xpCruiseOrders = xpCruiseOrderMapper.selectOne(new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleId, vehicle.getId()).eq(XpCruiseOrder::getStatus, 2).orderByDesc(BaseModel::getCreateTime).last("limit 1")); |
| | | int temp = 0; |
| | | if (xpCruiseOrders == null) { |
| | | temp = 1; |
| | | //特殊情况 可能没有产生终止的订单 (到站点就被正常接单了)所以找正常订单 |
| | | xpCruiseOrders = xpCruiseOrderMapper.selectOne(new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleId, vehicle.getId()).eq(XpCruiseOrder::getStatus, 3).orderByDesc(BaseModel::getCreateTime).last("limit 1")); |
| | | } |
| | | XpCruiseOrder xpCruiseOrder = new XpCruiseOrder(); |
| | | xpCruiseOrder.setVehicleId(vehicle.getId()); |
| | | xpCruiseOrder.setFleetId(vehicle.getFleetId()); |
| | | xpCruiseOrder.setVehicleVin(vehicle.getVehicleVin()); |
| | | xpCruiseOrder.setOrderType(2); |
| | | // 返程起点是当前正常订单的终点 |
| | | xpCruiseOrder.setStartPointId(null); |
| | | xpCruiseOrder.setStartPointName(null); |
| | | xpCruiseOrder.setStartLon(vehiclePosition.getPoint().getX()); |
| | | xpCruiseOrder.setStartLat(vehiclePosition.getPoint().getY()); |
| | | |
| | | // 完成的直接走终点 终止的走起点 |
| | | if (temp == 0) { |
| | | xpCruiseOrder.setEndPointId(xpCruiseOrders.getStartPointId()); |
| | | xpCruiseOrder.setEndPointName(xpCruiseOrders.getStartPointName()); |
| | | xpCruiseOrder.setEndLon(xpCruiseOrders.getStartLon()); |
| | | xpCruiseOrder.setEndLat(xpCruiseOrders.getStartLat()); |
| | | } else { |
| | | xpCruiseOrder.setEndPointId(xpCruiseOrders.getEndPointId()); |
| | | xpCruiseOrder.setEndPointName(xpCruiseOrders.getEndPointName()); |
| | | xpCruiseOrder.setEndLon(xpCruiseOrders.getEndLon()); |
| | | xpCruiseOrder.setEndLat(xpCruiseOrders.getEndLat()); |
| | | } |
| | | |
| | | |
| | | xpCruiseOrder.setStatus(0); |
| | | xpCruiseOrder.setLastOrderId(xpCruiseOrders.getId()); |
| | | xpCruiseOrder.setCreateTime(LocalDateTime.now()); |
| | | |
| | | // 判断当前时分秒是否大于收车时间 |
| | | LocalTime vehicleCollectionTime = xpTaskRule.getVehicleCollectionTime(); |
| | | if (vehicleCollectionTime.isBefore(LocalTime.now())) { |
| | | vehicle.setOperatingStatus(3); |
| | | //找到车辆的收车点位 更新终点点位 |
| | | R<XpCruiseOrder> returnCruisePoint = xpCruisePlanClient.findReturnCruisePoint(xpCruiseOrder); |
| | | xpCruiseOrder = returnCruisePoint.getData(); |
| | | } |
| | | xpVehicleClient.updateVehicleById(vehicle); |
| | | |
| | | xpCruiseOrderMapper.insert(xpCruiseOrder); |
| | | |
| | | //下发XPU消息报文 |
| | | PushOrderDto pushOrderDto = new PushOrderDto(); |
| | | pushOrderDto.setVin(xpCruiseOrder.getVehicleVin()); |
| | | pushOrderDto.setOrderId("XU" + xpCruiseOrder.getId()); |
| | | pushOrderDto.setStartLatitude(xpCruiseOrder.getStartLat()); |
| | | pushOrderDto.setStartLongitude(xpCruiseOrder.getStartLon()); |
| | | pushOrderDto.setEndLatitude(xpCruiseOrder.getEndLat()); |
| | | pushOrderDto.setEndLongitude(xpCruiseOrder.getEndLon()); |
| | | pushOrderDto.setOrderType(OrderType.CRUISE_ORDER); |
| | | pushOrderDto.setStage(2); |
| | | // 调用推送服务 orderId + carVin |
| | | orderMissionClient.pushOrder(pushOrderDto); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | private MileageDto mileageType(MileageDto param, JSONArray startingFareJsonArray, Date mileageDate, LocalDateTime begin, String num14, String num16, String num17, String num21, String num22, String num24, String num25, String num30, String num31) { |
| | | // 计算出是在哪个普通时间段内 |
| | |
| | | res.setRedPacketMoney(order.getRedPacketMoney()); |
| | | res.setCouponMoney(order.getCouponMoney()); |
| | | res.setOrderMoney(order.getOrderMoney()); |
| | | res.setKilometer(order.getMileageKilometers() == null ? BigDecimal.ZERO : BigDecimal.valueOf(order.getMileageKilometers())); |
| | | res.setKilometer(order.getMileageKilometers() == null ? BigDecimal.ZERO : BigDecimal.valueOf(order.getMileageKilometers()).multiply(BigDecimal.valueOf(1000))); |
| | | LocalDateTime createTime = order.getCreateTime(); |
| | | LocalDateTime tripEnd = order.getTripEnd(); |
| | | if (tripEnd == null) { |