diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt index 024522157c..abe6a23479 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt @@ -16,6 +16,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02Lis import com.mogo.eagle.core.function.main.MainMoGoApplication import com.mogo.eagle.core.network.utils.GsonUtil import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI import com.mogo.eagle.core.utilcode.util.ClickUtils @@ -232,7 +233,11 @@ class TaxiCurrentTaskFragment : BaseFragment(), } fun onCarTakeOrderStatusChanged() { - mViewModel.sendUiIntent(TaskUiIntent.StartOrEndTakeOrder) + if (this::mViewModel.isInitialized) { + mViewModel.sendUiIntent(TaskUiIntent.StartOrEndTakeOrder) + } else { + e(TAG, "onCarTakeOrderStatusChanged: mViewModel is not Initialized") + } } /** @@ -420,7 +425,10 @@ class TaxiCurrentTaskFragment : BaseFragment(), MainMoGoApplication.getApp().applicationContext, R.drawable.task_order_type_btn_bg ) - orderPhoneAndNum.text = TaskUtils.getCurrentTaskPhoneNumAndPassengerCountHtml(order.bookingUserPhone, order.passengerSize) + orderPhoneAndNum.text = TaskUtils.getCurrentTaskPhoneNumAndPassengerCountHtml( + order.bookingUserPhone, + order.passengerSize + ) startStationName.text = order.orderStartSite?.siteName endStationName.text = order.orderEndSite?.siteName diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt index 161ac6e44e..6e5a910e77 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt @@ -156,12 +156,19 @@ object TaxiPassengerModel { TaxiPassengerServiceManager.queryOrdersInAndWaitService( object : OchCommonServiceCallback { override fun onSuccess(data: TaxiPassengerOrdersInServiceQueryRespBean) { - d(M_TAXI_P + TAG, "queryInAndWaitOrders data.data=${GsonUtils.toJson(data.data)}") + d( + M_TAXI_P + TAG, + "queryInAndWaitOrders data.data=${GsonUtils.toJson(data.data)}" + ) //目前后端将一个订单拆分成了多个任务,乘客屏只关心 送驾 类型的任务 //20230829 后端修改了逻辑,在乘客屏startTask后taskType才会变成3 if (data.data.taskType == TaskType_NONE || - data.data.taskType == TaskType_VIRTUAL) { - d(M_TAXI_P + TAG, "queryInAndWaitOrders data.taskType=${data.data.taskType}, discard data") + data.data.taskType == TaskType_VIRTUAL + ) { + d( + M_TAXI_P + TAG, + "queryInAndWaitOrders data.taskType=${data.data.taskType}, discard data" + ) // 如果上一个是 接驾或送驾任务 下一个是演练任务,需要reset页面状态 currentOCHOrder = null orderStatusChange() @@ -180,11 +187,19 @@ object TaxiPassengerModel { val currentOrder = data.data.order currentLineId = data.data.lineId currentTrajectoryInfo = data.data.trajectoryInfoByQuery - if (currentOCHOrder == null - || currentOCHOrder?.orderStatus != currentOrder.orderStatus - ) { + if (currentOCHOrder == null) { currentOCHOrder = currentOrder orderStatusChange() + } else if (currentOCHOrder?.orderStatus != currentOrder.orderStatus) { + if (currentOCHOrder?.orderStatus == TaxiPassengerOrderStatusEnum.UserArriveAtStart.code + && currentOrder.orderStatus < TaxiPassengerOrderStatusEnum.UserArriveAtStart.code + ) { + // 0830 UserArriveAtStart 状态是乘客屏本地在用户验证后本地设置,而且因为后端查询数据有延迟 + // 这里过下过滤,如果当前是UserArriveAtStart 且后端返回是之前状态,不更新数据 + } else { + currentOCHOrder = currentOrder + orderStatusChange() + } } else { currentOCHOrder = currentOrder } @@ -209,14 +224,20 @@ object TaxiPassengerModel { * 仅用于轮询时查到本地有mCurrentOCHOrder但请求结果无进行中单or orderId不一致是复查本地currentOrder */ private fun queryCurrentOrderStatus() { - d(M_TAXI_P + TAG, "queryCurrentOrderStatus: currentOCHOrder.orderNo=${currentOCHOrder?.orderNo}") + d( + M_TAXI_P + TAG, + "queryCurrentOrderStatus: currentOCHOrder.orderNo=${currentOCHOrder?.orderNo}" + ) currentOCHOrder?.orderNo?.let { TaxiPassengerServiceManager.queryOrderById( mContext!!, it, object : OchCommonServiceCallback { override fun onSuccess(data: TaxiPassengerOrderQueryRespBean) { - d(M_TAXI_P + TAG, "queryCurrentOrderStatus: onSuccess data=${GsonUtils.toJson(data)}") + d( + M_TAXI_P + TAG, + "queryCurrentOrderStatus: onSuccess data=${GsonUtils.toJson(data)}" + ) if (data.data != null && currentOCHOrder != null && currentOCHOrder!!.orderNo == data.data.orderNo diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt index 8afb17216f..88c3ad387a 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt @@ -71,6 +71,7 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) : mView?.showOrHideArrivedEndLayout(isShow = false) mView?.showOrHidePressengerCheckPager(true) mView?.showOrHideStartAutopilotView(isShow = false) + overMapViewClear() } TaxiPassengerOrderStatusEnum.UserArriveAtStart -> { @@ -78,6 +79,7 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) : mView?.showOrHideArrivedEndLayout(isShow = false) mView?.showOrHidePressengerCheckPager(isShow = false) mView?.showOrHideStartAutopilotView(isShow = true) + overMapViewClear() } TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> {