[6.0.0] 开始倒计时120s或者10s拉取任务;演练任务120s拉取;接驾任务10s拉取;送驾任务乘客验证后拉取

This commit is contained in:
wangmingjun
2023-09-12 20:00:14 +08:00
parent d02b1fcb6d
commit a63936a035
7 changed files with 71 additions and 50 deletions

View File

@@ -5,13 +5,13 @@ import com.mogo.och.taxi.bean.TrajectoryListRespBean
interface ITaxiTaskWithOrderCallback {
fun onTaskWithOrderDataChanged(taskWithOrder: QueryCurrentTaskRespBean.Result?)
fun onTaskCompleted(isOrderArrivedAtStart: Boolean, siteId: Long)
fun onTaskCompleted(result: QueryCurrentTaskRespBean.Result)
fun onTaskTrajectoryDataChanged(data: TrajectoryListRespBean?)
fun onOrderCancel()
fun onOrderArriveAtEnd(orderNo: String)
fun onOrderTripInfoChanged(mileage: Float, duration: Int)
fun onOrderJourneyCompleted()
fun onStartAutopilot()
fun onStartPrepareTask120s(isStart: Boolean)
fun onStartPrepareTaskUI(delayTime: Long, isStart: Boolean)
fun onTaskTripInfoLocalCalculateChanged(meters:Long, timeInSecond:Long)
}

View File

@@ -1,4 +1,8 @@
package com.mogo.och.taxi.constant/**
package com.mogo.och.taxi.constant
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean
/**
* Created on 2023/8/7
* taskType = 1 虚拟任务(演练任务), = 2 接驾任务(运营), = 3 //送驾任务(运营)
*/
@@ -18,5 +22,15 @@ enum class TaskTypeEnum(val code: Int) {
}
return None
}
/**
* taskType == ToOrderStartTask.code 接驾任务
*/
fun isToOrderStartTask(data: QueryCurrentTaskRespBean.Result?): Boolean {
if (data == null) {
return false
}
return data.taskType == ToOrderStartTask.code
}
}
}

View File

@@ -177,7 +177,7 @@ public class DebugView @JvmOverloads constructor(
initViewByData(taskWithOrder)
}
override fun onTaskCompleted(isOrderArrivedAtStart: Boolean, siteId: Long) {
override fun onTaskCompleted(result: QueryCurrentTaskRespBean.Result) {
}
override fun onTaskTrajectoryDataChanged(data: TrajectoryListRespBean?) {
@@ -198,7 +198,7 @@ public class DebugView @JvmOverloads constructor(
override fun onStartAutopilot() {
}
override fun onStartPrepareTask120s(isStart: Boolean) {
override fun onStartPrepareTaskUI(delayTime: Long, isStart: Boolean) {
}
override fun onTaskTripInfoLocalCalculateChanged(meters: Long, timeInSecond: Long) {

View File

@@ -28,5 +28,5 @@ sealed class TaskWithOrderUIState {
data class UpdateTaskTripLocalCalculateInfo(val meters: Long, val timeInSecond: Long) :
TaskWithOrderUIState()
data class UpdatePrepareTaskDelay120S(val isStart: Boolean) : TaskWithOrderUIState()
data class UpdatePrepareTaskDelay(val delayTime: Long, val isStart: Boolean) : TaskWithOrderUIState()
}

View File

@@ -37,7 +37,6 @@ import com.mogo.och.taxi.constant.TaskTypeEnum
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TAXI_END_MAP_MAKER
import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TAXI_START_MAP_MAKER
import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TIMER_PREPARE_TASK_INTERVAL_120S
import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TYPE_MARKER_TAXI_ORDER
import com.mogo.och.taxi.ui.base.TaxiFragment
import com.mogo.och.taxi.utils.MapMakerManager
@@ -165,7 +164,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
if (taskAndOrderUiState.driveToNearestStationTask != null) {
updateViewByDriveToNearestStationTask(taskAndOrderUiState.driveToNearestStationTask)
} else {
updatePrepareTaskDelay120SUI(false)
updatePrepareTaskDelayUI(0,false)
initContainerView(false)
removeAllMapMarker()
}
@@ -198,8 +197,8 @@ class TaxiCurrentTaskFragment : BaseFragment(),
)
}
is TaskWithOrderUIState.UpdatePrepareTaskDelay120S -> {
updatePrepareTaskDelay120SUI(taskAndOrderUiState.isStart)
is TaskWithOrderUIState.UpdatePrepareTaskDelay -> {
updatePrepareTaskDelayUI(taskAndOrderUiState.delayTime,taskAndOrderUiState.isStart)
}
}
}
@@ -209,7 +208,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
/**
* 更新120s倒计时
*/
private fun updatePrepareTaskDelay120SUI(isStart: Boolean) {
private fun updatePrepareTaskDelayUI(millisInFuture: Long, isStart: Boolean) {
if (!isStart) {
prepareTaskCountdownTv.visibility = View.GONE
@@ -220,7 +219,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
prepareTaskCountdownTv.visibility = View.VISIBLE
mPrepareTasCountDownTimer =
object : CountDownTimer(TIMER_PREPARE_TASK_INTERVAL_120S, 1000L) {// 5倒计时后开启自驾
object : CountDownTimer(millisInFuture, 1000L) {// 5倒计时后开启自驾
override fun onTick(millisUntilFinished: Long) {
// 倒计时
@@ -393,7 +392,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
taskTypeTv.text = resources.getString(R.string.task_exercise)
startStationName.text = startSite.siteName
endStationName.text = endSite.siteName
updatePrepareTaskDelay120SUI(false)
updatePrepareTaskDelayUI(0,false)
updateStartAndEndStationPointByStatus(true)
}
@@ -482,7 +481,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
}
private fun updateOrderUI(order: OrderDetail) {
updatePrepareTaskDelay120SUI(false)
updatePrepareTaskDelayUI(0,false)
taskTypeTv.text = resources.getString(R.string.task_order)
taskTypeTv.background =
ContextCompat.getDrawable(
@@ -621,7 +620,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
override fun onDestroyView() {
AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi()
updatePrepareTaskDelay120SUI(false)
updatePrepareTaskDelayUI(0,false)
super.onDestroyView()
}

View File

@@ -21,6 +21,7 @@ import com.mogo.och.taxi.bean.TrajectoryListRespBean
import com.mogo.och.taxi.callback.ITaxiCarServiceCallback
import com.mogo.och.taxi.callback.ITaxiTaskWithOrderCallback
import com.mogo.och.taxi.constant.TaskStatusEnum
import com.mogo.och.taxi.constant.TaskTypeEnum
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
import com.mogo.och.taxi.constant.TaxiUnmannedConst
import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager
@@ -173,11 +174,11 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
}
}
private fun updatePrepareTaskDelay120SUI(isStart: Boolean) {
private fun updatePrepareTaskDelayUI(delayTime: Long, isStart: Boolean) {
d(TAG, "UpdatePrepareTaskDelay120SUI = $isStart")
sendUiState {
copy(
taskWithOrderUIState = TaskWithOrderUIState.UpdatePrepareTaskDelay120S(
taskWithOrderUIState = TaskWithOrderUIState.UpdatePrepareTaskDelay(delayTime,
isStart
)
)
@@ -223,13 +224,22 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
updateTaskAndOrderUi(result)
}
override fun onTaskCompleted(isOrderArrivedAtStart: Boolean, siteId: Long) {
d(TAG, "onTaskCompleted: isOrderArrivedAtStart=$isOrderArrivedAtStart, siteId=$siteId")
if (isOrderArrivedAtStart) {
TaxiTaskModel.removePrepareTaskDelay120S()
TaxiTaskModel.prepareNextTask(siteId)
} else {
TaxiTaskModel.startPrepareTaskDelay120S(siteId)
/**
* 开始倒计时120s或者10s拉取任务
* 演练任务120s拉取
* 接驾任务10s拉取
*/
override fun onTaskCompleted(result: QueryCurrentTaskRespBean.Result) {
d(TAG, "onTaskCompleted: ${result?.currentStatus}, siteId=${result?.endSite?.siteId}")
if (QueryCurrentTaskRespBean.isUserArriveAtStart(result)) {
TaxiTaskModel.removePrepareTaskDelay()
TaxiTaskModel.prepareNextTask(0,result.endSite!!.siteId)
}else {
TaxiTaskModel.startPrepareTaskDelay(
if (TaskTypeEnum.isToOrderStartTask(result))
TaxiUnmannedConst.START_AUTOPILOT_COUNTDOWN_INTERVAL
else TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S,
result.endSite!!.siteId)
}
}
@@ -260,7 +270,8 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
//获取新的任务
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
currentTaskWithOrder?.endSite?.also {
TaxiTaskModel.startPrepareTaskDelay120S(it.siteId)
TaxiTaskModel.startPrepareTaskDelay(TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S,
it.siteId)
}
}
@@ -272,10 +283,12 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
}
/**
* 开始倒计时120拉取任务
* 开始倒计时120s或者10s拉取任务
* 演练任务120s拉取
* 接驾任务10s拉取
*/
override fun onStartPrepareTask120s(isStart: Boolean) {
updatePrepareTaskDelay120SUI(isStart)
override fun onStartPrepareTaskUI(delayTime: Long, isStart: Boolean) {
updatePrepareTaskDelayUI(delayTime, isStart)
}
/**

View File

@@ -136,7 +136,7 @@ object TaxiTaskModel {
private val mCurrentTaskRoutePointsGcj: MutableList<MogoLocation> = ArrayList()
private var mPrepareTaskDelay120SRunnable: Runnable? = null
private var mPrepareTaskDelayRunnable: Runnable? = null
fun addTaskWithOrderListener(tag: String, listener: ITaxiTaskWithOrderCallback) {
if (mTaxiTaskWithOrderCallbackMap.containsKey(tag)) {
@@ -743,12 +743,7 @@ object TaxiTaskModel {
) {
mTaxiTaskWithOrderCallbackMap.forEach {
val listener = it.value
listener.onTaskCompleted(
QueryCurrentTaskRespBean.isUserArriveAtStart(
result
),
result.endSite!!.siteId
)
listener.onTaskCompleted(result)
}
}
@@ -922,7 +917,7 @@ object TaxiTaskModel {
})
}
fun prepareNextTask(siteId: Long) {
fun prepareNextTask(delayTime: Long,siteId: Long) {
DebugView.printInfoMsg("[PrepareNextTask] 准备发送请求, siteId=$siteId")
TaxiTaskWithOrderServiceManager.prepareTask(
mContext,
@@ -941,39 +936,39 @@ object TaxiTaskModel {
DebugView.printErrorMsg("[PrepareNextTask] 请求fail, code=$code ,msg=$msg")
d(TAG, "prepareNextTask onFail: code=$code ,msg=$msg")
if (LoginStatusManager.isLogin() && TaxiCarServingStatusManager.isCarServingStatus()) {
startPrepareTaskDelay120S(siteId)
startPrepareTaskDelay(delayTime,siteId)
}
}
})
}
fun startPrepareTaskDelay120S(siteId: Long) {
removePrepareTaskDelay120S()
fun startPrepareTaskDelay(delayTime: Long, siteId: Long) {
removePrepareTaskDelay()
mPrepareTaskDelay120SRunnable = Runnable {
prepareNextTask(siteId)
mPrepareTaskDelayRunnable = Runnable {
prepareNextTask(delayTime,siteId)
}
mTaxiTaskWithOrderCallbackMap.forEach {
val listener = it.value
listener.onStartPrepareTask120s(true)
listener.onStartPrepareTaskUI(delayTime,true)
}
DebugView.printInfoMsg("[PrepareNextTask] 倒计时${TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S / 1000}秒后prepareNextTask, siteId=$siteId")
DebugView.printInfoMsg("[PrepareNextTask] 倒计时${delayTime / 1000}秒后prepareNextTask, siteId=$siteId")
UiThreadHandler.postDelayed(
mPrepareTaskDelay120SRunnable,
TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S
mPrepareTaskDelayRunnable,
delayTime
)
}
fun removePrepareTaskDelay120S() {
if (mPrepareTaskDelay120SRunnable != null) {
fun removePrepareTaskDelay() {
if (mPrepareTaskDelayRunnable != null) {
DebugView.printInfoMsg("[PrepareNextTask] removeCallbacks, 取消prepareNextTask倒计时")
UiThreadHandler.removeCallbacks(mPrepareTaskDelay120SRunnable)
UiThreadHandler.removeCallbacks(mPrepareTaskDelayRunnable)
mTaxiTaskWithOrderCallbackMap.forEach {
val listener = it.value
listener.onStartPrepareTask120s(false)
listener.onStartPrepareTaskUI(0,false)
}
mPrepareTaskDelay120SRunnable = null
mPrepareTaskDelayRunnable = null
}
}