[6.1.0] refactor: 本次计算的行程信息走viewModel链路传递给view;

This commit is contained in:
aibingbing
2023-09-12 15:43:05 +08:00
parent bd4ab59517
commit 6576304457
10 changed files with 99 additions and 72 deletions

View File

@@ -12,7 +12,4 @@ public interface ITaxiOrderStatusCallback {
* @param isShow 是否显示导航地图(否播报声音)
*/
void onNaviToEnd(boolean isAmap, boolean isShow);
// 当前位置距离上车点的距离(米)、预估时间(秒)
void onCurrentOrderDistToEndChanged(long meters, long timeInSecond);
}

View File

@@ -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)
}

View File

@@ -70,13 +70,13 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
// }
}
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<TaxiFragment, TaxiPresenter>(),
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<TaxiFragment, TaxiPresenter>(),
}
}
fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long) {
if (null == taskTabFragment || taskTabFragment!!.get() == null) return
taskTabFragment!!.get()!!.onCurrentTaskTripInfoChanged(meters, timeInSecond)
}
private fun testRouteInfoUpload() {
TPRouteDataTestUtils.converToRouteData()
}

View File

@@ -137,11 +137,6 @@ public class TaxiPresenter extends Presenter<TaxiFragment> 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));

View File

@@ -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) {
}
}

View File

@@ -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()
}

View File

@@ -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
}

View File

@@ -173,7 +173,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
}
}
private fun updatePrepareTaskDelay120SUI(isStart: Boolean){
private fun updatePrepareTaskDelay120SUI(isStart: Boolean) {
d(TAG, "UpdatePrepareTaskDelay120SUI = $isStart")
sendUiState {
copy(
@@ -195,17 +195,28 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
}
}
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<UnmannedState, TaskUiIntent>(),
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<UnmannedState, TaskUiIntent>(),
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

View File

@@ -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()
)

View File

@@ -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()