[6.0.0] 1、手机号和人数显示逻辑 2、订单取消播报改为 订单已经取消

This commit is contained in:
wangmingjun
2023-08-25 17:07:52 +08:00
committed by zhongchao
parent 5b47b2a2c9
commit cedfa1a2f6
2 changed files with 138 additions and 145 deletions

View File

@@ -307,7 +307,8 @@ class TaxiCurrentTaskFragment : BaseFragment(),
TaskTypeEnum.VirtualTask.code -> { //演练任务
cancelOrder.visibility = View.GONE
orderPhoneAndNum.visibility = View.GONE
orderPhoneAndNum.visibility = if (order != null &&
currentStatus == TaskStatusEnum.CompleteTask.code) View.VISIBLE else View.GONE
taskClickBtn.visibility = View.GONE
naviToStart.visibility = View.GONE

View File

@@ -1,5 +1,6 @@
package com.mogo.och.taxi.ui.task
import android.content.Context
import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
@@ -8,7 +9,7 @@ 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.util.NetworkUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.common.module.biz.constant.LoginStatusManager.isLogin
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
import com.mogo.och.common.module.utils.ToastUtilsOch
import com.mogo.och.common.module.voice.VoiceNotice
@@ -18,11 +19,9 @@ import com.mogo.och.taxi.base.IUiIntent
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean
import com.mogo.och.taxi.bean.StartServiceRespBean
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.callback.ITaxiTaskCallback
import com.mogo.och.taxi.constant.TaskStatusEnum
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
import com.mogo.och.taxi.constant.TaxiUnmannedConst
import com.mogo.och.taxi.constant.TaxiCarServingStatusManager.isCarServingStatus
import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager
import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager.cancelOrder
import com.mogo.och.taxi.ui.unmanned.TaskWithOrderUIState
@@ -34,14 +33,15 @@ import com.mogo.och.taxi.utils.TaxiTrajectoryManager
* @author: wangmingjun
* @date: 2023/7/26
*/
class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(),
ITaxiTaskWithOrderCallback, ITaxiCarServiceCallback {
class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(), ITaxiTaskCallback {
private var mCurrentTaskAndOrder: QueryCurrentTaskRespBean.Result? = null
private val TAG = SceneConstant.M_TAXI + "TaxiUnmannedViewModel"
private var mContext: Context = AbsMogoApplication.getApp().applicationContext
init {
TaxiTaskModel.setTaskWithOrderCallback(this)
TaxiTaskModel.setCarServiceCallback(this)
TaxiTaskModel.setTaskCallback(this)
}
override fun initUiState(): UnmannedState {
@@ -50,16 +50,16 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(),
override fun handleIntent(intent: IUiIntent) {
when (intent) {
is UnmannedIntent.StartTaskWithOrderLooper -> { //开始轮询
is UnmannedIntent.StartTaskOrOrderLooper -> { //开始轮询
startOrStopCurrentTaskWithOrderLoop(true)
}
is UnmannedIntent.StartOrEndTakeOrder -> {//开始、暂停接单
TaxiTaskModel.updateCarServingStatus()
is UnmannedIntent.StartOrPauseTakeOrder -> {//开始、暂停接单
updateCarServingStatus()
}
is UnmannedIntent.JumpPassengerCheck -> { //手动点击跳过乘客验证
jumpPassengerCheck()
is UnmannedIntent.JumpPassengerCheckDone -> { //手动点击跳过乘客验证
jumpPassengerCheckDone()
}
is UnmannedIntent.JourneyCompleted -> { //点击服务完成
@@ -67,113 +67,161 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(),
}
is UnmannedIntent.CloseOrderByDriver -> {
closeOrderByDriver()
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null) {
val site = mCurrentTaskAndOrder!!.order!!.orderEndSite
TaxiTaskModel.submitArriveSite(site!!.siteId, true)
}
}
is UnmannedIntent.CancelOrder -> {// 取消订单, 暂未加取消类型和原因
cancelOrder(intent.type)
handleCancelOrder(intent.type)
}
is UnmannedIntent.StartTask -> {
startTask()
TaxiTaskModel.toStartTask()
}
}
}
fun startOrStopCurrentTaskWithOrderLoop(start: Boolean) {
d(TAG, "startOrStopCurrentTaskWithOrderLoop(): isStart=$start")
if (start) {
TaxiTaskModel.startQueryCurrentTaskWithOrderLoop()
} else {
TaxiTaskModel.stopQueryCurrentTaskWithOrderLoop()
}
}
private fun cancelOrder(cancelType: Int) {
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
currentTaskWithOrder?.order?.also {
cancelOrder(AbsMogoApplication.getApp().applicationContext,
it.orderNo,
private fun handleCancelOrder(cancelType: Int) {
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null) {
cancelOrder(mContext,
mCurrentTaskAndOrder!!.order!!.orderNo,
cancelType,
object : OchCommonServiceCallback<BaseData> {
override fun onSuccess(data: BaseData?) {
d(TAG, "handleCancelOrder() = onSuccess")
d(SceneConstant.M_TAXI + TAG, "handleCancelOrder() = onSuccess")
}
override fun onFail(code: Int, msg: String?) {
d(TAG, "handleCancelOrder() $code $msg")
d(SceneConstant.M_TAXI + TAG, "handleCancelOrder() $code $msg")
}
})
}
}
private fun jumpPassengerCheck() {
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
currentTaskWithOrder?.order?.also {
TaxiTaskWithOrderServiceManager.jumpPassengerCheck(AbsMogoApplication.getApp().applicationContext,
it.orderNo,
/**
* 更新接单状态
*/
private fun updateCarServingStatus() {
if (!isLogin()) {
TaxiTaskModel.loginService!!.queryLoginStatusByNet()
return
}
if (isCarServingStatus()) {//接单状态下,去结束
TaxiTaskWithOrderServiceManager.endService(
mContext,
object : OchCommonServiceCallback<BaseData> {
override fun onSuccess(data: BaseData?) {
d(TAG, "jumpPassengerCheck onSuccess:")
TaxiTaskModel.loginService!!.queryLoginStatusByNet()
//需要将虚拟任务停掉, 虚拟任务会再开始接单后获取新的
d(TAG, "set mUntruthSiteTask null")
updateDriveToNearestStationTaskUI(null)
TaxiTaskModel.updateUntruthTask(null)
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.endSite != null && mCurrentTaskAndOrder!!.startSite != null && mCurrentTaskAndOrder!!.currentStatus < TaskStatusEnum.CompleteTask.code) {
VoiceNotice.showNotice("暂停接单啦!要完成当前订单哦")
} else {
VoiceNotice.showNotice("暂停接单啦")
}
}
override fun onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip))
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip))
}
}
override fun onFail(code: Int, msg: String) {
ToastUtilsOch.showWithCodeMessage(code, msg)
}
})
} else {//暂停接单状态下,去接单
TaxiTaskWithOrderServiceManager.startService(mContext,
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().latitude,
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().longitude,
object : OchCommonServiceCallback<StartServiceRespBean> {
override fun onSuccess(data: StartServiceRespBean?) {
if (data == null || data.code != 0) return
TaxiTaskModel.loginService!!.queryLoginStatusByNet()
VoiceNotice.showNotice("开始接单啦")
d(TAG, "data.data=" + GsonUtil.jsonFromObject(data.data))
if (mCurrentTaskAndOrder == null) return
if (mCurrentTaskAndOrder!!.endSite != null) {
if (mCurrentTaskAndOrder!!.currentStatus == TaskStatusEnum.CompleteTask.code && mCurrentTaskAndOrder!!.order != null) { //有任务, 状态为3, 且有订单
return
} else if (mCurrentTaskAndOrder!!.currentStatus < TaskStatusEnum.CompleteTask.code) {
//有任务, 并且未执行完成
return
}
}
updateDriveToNearestStationTaskUI(data.data)
TaxiTaskModel.updateUntruthTask(data.data)
}
override fun onFail(code: Int, msg: String?) {
d(TAG, "jumpPassengerCheck onFail: code=$code, msg=$msg")
ToastUtilsOch.showWithCodeMessage(
code,
"$msg curLatitude = ${CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().latitude}" + " curLongitude = ${CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().longitude}"
)
}
override fun onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip))
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip))
}
}
})
}
}
private fun journeyCompleted() {
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
currentTaskWithOrder?.order?.also {
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null) {
TaxiTaskWithOrderServiceManager.orderCompleted(AbsMogoApplication.getApp().applicationContext,
it.orderNo,
mCurrentTaskAndOrder!!.order!!.orderNo,
object : OchCommonServiceCallback<BaseData> {
override fun onSuccess(data: BaseData?) {
d(TAG, "journeyCompleted onSuccess")
d(SceneConstant.M_TAXI + TAG, "orderCompleted() = onSuccess")
}
override fun onFail(code: Int, msg: String?) {
d(TAG, "journeyCompleted onFail: code=$code, msg=$msg")
d(SceneConstant.M_TAXI + TAG, "orderCompleted() $code $msg")
}
})
}
}
private fun closeOrderByDriver() {
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
currentTaskWithOrder?.order?.orderEndSite?.also {
TaxiTaskModel.submitArriveSite(it.siteId, true)
private fun jumpPassengerCheckDone() {
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null) {
TaxiTaskWithOrderServiceManager.jumpPassengerCheck(AbsMogoApplication.getApp().applicationContext,
mCurrentTaskAndOrder!!.order!!.orderNo,
object : OchCommonServiceCallback<BaseData> {
override fun onSuccess(data: BaseData?) {
d(SceneConstant.M_TAXI + TAG, "jumpPassengerCheckDone() = onSuccess")
}
override fun onFail(code: Int, msg: String?) {
d(SceneConstant.M_TAXI + TAG, "jumpPassengerCheckDone() $code $msg")
}
})
}
}
private fun startTask() {
if (!TaxiTaskModel.checkCurrentTaskCondition()) {
ToastUtils.showShort("无任务!")
return
}
//当前订单状态若为20 , 则使用的lineId为订单信息的
TaxiTaskModel.getCurrentTaskWithOrder()?.let {
TaxiTaskModel.startTask(
if (it.order != null && it.order!!.orderStatus >= TaxiOrderStatusEnum.ArriveAtStart.code)
it.order!!.orderLine
else
it.lineId
)
}
}
private fun updateTaskAndOrderUi(currentTaskWithOrder: QueryCurrentTaskRespBean.Result?) {
private fun updateTaskAndOrderUi() {
d(
TAG, "updateTaskAndOrderUi: currentTaskWithOrder=${
GsonUtil.getGson().toJson(currentTaskWithOrder)
TAG,
"updateTaskAndOrderUi: mCurrentTaskAndOrder=${
GsonUtil.getGson().toJson(mCurrentTaskAndOrder)
}"
)
sendUiState {
copy(
taskWithOrderUIState = TaskWithOrderUIState.TaskWithOrder(
currentTaskWithOrder
mCurrentTaskAndOrder
)
)
}
@@ -201,12 +249,20 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(),
}
}
fun startOrStopCurrentTaskWithOrderLoop(start: Boolean) {
d(TAG, "startOrStopCurrentTaskWithOrderLoop(): isStart=$start")
if (start) {
TaxiTaskModel.startQueryCurrentTaskWithOrderLoop()
} else {
TaxiTaskModel.stopQueryCurrentTaskWithOrderLoop()
}
}
override fun onTaskWithOrderDataChanged(result: QueryCurrentTaskRespBean.Result?) {
if (result === null) return
d(TAG, "onTaskWithOrderChanged = result = " + GsonUtil.jsonFromObject(result))
result?.also {
updateTaskAndOrderUi(result)
}
mCurrentTaskAndOrder = result
updateTaskAndOrderUi()
}
override fun onTaskCompleted(isOrderArrivedAtStart: Boolean, siteId: Long) {
@@ -214,7 +270,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(),
if (isOrderArrivedAtStart) {
TaxiTaskModel.prepareNextTask(siteId)
} else {
TaxiTaskModel.startPrepareTaskDelay120S(siteId)
TaxiTaskModel.startPrepareTask120S(siteId)
}
}
@@ -223,8 +279,9 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(),
}
override fun onOrderCancel() {
VoiceNotice.showNotice("乘客已经取消")
updateTaskAndOrderUi(null)
VoiceNotice.showNotice("订单已经取消")
mCurrentTaskAndOrder = null
updateTaskAndOrderUi()
}
override fun onOrderArriveAtEnd(orderNo: String) {
@@ -237,76 +294,11 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(),
}
override fun onOrderJourneyCompleted() {
updateTaskAndOrderUi(null)
//获取新的任务
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
currentTaskWithOrder?.endSite?.also {
TaxiTaskModel.startPrepareTaskDelay120S(it.siteId)
}
}
override fun onStartAutopilot() {
UiThreadHandler.postDelayed({
startTask() //状态流转
TaxiTaskModel.startAutoPilot() //自驾开启
VoiceNotice.showNotice("车辆正在自动开启自动驾驶")
}, TaxiUnmannedConst.START_AUTOPILOT_COUNTDOWN_INTERVAL) // 10s后开启自驾, 状态流转
}
override fun onCarEndServiceSuccess(
driveToNearestStationTask: StartServiceRespBean.Result?,
currentTaskWithOrder: QueryCurrentTaskRespBean.Result?
) {
if (currentTaskWithOrder?.endSite != null && currentTaskWithOrder.startSite != null && currentTaskWithOrder.currentStatus < TaskStatusEnum.CompleteTask.code) {
VoiceNotice.showNotice("暂停接单啦!要完成当前订单哦")
} else {
VoiceNotice.showNotice("暂停接单啦")
}
updateDriveToNearestStationTaskUI(driveToNearestStationTask)
}
override fun onCarEndServiceFailed(code: Int, msg: String) {
ToastUtilsOch.showWithCodeMessage(code, msg)
}
override fun onCarEndServiceError() {
val context = AbsMogoApplication.getApp().applicationContext
if (!NetworkUtils.isConnected(context)) {
ToastUtils.showShort(context.getString(R.string.network_error_tip))
} else {
ToastUtils.showShort(context.getString(R.string.request_error_tip))
}
}
override fun onCarStartServiceSuccess(
driveToNearestStationTask: StartServiceRespBean.Result?,
currentTaskWithOrder: QueryCurrentTaskRespBean.Result?
) {
VoiceNotice.showNotice("开始接单啦")
currentTaskWithOrder?.apply {
if (endSite != null) {
when {
currentStatus == TaskStatusEnum.CompleteTask.code && order != null -> return
currentStatus < TaskStatusEnum.CompleteTask.code -> return
}
}
}
updateDriveToNearestStationTaskUI(driveToNearestStationTask)
}
override fun onCarStartServiceFailed(code: Int, msg: String) {
ToastUtilsOch.showWithCodeMessage(
code,
"$msg curLatitude = ${CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().latitude}" + " curLongitude = ${CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().longitude}"
)
}
override fun onCarStartServiceError() {
val context = AbsMogoApplication.getApp().applicationContext
if (!NetworkUtils.isConnected(context)) {
ToastUtils.showShort(context.getString(R.string.network_error_tip))
} else {
ToastUtils.showShort(context.getString(R.string.request_error_tip))
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.endSite != null) {
TaxiTaskModel.startPrepareTask120S(mCurrentTaskAndOrder!!.endSite!!.siteId)
}
mCurrentTaskAndOrder = null
updateTaskAndOrderUi()
}
}