[6.0.0] 1、手机号和人数显示逻辑 2、订单取消播报改为 订单已经取消
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user