diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java index 1fc6e04113..32bdacd61d 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java @@ -412,6 +412,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback //清除订单信息 public void clearCurrentOCHOrder() { mCurrentOCHOrder = null; + clearAutopilotControlParameters(); SharedPrefsMgr.getInstance(mContext).remove(TaxiPassengerConst.SP_KEY_OCH_TAXI_ORDER); } @@ -930,12 +931,36 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback return; } + AutopilotControlParameters parameters = initAutopilotControlParameters(); + if (parameters == null){ + CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "AutopilotControlParameters is empty."); + return; + } + + CallerAutoPilotManager.INSTANCE.startAutoPilot(parameters); + CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "start autopilot with parameter: %s" + , GsonUtil.jsonFromObject(parameters) + + " ,startSiteName=" + mCurrentOCHOrder.startSiteAddr + + " ,endSiteName=" + mCurrentOCHOrder.endSiteAddr); + + + TaxiPassengerAnalyticsManager.getInstance().triggerStartAutopilotEvent(false, false, + mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo); + } + + private AutopilotControlParameters initAutopilotControlParameters() { + if (!checkCurrentOCHOrder()) { + CallerLogger.INSTANCE.e(M_TAXI_P + TAG, "no order or order is empty."); + ToastUtils.showShort("当前订单不存在或异常!"); + return null; + } + + AutopilotControlParameters parameters = new AutopilotControlParameters(); double startWgsLon = mCurrentOCHOrder.startSitePoint.get(0); double startWgsLat = mCurrentOCHOrder.startSitePoint.get(1); double endWgsLon = mCurrentOCHOrder.endSitePoint.get(0); double endWgsLat = mCurrentOCHOrder.endSitePoint.get(1); - AutopilotControlParameters parameters = new AutopilotControlParameters(); parameters.vehicleType = mCurrentOCHOrder.businessType; parameters.startName = PinYinUtil.getPinYinHeadChar(mCurrentOCHOrder.startSiteAddr); // 起点名称拼音首字母大写:科学城B区2号门(KXCBQ2HM) parameters.endName = PinYinUtil.getPinYinHeadChar(mCurrentOCHOrder.endSiteAddr); // 终点名称拼音首字母大写:科学城C区三号门(KXCCQSHM) @@ -953,15 +978,26 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback mCurrentOCHOrder.contrailSaveTimeDPQP); } - CallerAutoPilotManager.INSTANCE.startAutoPilot(parameters); - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "start autopilot with parameter: %s" - , GsonUtil.jsonFromObject(parameters) - + " ,startSiteName=" + mCurrentOCHOrder.startSiteAddr - + " ,endSiteName=" + mCurrentOCHOrder.endSiteAddr); + return parameters; + } + /** + * 将业务订单信息保存,鹰眼可取用 + */ + public void updateAutopilotControlParameters() { - TaxiPassengerAnalyticsManager.getInstance().triggerStartAutopilotEvent(false, false, - mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo); + AutopilotControlParameters parameters = initAutopilotControlParameters(); + if (null == parameters){ + CallerLogger.INSTANCE.e(M_TAXI_P + TAG, "AutopilotControlParameters is empty."); + return; + } + CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "AutopilotControlParameters is update."); + CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(parameters); + } + + public void clearAutopilotControlParameters(){ + CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "AutopilotControlParameters is clear."); + CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(null); } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/TaxiPassengerServingOrderPresenter.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/TaxiPassengerServingOrderPresenter.java index b508715fd3..11ae9bf1c7 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/TaxiPassengerServingOrderPresenter.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/TaxiPassengerServingOrderPresenter.java @@ -92,27 +92,26 @@ public class TaxiPassengerServingOrderPresenter extends PresentermView.updateOrderStatusView(order)); - }else if (mCurrentPassengerOrder.orderStatus != order.orderStatus) { - runOnUIThread(() ->mView.updateOrderStatusView(order)); - - if (TaxiPassengerOrderStatusEnum.OnTheWayToEnd.getCode() == order.orderStatus){ - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "-----OnTheWayToEndStation----"); - TaxiPassengerModel.getInstance().startOrStopQueryOrderRemaining(true); - } - - if (TaxiPassengerOrderStatusEnum.Cancel.getCode() == mCurrentPassengerOrder.orderStatus - || TaxiPassengerOrderStatusEnum.ArriveAtEnd.getCode() == mCurrentPassengerOrder.orderStatus){ + if (TaxiPassengerOrderStatusEnum.Cancel.getCode() == order.orderStatus + || TaxiPassengerOrderStatusEnum.ArriveAtEnd.getCode() == order.orderStatus + || TaxiPassengerOrderStatusEnum.JourneyCompleted.getCode() == order.orderStatus){ TaxiPassengerModel.getInstance().startOrStopQueryOrderRemaining(false); + TaxiPassengerModel.getInstance().clearAutopilotControlParameters(); + CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "Cancel or ArriveAtEnd or JourneyCompleted"); } - mCurrentPassengerOrder = order; + + mCurrentPassengerOrder = order; //当前无订单 + runOnUIThread(() ->mView.updateOrderStatusView(order)); } }