From 6576304457f7cfef75c8d535b7f84ba83a5287b3 Mon Sep 17 00:00:00 2001 From: aibingbing Date: Tue, 12 Sep 2023 15:43:05 +0800 Subject: [PATCH] =?UTF-8?q?[6.1.0]=20refactor:=20=E6=9C=AC=E6=AC=A1?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E7=9A=84=E8=A1=8C=E7=A8=8B=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E8=B5=B0viewModel=E9=93=BE=E8=B7=AF=E4=BC=A0=E9=80=92=E7=BB=99?= =?UTF-8?q?view;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../callback/ITaxiOrderStatusCallback.java | 3 - .../callback/ITaxiTaskWithOrderCallback.kt | 3 +- .../com/mogo/och/taxi/ui/base/TaxiFragment.kt | 23 ++---- .../mogo/och/taxi/ui/base/TaxiPresenter.java | 5 -- .../com/mogo/och/taxi/ui/debug/DebugView.kt | 5 +- .../com/mogo/och/taxi/ui/task/TaskUiState.kt | 5 +- .../taxi/ui/task/TaxiCurrentTaskFragment.kt | 74 ++++++++++++------- .../taxi/ui/task/TaxiCurrentTaskViewModel.kt | 36 +++++++-- .../mogo/och/taxi/ui/task/TaxiTaskModel.kt | 12 +-- .../och/taxi/ui/task/TaxiTaskTabFragment.kt | 5 -- 10 files changed, 99 insertions(+), 72 deletions(-) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiOrderStatusCallback.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiOrderStatusCallback.java index 00457ab64a..52aaf096f8 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiOrderStatusCallback.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiOrderStatusCallback.java @@ -12,7 +12,4 @@ public interface ITaxiOrderStatusCallback { * @param isShow 是否显示导航地图(否播报声音) */ void onNaviToEnd(boolean isAmap, boolean isShow); - - // 当前位置距离上车点的距离(米)、预估时间(秒) - void onCurrentOrderDistToEndChanged(long meters, long timeInSecond); } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt index 8390764cb6..c6662482e8 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt @@ -9,8 +9,9 @@ interface ITaxiTaskWithOrderCallback { fun onTaskTrajectoryDataChanged(data: TrajectoryListRespBean?) fun onOrderCancel() fun onOrderArriveAtEnd(orderNo: String) - fun onOrderTotalMileAndDurationChanged(mileage: Float, duration: Int) + fun onOrderTripInfoChanged(mileage: Float, duration: Int) fun onOrderJourneyCompleted() fun onStartAutopilot() fun onStartPrepareTask120s(isStart: Boolean) + fun onTaskTripInfoLocalCalculateChanged(meters:Long, timeInSecond:Long) } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt index 3f4af10e40..0769a74235 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt @@ -70,13 +70,13 @@ class TaxiFragment : BaseTaxiTabFragment(), // } } - private fun openOperationalInfoView() { - personalDialogFragment = WeakReference(TaxiPersonalDialogFragment()) - activity?.supportFragmentManager?.let { - personalDialogFragment!!.get() - ?.show(it, "service_data") - } - } +// private fun openOperationalInfoView() { +// personalDialogFragment = WeakReference(TaxiPersonalDialogFragment()) +// activity?.supportFragmentManager?.let { +// personalDialogFragment!!.get() +// ?.show(it, "service_data") +// } +// } override fun getTagName(): String { return "TaxiFragment" @@ -86,9 +86,7 @@ class TaxiFragment : BaseTaxiTabFragment(), super.onActivityCreated(savedInstanceState) loginService = ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation() as LoginService - if (loginService != null) { - loginService!!.registerFragment(this, presenter, TaxiDriverLoginImpl()) - } + loginService?.registerFragment(this, presenter, TaxiDriverLoginImpl()) } override fun onCreateView( @@ -259,11 +257,6 @@ class TaxiFragment : BaseTaxiTabFragment(), } } - fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long) { - if (null == taskTabFragment || taskTabFragment!!.get() == null) return - taskTabFragment!!.get()!!.onCurrentTaskTripInfoChanged(meters, timeInSecond) - } - private fun testRouteInfoUpload() { TPRouteDataTestUtils.converToRouteData() } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java index 30857c7016..d355a79a93 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java @@ -137,11 +137,6 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS runOnUIThread(() -> mView.onNaviToEnd(isAmap, isShow)); } - @Override - public void onCurrentOrderDistToEndChanged(long meters, long timeInSecond) { - runOnUIThread(() -> mView.onCurrentOrderDistToEndChanged(meters, timeInSecond)); - } - @Override public void onVRModeChanged(boolean isVRMode) { runOnUIThread(() -> mView.switchVRFlatMode(isVRMode)); diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt index 3ffc879d6a..a66439d3d1 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt @@ -189,7 +189,7 @@ public class DebugView @JvmOverloads constructor( override fun onOrderArriveAtEnd(orderNo: String) { } - override fun onOrderTotalMileAndDurationChanged(mileage: Float, duration: Int) { + override fun onOrderTripInfoChanged(mileage: Float, duration: Int) { } override fun onOrderJourneyCompleted() { @@ -200,4 +200,7 @@ public class DebugView @JvmOverloads constructor( override fun onStartPrepareTask120s(isStart: Boolean) { } + + override fun onTaskTripInfoLocalCalculateChanged(meters: Long, timeInSecond: Long) { + } } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiState.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiState.kt index a80e2adcbf..1d90ef777a 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiState.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiState.kt @@ -23,7 +23,10 @@ sealed class TaskWithOrderUIState { data class TaskDriveToNearestStationTask(val driveToNearestStationTask: StartServiceRespBean.Result?) : TaskWithOrderUIState() - data class UpdateTaskTripInfo(val mileage: Float, val duration: Int) : TaskWithOrderUIState() + data class UpdateOrderTripInfo(val mileage: Float, val duration: Int) : TaskWithOrderUIState() + + data class UpdateTaskTripLocalCalculateInfo(val meters: Long, val timeInSecond: Long) : + TaskWithOrderUIState() data class UpdatePrepareTaskDelay120S(val isStart: Boolean) : TaskWithOrderUIState() } 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 3ee54ae2d4..7bce679731 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 @@ -27,7 +27,6 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.map.AmapNaviToDestinationModel import com.mogo.och.common.module.map.ICommonNaviChangedCallback import com.mogo.och.common.module.utils.DateTimeUtil -import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.common.module.wigets.OCHCommitDialog import com.mogo.och.taxi.R import com.mogo.och.taxi.bean.OrderDetail @@ -184,7 +183,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), updateViewByCurrentTaskWithOrder(currentTaskWithOrder) } - is TaskWithOrderUIState.UpdateTaskTripInfo -> { + is TaskWithOrderUIState.UpdateOrderTripInfo -> { taskOtherInfo.text = TaskUtils.getCurrentTaskTotalAndDurationHtml( taskAndOrderUiState.mileage, @@ -192,6 +191,13 @@ class TaxiCurrentTaskFragment : BaseFragment(), ) } + is TaskWithOrderUIState.UpdateTaskTripLocalCalculateInfo -> { + updateCurrentTaskTripInfo( + taskAndOrderUiState.meters, + taskAndOrderUiState.timeInSecond + ) + } + is TaskWithOrderUIState.UpdatePrepareTaskDelay120S -> { updatePrepareTaskDelay120SUI(taskAndOrderUiState.isStart) } @@ -205,33 +211,34 @@ class TaxiCurrentTaskFragment : BaseFragment(), */ private fun updatePrepareTaskDelay120SUI(isStart: Boolean) { - if (!isStart){ - prepareTaskCountdownTv.visibility = View.GONE + if (!isStart) { + prepareTaskCountdownTv.visibility = View.GONE mPrepareTasCountDownTimer?.cancel() mPrepareTasCountDownTimer = null return } - prepareTaskCountdownTv.visibility = View.VISIBLE - mPrepareTasCountDownTimer = object : CountDownTimer(TIMER_PREPARE_TASK_INTERVAL_120S, 1000L) {// 5倒计时后开启自驾 + prepareTaskCountdownTv.visibility = View.VISIBLE + mPrepareTasCountDownTimer = + object : CountDownTimer(TIMER_PREPARE_TASK_INTERVAL_120S, 1000L) {// 5倒计时后开启自驾 - override fun onTick(millisUntilFinished: Long) { - // 倒计时 - UiThreadHandler.post { - prepareTaskCountdownTv.text = - "距离任务获取还有 ${DateTimeUtil.second2MMSS(millisUntilFinished/1000)}" + override fun onTick(millisUntilFinished: Long) { + // 倒计时 + UiThreadHandler.post { + prepareTaskCountdownTv.text = + "距离任务获取还有 ${DateTimeUtil.second2MMSS(millisUntilFinished / 1000)}" + } + } + + override fun onFinish() { + //倒计时结束了... + UiThreadHandler.post { + prepareTaskCountdownTv.visibility = View.GONE + } + mPrepareTasCountDownTimer?.cancel() } } - override fun onFinish() { - //倒计时结束了... - UiThreadHandler.post { - prepareTaskCountdownTv.visibility = View.GONE - } - mPrepareTasCountDownTimer?.cancel() - } - } - mPrepareTasCountDownTimer?.start() } @@ -392,7 +399,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), TaskTypeEnum.ToOrderEndTask.code, TaskTypeEnum.ToOrderStartTask.code -> {// 接驾任务 或 送驾任务 order?.also { - updatePathwayPoint(taskType,endSite?.siteName) + updatePathwayPoint(taskType, endSite?.siteName) handleOrderView(it) updateOrderUI(it) } @@ -403,7 +410,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), updateRemainDistanceAndTime(false) } - private fun updatePathwayPoint(taskType: Int,endSiteName: String?) { + private fun updatePathwayPoint(taskType: Int, endSiteName: String?) { if (TextUtils.isEmpty(endSiteName)) return pathwayPoint.visibility = if (taskType == TaskTypeEnum.ToOrderStartTask.code) View.VISIBLE else View.GONE @@ -595,11 +602,21 @@ class TaxiCurrentTaskFragment : BaseFragment(), * @param meters 米 * @param timeInSecond 秒 */ - fun updateCurrentTaskTripInfo(meters: Long, timeInSecond: Long) { - val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return - if (currentTaskWithOrder.endSite == null && currentTaskWithOrder == null) return - d("NaviToDestinationModel", "taskUitl, ${TaskUtils.getCurrentTaskTripHtml(meters, timeInSecond)}") - taskOtherInfo.text = TaskUtils.getCurrentTaskTripHtml(meters, timeInSecond) + private fun updateCurrentTaskTripInfo(meters: Long, timeInSecond: Long) { + UiThreadHandler.post { + val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return@post + if (currentTaskWithOrder.endSite == null) return@post + d( + TAG, + "updateCurrentTaskTripInfo, taskUtil, ${ + TaskUtils.getCurrentTaskTripHtml( + meters, + timeInSecond + ) + }" + ) + taskOtherInfo.text = TaskUtils.getCurrentTaskTripHtml(meters, timeInSecond) + } } override fun onDestroyView() { @@ -715,7 +732,8 @@ class TaxiCurrentTaskFragment : BaseFragment(), } if ((currentTaskWithOrder?.currentStatus == TaskStatusEnum.StartTask.code && currentTaskWithOrder.order == null) - || (currentTaskWithOrder?.order?.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.code)) { + || (currentTaskWithOrder?.order?.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.code) + ) { if (naviToEnd.visibility == View.GONE) { naviToEnd.visibility = View.VISIBLE } 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 cab5dae978..21be16eb61 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 @@ -173,7 +173,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } } - private fun updatePrepareTaskDelay120SUI(isStart: Boolean){ + private fun updatePrepareTaskDelay120SUI(isStart: Boolean) { d(TAG, "UpdatePrepareTaskDelay120SUI = $isStart") sendUiState { copy( @@ -195,17 +195,28 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } } - private fun updateOrderTotalMileAndDurationUI(mileage: Float, duration: Int) { - d(TAG, "updateOrderTotalMileAndDurationUI") + private fun updateOrderTripInfoUI(mileage: Float, duration: Int) { + d(TAG, "updateOrderTripInfoUI") sendUiState { copy( - taskWithOrderUIState = TaskWithOrderUIState.UpdateTaskTripInfo( + taskWithOrderUIState = TaskWithOrderUIState.UpdateOrderTripInfo( mileage, duration ) ) } } + private fun updateTaskTripInfoLocalCalculateUI(meters: Long, timeInSecond: Long) { + d(TAG, "UpdateTaskTripInfoLocalCalculateUI") + sendUiState { + copy( + taskWithOrderUIState = TaskWithOrderUIState.UpdateTaskTripLocalCalculateInfo( + meters, timeInSecond + ) + ) + } + } + override fun onTaskWithOrderDataChanged(result: QueryCurrentTaskRespBean.Result?) { d(TAG, "onTaskWithOrderChanged = result = " + GsonUtil.jsonFromObject(result)) DebugView.printInfoMsg("[查询TaskWithOrder信息] 更新数据, 刷新UI") @@ -235,9 +246,11 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), TaxiTaskModel.queryOrderByOrderNo(orderNo) } - override fun onOrderTotalMileAndDurationChanged(mileage: Float, duration: Int) { - //更新总全程信息(公里和分钟) - updateOrderTotalMileAndDurationUI(mileage, duration) + /** + * 更新总全程信息(公里和分钟), 后端返回的数据 + */ + override fun onOrderTripInfoChanged(mileage: Float, duration: Int) { + updateOrderTripInfoUI(mileage, duration) } override fun onOrderJourneyCompleted() { @@ -263,13 +276,20 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), updatePrepareTaskDelay120SUI(isStart) } + /** + * 更新本次任务行程信息, 本地计算的数据 + */ + override fun onTaskTripInfoLocalCalculateChanged(meters: Long, timeInSecond: Long) { + updateTaskTripInfoLocalCalculateUI(meters, timeInSecond) + } + override fun onCarEndServiceSuccess( driveToNearestStationTask: StartServiceRespBean.Result?, currentTaskWithOrder: QueryCurrentTaskRespBean.Result? ) { if (currentTaskWithOrder?.endSite != null && (currentTaskWithOrder.currentStatus < TaskStatusEnum.CompleteTask.code - ||currentTaskWithOrder.order != null) + || currentTaskWithOrder.order != null) ) { VoiceNotice.showNotice("暂停接单啦!要完成当前订单哦") return diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt index 34b3f7eb23..89cd0e6df0 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt @@ -482,10 +482,12 @@ object TaxiTaskModel { TAG, "dynamicCalculateRouteInfo: lastSumLength=$lastSumLength, lastTime=$lastTime, threadName=Thread.currentThread().name" ) - mOrderStatusCallback?.onCurrentOrderDistToEndChanged( - lastSumLength.toLong(), - lastTime.toLong() - ) + mTaxiTaskWithOrderCallbackMap.forEach { + val listener = it.value + listener.onTaskTripInfoLocalCalculateChanged( + lastSumLength.toLong(), + lastTime.toLong()) + } } } @@ -869,7 +871,7 @@ object TaxiTaskModel { TaxiOrderStatusEnum.ArriveAtEnd.code -> { mTaxiTaskWithOrderCallbackMap.forEach { val listener = it.value - listener.onOrderTotalMileAndDurationChanged( + listener.onOrderTripInfoChanged( data.data.mileage, data.data.duration.toInt() ) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskTabFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskTabFragment.kt index 4b1f35b416..91955bf823 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskTabFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskTabFragment.kt @@ -188,11 +188,6 @@ class TaxiTaskTabFragment : BaseFragment() { currentTaskFragment!!.onNaviToEndStationByAmap(isShow) } - fun onCurrentTaskTripInfoChanged(meters: Long, timeInSecond: Long) { - if (null == currentTaskFragment) return - currentTaskFragment!!.updateCurrentTaskTripInfo(meters, timeInSecond) - } - fun onCarTakeOrderStatusChanged() { if (null == currentTaskFragment) return currentTaskFragment!!.onCarTakeOrderStatusChanged()