From f451be39bff5a8a6bba3b45d5100cd10e56c4408 Mon Sep 17 00:00:00 2001 From: aibingbing Date: Mon, 28 Aug 2023 11:35:25 +0800 Subject: [PATCH] =?UTF-8?q?[Taxi=E6=97=A0=E4=BA=BA=E5=8C=96]=20refactor:?= =?UTF-8?q?=20CurrentTaskFragment=20=E4=BC=98=E5=8C=96=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../map/AmapNaviToDestinationModel.java | 2 +- .../ui/TaxiBeingServerdOrdersFragment.java | 2 +- .../com/mogo/och/taxi/ui/task/TaskUiIntent.kt | 30 +++ .../UnmannedState.kt => task/TaskUiState.kt} | 0 .../taxi/ui/task/TaxiCurrentTaskFragment.kt | 205 +++++++++--------- .../taxi/ui/task/TaxiCurrentTaskViewModel.kt | 17 +- .../och/taxi/ui/task/TaxiNextTaskFragment.kt | 50 +++-- .../och/taxi/ui/unmanned/UnmannedIntent.kt | 30 --- .../java/com/mogo/och/taxi/utils/TaskUtils.kt | 20 +- 9 files changed, 185 insertions(+), 171 deletions(-) create mode 100644 OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiIntent.kt rename OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/{unmanned/UnmannedState.kt => task/TaskUiState.kt} (100%) delete mode 100644 OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedIntent.kt diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/AmapNaviToDestinationModel.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/AmapNaviToDestinationModel.java index 95758c90a9..a0de8f4d6f 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/AmapNaviToDestinationModel.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/AmapNaviToDestinationModel.java @@ -98,7 +98,7 @@ public class AmapNaviToDestinationModel implements AMapNaviListener { } } - public void setOCHTaciNaviChangedCallback(ICommonNaviChangedCallback callback) { + public void setTaxiNaviChangedCallback(ICommonNaviChangedCallback callback) { this.mNaviChangedCallback = callback; } diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java index 61c66efad6..e00b289572 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java @@ -354,7 +354,7 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment NaviLatLng endNaviLatLng = new NaviLatLng(stationLat, stationLng); AmapNaviToDestinationModel.getInstance(getContext()).initAMapNavi(startNaviLatLng, endNaviLatLng); AmapNaviToDestinationModel.getInstance(getContext()).setVoiceIsMute(isVoicePlay); - AmapNaviToDestinationModel.getInstance(getContext()).setOCHTaciNaviChangedCallback(this); + AmapNaviToDestinationModel.getInstance(getContext()).setTaxiNaviChangedCallback(this); } private void showOrHideNavi(boolean isShow) { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiIntent.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiIntent.kt new file mode 100644 index 0000000000..ebfc321f27 --- /dev/null +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiIntent.kt @@ -0,0 +1,30 @@ +package com.mogo.och.taxi.ui.task + +import com.mogo.och.taxi.base.IUiIntent + +/** + * @author: wangmingjun + * @date: 2023/7/26 + */ +sealed class TaskUiIntent: IUiIntent{ + + //开始接单 、 暂停接单 + object StartOrEndTakeOrder : TaskUiIntent() + + object StartTaskWithOrderLooper : TaskUiIntent() + + //取消订单 + class CancelOrder(val type: Int) : TaskUiIntent() + + object StartTask: TaskUiIntent() + + //订单服务完成 + object JourneyCompleted: TaskUiIntent() + + //跳过乘客验证 + object JumpPassengerCheck : TaskUiIntent() + + //司机端手动结束订单 + object CloseOrderByDriver : TaskUiIntent() + +} \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedState.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiState.kt similarity index 100% rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedState.kt rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiState.kt 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 19fbb71557..5358875022 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 @@ -3,12 +3,9 @@ package com.mogo.och.taxi.ui.task import android.annotation.SuppressLint import android.graphics.Color import android.graphics.drawable.GradientDrawable -import android.os.Build import android.os.Bundle import android.view.View -import androidx.annotation.RequiresApi import androidx.core.content.ContextCompat -import androidx.core.text.HtmlCompat import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.amap.api.navi.model.NaviLatLng @@ -19,8 +16,9 @@ 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.scene.SceneConstant +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 import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.map.AmapNaviToDestinationModel @@ -39,7 +37,6 @@ import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TYPE_MARKER_TAXI_O import com.mogo.och.taxi.ui.base.TaxiFragment import com.mogo.och.taxi.ui.task.TaxiTaskModel import com.mogo.och.taxi.ui.unmanned.TaskWithOrderUIState -import com.mogo.och.taxi.ui.unmanned.UnmannedIntent import com.mogo.och.taxi.utils.MapMakerManager import com.mogo.och.taxi.utils.TaskUtils import kotlinx.android.synthetic.main.task_fragment_current.cancelOrder @@ -67,15 +64,11 @@ class TaxiCurrentTaskFragment : BaseFragment(), View.OnClickListener, ICommonNaviChangedCallback { private lateinit var mViewModel: TaxiCurrentTaskViewModel - private var mCurrentTaskWithOrder: QueryCurrentTaskRespBean.Result? = null - - // 开始接单后 需要将车开到最近的一个站点就位,然后才能开启 无人化 流程 - private var mDriveToNearestStationTask: StartServiceRespBean.Result? = null companion object { - const val TAG = "TaxiCurrentTaskFragment" - + const val TAG = M_TAXI + "TaxiCurrentTaskFragment" private var mTaxiFragment: TaxiFragment? = null + fun newInstance(taxiFragment: TaxiFragment?): TaxiCurrentTaskFragment { mTaxiFragment = taxiFragment val args = Bundle() @@ -115,7 +108,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), */ private fun initContainerView(hasCurrentTask: Boolean) { d( - M_TAXI + TAG, + TAG, "hasCurrentTask = $hasCurrentTask" ) try { @@ -149,7 +142,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), } private fun initViewModelObserver() { - mViewModel.sendUiIntent(UnmannedIntent.StartTaskWithOrderLooper) + mViewModel.sendUiIntent(TaskUiIntent.StartTaskWithOrderLooper) //监听返回的数据状态 lifecycleScope.launchWhenStarted { @@ -159,8 +152,8 @@ class TaxiCurrentTaskFragment : BaseFragment(), is TaskWithOrderUIState.Init -> { } + // 开始接单后 需要将车开到最近的一个站点就位,然后才能开启 无人化 流程 is TaskWithOrderUIState.TaskDriveToNearestStationTask -> { - mDriveToNearestStationTask = taskAndOrderUiState.driveToNearestStationTask if (taskAndOrderUiState.driveToNearestStationTask != null) { updateViewByDriveToNearestStationTask(taskAndOrderUiState.driveToNearestStationTask) } else { @@ -170,20 +163,14 @@ class TaxiCurrentTaskFragment : BaseFragment(), } is TaskWithOrderUIState.TaskWithOrder -> { - mCurrentTaskWithOrder = taskAndOrderUiState.taskWithOrder - - //如果在前往标定站点, 显示标定站点 -// if (mDriveToNearestStationTask != null){ -// return@collect -// } - - if (mCurrentTaskWithOrder == null) { + val currentTaskWithOrder = taskAndOrderUiState.taskWithOrder + if (currentTaskWithOrder == null) { initContainerView(false) removeAllMapMarker() return@collect } - updateNextTaskFragment(taskAndOrderUiState.taskWithOrder) - updateViewByCurrentTaskWithOrder(taskAndOrderUiState.taskWithOrder) + updateNextTaskFragment(currentTaskWithOrder) + updateViewByCurrentTaskWithOrder(currentTaskWithOrder) } is TaskWithOrderUIState.UpdateTaskTripInfo -> { @@ -220,12 +207,11 @@ class TaxiCurrentTaskFragment : BaseFragment(), updateStartAndEndStationPointByStatus(true) // 使用高德获取导航数据 - if (mDriveToNearestStationTask != null) { - startNaviToStation( - false, mDriveToNearestStationTask!!.gcjLat, - mDriveToNearestStationTask!!.gcjLon - ) - } + startNaviToStation( + false, + driveToNearestStationTask.gcjLat, + driveToNearestStationTask.gcjLon + ) } private fun updateStartAndEndStationPointByStatus(isGoingToStation: Boolean) { @@ -245,28 +231,31 @@ class TaxiCurrentTaskFragment : BaseFragment(), } fun onCarTakeOrderStatusChanged() { - mViewModel.sendUiIntent(UnmannedIntent.StartOrEndTakeOrder) + mViewModel.sendUiIntent(TaskUiIntent.StartOrEndTakeOrder) } + /** + * 根据任务状态计算剩余历程和时间 + */ private fun updateRemainDistanceAndTime(isVoicePlay: Boolean) { - //根据任务状态计算剩余历程和时间 - if (mCurrentTaskWithOrder == null) return - if (mCurrentTaskWithOrder!!.endSite != null - && mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.StartTask.code + val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return + + if (currentTaskWithOrder.endSite != null + && currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code ) { startNaviToStation( - isVoicePlay, mCurrentTaskWithOrder!!.endSite!!.gcjLat, - mCurrentTaskWithOrder!!.endSite!!.gcjLon + isVoicePlay, currentTaskWithOrder.endSite!!.gcjLat, + currentTaskWithOrder.endSite!!.gcjLon ) return } - if (mCurrentTaskWithOrder!!.startSite != null - && mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.GetTask.code + if (currentTaskWithOrder.startSite != null + && currentTaskWithOrder.currentStatus == TaskStatusEnum.GetTask.code ) { //演练任务和送驾任务 startNaviToStation( - isVoicePlay, mCurrentTaskWithOrder!!.startSite!!.gcjLat, - mCurrentTaskWithOrder!!.startSite!!.gcjLon + isVoicePlay, currentTaskWithOrder.startSite!!.gcjLat, + currentTaskWithOrder.startSite!!.gcjLon ) } } @@ -274,7 +263,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), /** * 更新当前任务和订单信息 */ - @SuppressLint("SetTextI18n", "UseCompatLoadingForDrawables") + @SuppressLint("SetTextI18n") fun updateViewByCurrentTaskWithOrder(taskAndOrder: QueryCurrentTaskRespBean.Result?) { if (taskAndOrder == null) return if ((taskAndOrder.endSite == null || taskAndOrder.currentStatus == TaskStatusEnum.CompleteTask.code) @@ -308,7 +297,8 @@ class TaxiCurrentTaskFragment : BaseFragment(), TaskTypeEnum.VirtualTask.code -> { //演练任务 cancelOrder.visibility = View.GONE orderPhoneAndNum.visibility = if (order != null && - currentStatus == TaskStatusEnum.CompleteTask.code) View.VISIBLE else View.GONE + currentStatus == TaskStatusEnum.CompleteTask.code + ) View.VISIBLE else View.GONE taskClickBtn.visibility = View.GONE naviToStart.visibility = View.GONE @@ -354,29 +344,28 @@ class TaxiCurrentTaskFragment : BaseFragment(), } } } - - updateMapMarkers() + updateMapMarkers(taskAndOrder) updateRemainDistanceAndTime(false) } - private fun updateMapMarkers() { - if (mCurrentTaskWithOrder != null && mCurrentTaskWithOrder!!.startSite != null - && mCurrentTaskWithOrder!!.endSite != null + private fun updateMapMarkers(taskAndOrder: QueryCurrentTaskRespBean.Result?) { + if (taskAndOrder != null && taskAndOrder!!.startSite != null + && taskAndOrder!!.endSite != null ) { - when (mCurrentTaskWithOrder!!.currentStatus) { + when (taskAndOrder.currentStatus) { TaskStatusEnum.GetTask.code -> { setOrRemoveMapMaker( true, TAXI_START_MAP_MAKER, - mCurrentTaskWithOrder!!.startSite!!.wgs84Lat, - mCurrentTaskWithOrder!!.startSite!!.wgs84Lon, + taskAndOrder!!.startSite!!.wgs84Lat, + taskAndOrder!!.startSite!!.wgs84Lon, R.raw.star_marker ) setOrRemoveMapMaker( true, TAXI_END_MAP_MAKER, - mCurrentTaskWithOrder!!.endSite!!.wgs84Lat, - mCurrentTaskWithOrder!!.endSite!!.wgs84Lon, + taskAndOrder!!.endSite!!.wgs84Lat, + taskAndOrder!!.endSite!!.wgs84Lon, R.raw.end_marker ) } @@ -385,15 +374,15 @@ class TaxiCurrentTaskFragment : BaseFragment(), setOrRemoveMapMaker( false, TAXI_START_MAP_MAKER, - mCurrentTaskWithOrder!!.startSite!!.wgs84Lat, - mCurrentTaskWithOrder!!.startSite!!.wgs84Lon, + taskAndOrder!!.startSite!!.wgs84Lat, + taskAndOrder!!.startSite!!.wgs84Lon, R.raw.star_marker ) setOrRemoveMapMaker( true, TAXI_END_MAP_MAKER, - mCurrentTaskWithOrder!!.endSite!!.wgs84Lat, - mCurrentTaskWithOrder!!.endSite!!.wgs84Lon, + taskAndOrder!!.endSite!!.wgs84Lat, + taskAndOrder!!.endSite!!.wgs84Lon, R.raw.end_marker ) } @@ -402,23 +391,23 @@ class TaxiCurrentTaskFragment : BaseFragment(), setOrRemoveMapMaker( false, TAXI_START_MAP_MAKER, - mCurrentTaskWithOrder!!.startSite!!.wgs84Lat, - mCurrentTaskWithOrder!!.startSite!!.wgs84Lon, + taskAndOrder!!.startSite!!.wgs84Lat, + taskAndOrder!!.startSite!!.wgs84Lon, R.raw.star_marker ) setOrRemoveMapMaker( false, TAXI_END_MAP_MAKER, - mCurrentTaskWithOrder!!.endSite!!.wgs84Lat, - mCurrentTaskWithOrder!!.endSite!!.wgs84Lon, + taskAndOrder!!.endSite!!.wgs84Lat, + taskAndOrder!!.endSite!!.wgs84Lon, R.raw.end_marker ) } } } else { d( - M_TAXI + TAG, - "CurrentTaskWithOrder == " + GsonUtil.jsonFromObject(mCurrentTaskWithOrder) + TAG, + "CurrentTaskWithOrder == " + GsonUtil.jsonFromObject(taskAndOrder) ) } } @@ -430,12 +419,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), MainMoGoApplication.getApp().applicationContext, R.drawable.task_order_type_btn_bg ) - orderPhoneAndNum.text = HtmlCompat.fromHtml( - " " + order.bookingUserPhone + "" + - " | " + - "" + order.passengerSize + "人" + "", - HtmlCompat.FROM_HTML_MODE_LEGACY - ) + orderPhoneAndNum.text = TaskUtils.getCurrentTaskPhoneNumAndPassengerCountHtml(order.bookingUserPhone, order.passengerSize) startStationName.text = order.orderStartSite?.siteName endStationName.text = order.orderEndSite?.siteName @@ -481,7 +465,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), true ) hideNaviBtns() - taskOtherInfo.text = TaskUtils.getWaitTimeHtml() + taskOtherInfo.text = TaskUtils.getCurrentTaskWaitTimeHtml() } TaxiOrderStatusEnum.OnTheWayToStart.code -> { //前往上车地点 @@ -530,14 +514,14 @@ class TaxiCurrentTaskFragment : BaseFragment(), val mCurLatitude = getChassisLocationGCJ02().latitude val mCurLongitude = getChassisLocationGCJ02().longitude d( - SceneConstant.M_TAXI + TAG, + TAG, "currentLatLng=$mCurLatitude $mCurLongitude" ) val startNaviLatLng = NaviLatLng(mCurLatitude, mCurLongitude) val endNaviLatLng = NaviLatLng(stationLat, stationLng) AmapNaviToDestinationModel.getInstance(context).initAMapNavi(startNaviLatLng, endNaviLatLng) AmapNaviToDestinationModel.getInstance(context).setVoiceIsMute(isVoicePlay) - AmapNaviToDestinationModel.getInstance(context).setOCHTaciNaviChangedCallback(this) + AmapNaviToDestinationModel.getInstance(context).setTaxiNaviChangedCallback(this) } /** @@ -546,8 +530,8 @@ class TaxiCurrentTaskFragment : BaseFragment(), * @param timeInSecond 秒 */ fun updateCurrentTaskTripInfo(meters: Long, timeInSecond: Long) { - if (mCurrentTaskWithOrder == null) return - if (mCurrentTaskWithOrder!!.endSite == null && mDriveToNearestStationTask == null) return + val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return + if (currentTaskWithOrder.endSite == null && currentTaskWithOrder == null) return taskOtherInfo.text = TaskUtils.getCurrentTaskTripHtml(meters, timeInSecond) } @@ -557,14 +541,15 @@ class TaxiCurrentTaskFragment : BaseFragment(), } private fun startOrEndService() { - if (mCurrentTaskWithOrder == null || mCurrentTaskWithOrder!!.order == null) return - val order = mCurrentTaskWithOrder!!.order + val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() + if (currentTaskWithOrder?.order == null) return + val order = currentTaskWithOrder?.order if (TaxiOrderStatusEnum.ArriveAtStart.code == order!!.orderStatus) { //到达乘客上车点,司机可跳过乘客屏认证 - mViewModel.sendUiIntent(UnmannedIntent.JumpPassengerCheck) + mViewModel.sendUiIntent(TaskUiIntent.JumpPassengerCheck) } else if (TaxiOrderStatusEnum.UserArriveAtStart.code == order.orderStatus) { - mViewModel.sendUiIntent(UnmannedIntent.StartTask) + mViewModel.sendUiIntent(TaskUiIntent.StartTask) } else if (TaxiOrderStatusEnum.ArriveAtEnd.code == order.orderStatus) { //点击了完成服务,结束订单并更新订单信息 - mViewModel.sendUiIntent(UnmannedIntent.JourneyCompleted) + mViewModel.sendUiIntent(TaskUiIntent.JourneyCompleted) } else if (TaxiOrderStatusEnum.OnTheWayToEnd.code == order.orderStatus) { //前往目的地过程中可提前结束行程 //自驾中提示,接管后才能结束 if (getState() @@ -587,7 +572,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), .build(requireContext()) closeOrderDialog!!.setClickListener(object : OCHCommitDialog.ClickListener { override fun confirm() { - mViewModel.sendUiIntent(UnmannedIntent.CloseOrderByDriver) + mViewModel.sendUiIntent(TaskUiIntent.CloseOrderByDriver) } override fun cancel() { @@ -599,21 +584,32 @@ class TaxiCurrentTaskFragment : BaseFragment(), override fun onClick(v: View) { - if (v.id == taskClickBtn.id) { - d(M_TAXI + TAG, taskStatus.text.toString()) - startOrEndService() - } else if (v.id == cancelOrder.id) { - if (mCurrentTaskWithOrder!!.order != null) { - activity?.also { - TaxiOrderCancelDialog( - it, mCurrentTaskWithOrder!!.order!!.orderStatus - ) {type -> - mViewModel.sendUiIntent(UnmannedIntent.CancelOrder(type)) - }.show() + if (!ClickUtils.isFastClick()) { + i(TAG, "view点击过快") + return + } + when (v.id) { + taskClickBtn.id -> { + d(TAG, taskStatus.text.toString()) + startOrEndService() + } + + cancelOrder.id -> { + val currentWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() + if (currentWithOrder?.order != null) { + val order = currentWithOrder.order + activity?.also { + TaxiOrderCancelDialog(it, order!!.orderStatus) { type -> + mViewModel.sendUiIntent(TaskUiIntent.CancelOrder(type)) + }.show() + } } } - } else if (v.id == naviToStart.id || v.id == naviToEnd.id) { - showNaviToEndStationFragment(true) + + naviToStart.id, + naviToEnd.id -> { + showNaviToEndStationFragment(true) + } } } @@ -626,34 +622,30 @@ class TaxiCurrentTaskFragment : BaseFragment(), mTaxiFragment?.startNaviToEndStation(isShow) } - - @RequiresApi(Build.VERSION_CODES.N) override fun onCurrentNaviDistAndTimeChanged(meters: Int, timeInSecond: Long) { updateCurrentTaskTripInfo(meters.toLong(), timeInSecond) } override fun reInitNaviAmap(isPlay: Boolean, isRestart: Boolean) { - d( - SceneConstant.M_TAXI + TAG, - "isPlay = $isPlay, isRestart=$isRestart" - ) + d(TAG, "isPlay = $isPlay, isRestart=$isRestart") if (!isRestart) { mTaxiFragment?.showAmapNaviToStationFragment(false) return } + val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() + UiThreadHandler.postDelayed({ updateRemainDistanceAndTime(false) }, 2000) + UiThreadHandler.postDelayed({ - if (mCurrentTaskWithOrder != null && - mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.GetTask.code + if (currentTaskWithOrder?.currentStatus == TaskStatusEnum.GetTask.code ) { if (naviToStart.visibility == View.GONE) { naviToStart.visibility = View.VISIBLE } } - if (mCurrentTaskWithOrder != null && - mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.StartTask.code + if (currentTaskWithOrder?.currentStatus == TaskStatusEnum.StartTask.code ) { if (naviToEnd.visibility == View.GONE) { naviToEnd.visibility = View.VISIBLE @@ -663,15 +655,14 @@ class TaxiCurrentTaskFragment : BaseFragment(), } fun onNaviToEndStationByAmap(isShow: Boolean) { - if (mCurrentTaskWithOrder == null) return + val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return mTaxiFragment?.showAmapNaviToStationFragment( - if (mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.StartTask.code) + if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code) isShow else true ) - updateRemainDistanceAndTime( - if (mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.StartTask.code) + if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code) isShow else true ) } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt index 8c804727ad..061d5557f2 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt @@ -26,7 +26,6 @@ import com.mogo.och.taxi.constant.TaxiUnmannedConst import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager.cancelOrder import com.mogo.och.taxi.ui.unmanned.TaskWithOrderUIState -import com.mogo.och.taxi.ui.unmanned.UnmannedIntent import com.mogo.och.taxi.ui.unmanned.UnmannedState import com.mogo.och.taxi.utils.TaxiTrajectoryManager @@ -34,7 +33,7 @@ import com.mogo.och.taxi.utils.TaxiTrajectoryManager * @author: wangmingjun * @date: 2023/7/26 */ -class TaxiCurrentTaskViewModel : BaseViewModel(), +class TaxiCurrentTaskViewModel : BaseViewModel(), ITaxiTaskWithOrderCallback, ITaxiCarServiceCallback { private val TAG = SceneConstant.M_TAXI + "TaxiUnmannedViewModel" @@ -50,31 +49,31 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), override fun handleIntent(intent: IUiIntent) { when (intent) { - is UnmannedIntent.StartTaskWithOrderLooper -> { //开始轮询 + is TaskUiIntent.StartTaskWithOrderLooper -> { //开始轮询 startOrStopCurrentTaskWithOrderLoop(true) } - is UnmannedIntent.StartOrEndTakeOrder -> {//开始、暂停接单 + is TaskUiIntent.StartOrEndTakeOrder -> {//开始、暂停接单 TaxiTaskModel.updateCarServingStatus() } - is UnmannedIntent.JumpPassengerCheck -> { //手动点击跳过乘客验证 + is TaskUiIntent.JumpPassengerCheck -> { //手动点击跳过乘客验证 jumpPassengerCheck() } - is UnmannedIntent.JourneyCompleted -> { //点击服务完成 + is TaskUiIntent.JourneyCompleted -> { //点击服务完成 journeyCompleted() } - is UnmannedIntent.CloseOrderByDriver -> { + is TaskUiIntent.CloseOrderByDriver -> { closeOrderByDriver() } - is UnmannedIntent.CancelOrder -> {// 取消订单, 暂未加取消类型和原因 + is TaskUiIntent.CancelOrder -> {// 取消订单, 暂未加取消类型和原因 cancelOrder(intent.type) } - is UnmannedIntent.StartTask -> { + is TaskUiIntent.StartTask -> { startTask() } } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiNextTaskFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiNextTaskFragment.kt index 65b422b818..f81f02638c 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiNextTaskFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiNextTaskFragment.kt @@ -1,16 +1,19 @@ package com.mogo.och.taxi.ui.task -import android.annotation.SuppressLint import android.graphics.Color import android.graphics.drawable.GradientDrawable import android.os.Bundle import android.view.View -import androidx.core.text.HtmlCompat +import androidx.core.content.ContextCompat import com.mogo.commons.mvp.BaseFragment +import com.mogo.eagle.core.function.main.MainMoGoApplication +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.och.taxi.R import com.mogo.och.taxi.bean.OrderDetail import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean +import com.mogo.och.taxi.constant.TaskStatusEnum import com.mogo.och.taxi.constant.TaskTypeEnum +import com.mogo.och.taxi.utils.TaskUtils import kotlinx.android.synthetic.main.task_fragment_current.endStationName import kotlinx.android.synthetic.main.task_fragment_current.mCurrentTaskLayout import kotlinx.android.synthetic.main.task_fragment_current.naviToEnd @@ -28,8 +31,7 @@ import kotlinx.android.synthetic.main.task_fragment_current.taskTypeTv */ class TaxiNextTaskFragment : BaseFragment() { companion object { - const val TAG = "TaxiNextTaskFragment" - + val TAG = SceneConstant.M_TAXI + javaClass.simpleName fun newInstance(): TaxiNextTaskFragment { val args = Bundle() val fragment = TaxiNextTaskFragment() @@ -47,36 +49,36 @@ class TaxiNextTaskFragment : BaseFragment() { } override fun initViews() { - showNoTaskView() + showNoNextTaskView() } - fun onTaskDataChanged(model: QueryCurrentTaskRespBean.Result?) { - if (model?.order == null) { - showNoTaskView() + fun onTaskDataChanged(taskWithOrder: QueryCurrentTaskRespBean.Result?) { + if (taskWithOrder?.order == null) { + showNoNextTaskView() return } - if (model.taskType == TaskTypeEnum.VirtualTask.code) { - val order = model.order + if (taskWithOrder.taskType == TaskTypeEnum.VirtualTask.code && + taskWithOrder.currentStatus != TaskStatusEnum.CompleteTask.code + ) { + val order = taskWithOrder.order updateTaskUI(order!!) } else { - showNoTaskView() + showNoNextTaskView() } } - @SuppressLint("SetTextI18n") private fun updateTaskUI(order: OrderDetail) { - showTaskView() + showNextTaskView() taskOtherInfo.visibility = View.GONE naviToStart.visibility = View.GONE naviToEnd.visibility = View.GONE - orderPhoneAndNum.text = HtmlCompat.fromHtml( - " " + order.bookingUserPhone + "" + - " | " + - "" + order.passengerSize + "人" + "", - HtmlCompat.FROM_HTML_MODE_LEGACY - ) + orderPhoneAndNum.text = + TaskUtils.getNextTaskPhoneNumAndPassengerCountHtml( + order.bookingUserPhone, + order.passengerSize + ) order.orderStartSite?.let { startStationName.text = it.siteName @@ -86,7 +88,11 @@ class TaxiNextTaskFragment : BaseFragment() { } taskTypeTv.text = resources.getString(R.string.task_order) - taskTypeTv.background = resources.getDrawable(R.drawable.task_order_type_btn_bg, null) + taskTypeTv.background = + ContextCompat.getDrawable( + MainMoGoApplication.getApp().applicationContext, + R.drawable.task_order_type_btn_bg + ) updateTaskContainerBottomBtn( getString(R.string.waiting_server), @@ -110,12 +116,12 @@ class TaxiNextTaskFragment : BaseFragment() { taskClickBtn.isClickable = isClickable } - private fun showNoTaskView() { + private fun showNoNextTaskView() { noTaskData.visibility = View.VISIBLE mCurrentTaskLayout.visibility = View.GONE } - private fun showTaskView() { + private fun showNextTaskView() { noTaskData.visibility = View.GONE mCurrentTaskLayout.visibility = View.VISIBLE } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedIntent.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedIntent.kt deleted file mode 100644 index 7cf1ddd36d..0000000000 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedIntent.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.mogo.och.taxi.ui.unmanned - -import com.mogo.och.taxi.base.IUiIntent - -/** - * @author: wangmingjun - * @date: 2023/7/26 - */ -sealed class UnmannedIntent: IUiIntent{ - - //开始接单 、 暂停接单 - object StartOrEndTakeOrder : UnmannedIntent() - - object StartTaskWithOrderLooper : UnmannedIntent() - - //取消订单 - class CancelOrder(val type: Int) : UnmannedIntent() - - object StartTask: UnmannedIntent() - - //订单服务完成 - object JourneyCompleted: UnmannedIntent() - - //跳过乘客验证 - object JumpPassengerCheck : UnmannedIntent() - - //司机端手动结束订单 - object CloseOrderByDriver : UnmannedIntent() - -} \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaskUtils.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaskUtils.kt index e850610b71..1e35ef8de7 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaskUtils.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaskUtils.kt @@ -40,7 +40,7 @@ object TaskUtils { return HtmlCompat.fromHtml(strHtml, HtmlCompat.FROM_HTML_MODE_LEGACY) } - fun getWaitTimeHtml(): Spanned { + fun getCurrentTaskWaitTimeHtml(): Spanned { val currentCale = DateTimeUtils.getCurrentDateTime() val currentDay = DateTimeUtil.formatCalendarToString(currentCale, DateTimeUtil.yyyy_MM_dd) @@ -71,4 +71,22 @@ object TaskUtils { + ",总用时 " + " $duration " + " 分钟") return HtmlCompat.fromHtml(strHtml, HtmlCompat.FROM_HTML_MODE_LEGACY) } + + fun getCurrentTaskPhoneNumAndPassengerCountHtml(phoneNum: String, passengerSize: Int): Spanned { + return HtmlCompat.fromHtml( + " " + phoneNum + "" + + " | " + + "" + passengerSize + "人" + "", + HtmlCompat.FROM_HTML_MODE_LEGACY + ) + } + + fun getNextTaskPhoneNumAndPassengerCountHtml(phoneNum: String, passengerSize: Int): Spanned { + return HtmlCompat.fromHtml( + " " + phoneNum + "" + + " | " + + "" + passengerSize + "人" + "", + HtmlCompat.FROM_HTML_MODE_LEGACY + ) + } } \ No newline at end of file