[Taxi无人化] refactor: CurrentTaskFragment 优化;

This commit is contained in:
aibingbing
2023-08-28 11:35:25 +08:00
committed by zhongchao
parent d36116733d
commit f451be39bf
9 changed files with 185 additions and 171 deletions

View File

@@ -98,7 +98,7 @@ public class AmapNaviToDestinationModel implements AMapNaviListener {
}
}
public void setOCHTaciNaviChangedCallback(ICommonNaviChangedCallback callback) {
public void setTaxiNaviChangedCallback(ICommonNaviChangedCallback callback) {
this.mNaviChangedCallback = callback;
}

View File

@@ -354,7 +354,7 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment
NaviLatLng endNaviLatLng = new NaviLatLng(stationLat, stationLng);
AmapNaviToDestinationModel.getInstance(getContext()).initAMapNavi(startNaviLatLng, endNaviLatLng);
AmapNaviToDestinationModel.getInstance(getContext()).setVoiceIsMute(isVoicePlay);
AmapNaviToDestinationModel.getInstance(getContext()).setOCHTaciNaviChangedCallback(this);
AmapNaviToDestinationModel.getInstance(getContext()).setTaxiNaviChangedCallback(this);
}
private void showOrHideNavi(boolean isShow) {

View File

@@ -0,0 +1,30 @@
package com.mogo.och.taxi.ui.task
import com.mogo.och.taxi.base.IUiIntent
/**
* @author: wangmingjun
* @date: 2023/7/26
*/
sealed class TaskUiIntent: IUiIntent{
//开始接单 、 暂停接单
object StartOrEndTakeOrder : TaskUiIntent()
object StartTaskWithOrderLooper : TaskUiIntent()
//取消订单
class CancelOrder(val type: Int) : TaskUiIntent()
object StartTask: TaskUiIntent()
//订单服务完成
object JourneyCompleted: TaskUiIntent()
//跳过乘客验证
object JumpPassengerCheck : TaskUiIntent()
//司机端手动结束订单
object CloseOrderByDriver : TaskUiIntent()
}

View File

@@ -3,12 +3,9 @@ package com.mogo.och.taxi.ui.task
import android.annotation.SuppressLint
import android.graphics.Color
import android.graphics.drawable.GradientDrawable
import android.os.Build
import android.os.Bundle
import android.view.View
import androidx.annotation.RequiresApi
import androidx.core.content.ContextCompat
import androidx.core.text.HtmlCompat
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.amap.api.navi.model.NaviLatLng
@@ -19,8 +16,9 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02Lis
import com.mogo.eagle.core.function.main.MainMoGoApplication
import com.mogo.eagle.core.network.utils.GsonUtil
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.mogo.logger.CallerLogger.i
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI
import com.mogo.eagle.core.utilcode.util.ClickUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.common.module.map.AmapNaviToDestinationModel
@@ -39,7 +37,6 @@ import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TYPE_MARKER_TAXI_O
import com.mogo.och.taxi.ui.base.TaxiFragment
import com.mogo.och.taxi.ui.task.TaxiTaskModel
import com.mogo.och.taxi.ui.unmanned.TaskWithOrderUIState
import com.mogo.och.taxi.ui.unmanned.UnmannedIntent
import com.mogo.och.taxi.utils.MapMakerManager
import com.mogo.och.taxi.utils.TaskUtils
import kotlinx.android.synthetic.main.task_fragment_current.cancelOrder
@@ -67,15 +64,11 @@ class TaxiCurrentTaskFragment : BaseFragment(),
View.OnClickListener, ICommonNaviChangedCallback {
private lateinit var mViewModel: TaxiCurrentTaskViewModel
private var mCurrentTaskWithOrder: QueryCurrentTaskRespBean.Result? = null
// 开始接单后 需要将车开到最近的一个站点就位,然后才能开启 无人化 流程
private var mDriveToNearestStationTask: StartServiceRespBean.Result? = null
companion object {
const val TAG = "TaxiCurrentTaskFragment"
const val TAG = M_TAXI + "TaxiCurrentTaskFragment"
private var mTaxiFragment: TaxiFragment? = null
fun newInstance(taxiFragment: TaxiFragment?): TaxiCurrentTaskFragment {
mTaxiFragment = taxiFragment
val args = Bundle()
@@ -115,7 +108,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
*/
private fun initContainerView(hasCurrentTask: Boolean) {
d(
M_TAXI + TAG,
TAG,
"hasCurrentTask = $hasCurrentTask"
)
try {
@@ -149,7 +142,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
}
private fun initViewModelObserver() {
mViewModel.sendUiIntent(UnmannedIntent.StartTaskWithOrderLooper)
mViewModel.sendUiIntent(TaskUiIntent.StartTaskWithOrderLooper)
//监听返回的数据状态
lifecycleScope.launchWhenStarted {
@@ -159,8 +152,8 @@ class TaxiCurrentTaskFragment : BaseFragment(),
is TaskWithOrderUIState.Init -> {
}
// 开始接单后 需要将车开到最近的一个站点就位,然后才能开启 无人化 流程
is TaskWithOrderUIState.TaskDriveToNearestStationTask -> {
mDriveToNearestStationTask = taskAndOrderUiState.driveToNearestStationTask
if (taskAndOrderUiState.driveToNearestStationTask != null) {
updateViewByDriveToNearestStationTask(taskAndOrderUiState.driveToNearestStationTask)
} else {
@@ -170,20 +163,14 @@ class TaxiCurrentTaskFragment : BaseFragment(),
}
is TaskWithOrderUIState.TaskWithOrder -> {
mCurrentTaskWithOrder = taskAndOrderUiState.taskWithOrder
//如果在前往标定站点, 显示标定站点
// if (mDriveToNearestStationTask != null){
// return@collect
// }
if (mCurrentTaskWithOrder == null) {
val currentTaskWithOrder = taskAndOrderUiState.taskWithOrder
if (currentTaskWithOrder == null) {
initContainerView(false)
removeAllMapMarker()
return@collect
}
updateNextTaskFragment(taskAndOrderUiState.taskWithOrder)
updateViewByCurrentTaskWithOrder(taskAndOrderUiState.taskWithOrder)
updateNextTaskFragment(currentTaskWithOrder)
updateViewByCurrentTaskWithOrder(currentTaskWithOrder)
}
is TaskWithOrderUIState.UpdateTaskTripInfo -> {
@@ -220,12 +207,11 @@ class TaxiCurrentTaskFragment : BaseFragment(),
updateStartAndEndStationPointByStatus(true)
// 使用高德获取导航数据
if (mDriveToNearestStationTask != null) {
startNaviToStation(
false, mDriveToNearestStationTask!!.gcjLat,
mDriveToNearestStationTask!!.gcjLon
)
}
startNaviToStation(
false,
driveToNearestStationTask.gcjLat,
driveToNearestStationTask.gcjLon
)
}
private fun updateStartAndEndStationPointByStatus(isGoingToStation: Boolean) {
@@ -245,28 +231,31 @@ class TaxiCurrentTaskFragment : BaseFragment(),
}
fun onCarTakeOrderStatusChanged() {
mViewModel.sendUiIntent(UnmannedIntent.StartOrEndTakeOrder)
mViewModel.sendUiIntent(TaskUiIntent.StartOrEndTakeOrder)
}
/**
* 根据任务状态计算剩余历程和时间
*/
private fun updateRemainDistanceAndTime(isVoicePlay: Boolean) {
//根据任务状态计算剩余历程和时间
if (mCurrentTaskWithOrder == null) return
if (mCurrentTaskWithOrder!!.endSite != null
&& mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.StartTask.code
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return
if (currentTaskWithOrder.endSite != null
&& currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code
) {
startNaviToStation(
isVoicePlay, mCurrentTaskWithOrder!!.endSite!!.gcjLat,
mCurrentTaskWithOrder!!.endSite!!.gcjLon
isVoicePlay, currentTaskWithOrder.endSite!!.gcjLat,
currentTaskWithOrder.endSite!!.gcjLon
)
return
}
if (mCurrentTaskWithOrder!!.startSite != null
&& mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.GetTask.code
if (currentTaskWithOrder.startSite != null
&& currentTaskWithOrder.currentStatus == TaskStatusEnum.GetTask.code
) { //演练任务和送驾任务
startNaviToStation(
isVoicePlay, mCurrentTaskWithOrder!!.startSite!!.gcjLat,
mCurrentTaskWithOrder!!.startSite!!.gcjLon
isVoicePlay, currentTaskWithOrder.startSite!!.gcjLat,
currentTaskWithOrder.startSite!!.gcjLon
)
}
}
@@ -274,7 +263,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
/**
* 更新当前任务和订单信息
*/
@SuppressLint("SetTextI18n", "UseCompatLoadingForDrawables")
@SuppressLint("SetTextI18n")
fun updateViewByCurrentTaskWithOrder(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
if (taskAndOrder == null) return
if ((taskAndOrder.endSite == null || taskAndOrder.currentStatus == TaskStatusEnum.CompleteTask.code)
@@ -308,7 +297,8 @@ class TaxiCurrentTaskFragment : BaseFragment(),
TaskTypeEnum.VirtualTask.code -> { //演练任务
cancelOrder.visibility = View.GONE
orderPhoneAndNum.visibility = if (order != null &&
currentStatus == TaskStatusEnum.CompleteTask.code) View.VISIBLE else View.GONE
currentStatus == TaskStatusEnum.CompleteTask.code
) View.VISIBLE else View.GONE
taskClickBtn.visibility = View.GONE
naviToStart.visibility = View.GONE
@@ -354,29 +344,28 @@ class TaxiCurrentTaskFragment : BaseFragment(),
}
}
}
updateMapMarkers()
updateMapMarkers(taskAndOrder)
updateRemainDistanceAndTime(false)
}
private fun updateMapMarkers() {
if (mCurrentTaskWithOrder != null && mCurrentTaskWithOrder!!.startSite != null
&& mCurrentTaskWithOrder!!.endSite != null
private fun updateMapMarkers(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
if (taskAndOrder != null && taskAndOrder!!.startSite != null
&& taskAndOrder!!.endSite != null
) {
when (mCurrentTaskWithOrder!!.currentStatus) {
when (taskAndOrder.currentStatus) {
TaskStatusEnum.GetTask.code -> {
setOrRemoveMapMaker(
true,
TAXI_START_MAP_MAKER,
mCurrentTaskWithOrder!!.startSite!!.wgs84Lat,
mCurrentTaskWithOrder!!.startSite!!.wgs84Lon,
taskAndOrder!!.startSite!!.wgs84Lat,
taskAndOrder!!.startSite!!.wgs84Lon,
R.raw.star_marker
)
setOrRemoveMapMaker(
true,
TAXI_END_MAP_MAKER,
mCurrentTaskWithOrder!!.endSite!!.wgs84Lat,
mCurrentTaskWithOrder!!.endSite!!.wgs84Lon,
taskAndOrder!!.endSite!!.wgs84Lat,
taskAndOrder!!.endSite!!.wgs84Lon,
R.raw.end_marker
)
}
@@ -385,15 +374,15 @@ class TaxiCurrentTaskFragment : BaseFragment(),
setOrRemoveMapMaker(
false,
TAXI_START_MAP_MAKER,
mCurrentTaskWithOrder!!.startSite!!.wgs84Lat,
mCurrentTaskWithOrder!!.startSite!!.wgs84Lon,
taskAndOrder!!.startSite!!.wgs84Lat,
taskAndOrder!!.startSite!!.wgs84Lon,
R.raw.star_marker
)
setOrRemoveMapMaker(
true,
TAXI_END_MAP_MAKER,
mCurrentTaskWithOrder!!.endSite!!.wgs84Lat,
mCurrentTaskWithOrder!!.endSite!!.wgs84Lon,
taskAndOrder!!.endSite!!.wgs84Lat,
taskAndOrder!!.endSite!!.wgs84Lon,
R.raw.end_marker
)
}
@@ -402,23 +391,23 @@ class TaxiCurrentTaskFragment : BaseFragment(),
setOrRemoveMapMaker(
false,
TAXI_START_MAP_MAKER,
mCurrentTaskWithOrder!!.startSite!!.wgs84Lat,
mCurrentTaskWithOrder!!.startSite!!.wgs84Lon,
taskAndOrder!!.startSite!!.wgs84Lat,
taskAndOrder!!.startSite!!.wgs84Lon,
R.raw.star_marker
)
setOrRemoveMapMaker(
false,
TAXI_END_MAP_MAKER,
mCurrentTaskWithOrder!!.endSite!!.wgs84Lat,
mCurrentTaskWithOrder!!.endSite!!.wgs84Lon,
taskAndOrder!!.endSite!!.wgs84Lat,
taskAndOrder!!.endSite!!.wgs84Lon,
R.raw.end_marker
)
}
}
} else {
d(
M_TAXI + TAG,
"CurrentTaskWithOrder == " + GsonUtil.jsonFromObject(mCurrentTaskWithOrder)
TAG,
"CurrentTaskWithOrder == " + GsonUtil.jsonFromObject(taskAndOrder)
)
}
}
@@ -430,12 +419,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
MainMoGoApplication.getApp().applicationContext,
R.drawable.task_order_type_btn_bg
)
orderPhoneAndNum.text = HtmlCompat.fromHtml(
"<font color=\"#FFFFFF\"> " + order.bookingUserPhone + "</font>" +
"<font color=\"#6473B2\"> | </font>" +
"<font color=\"#FFFFFF\">" + order.passengerSize + "" + "</font>",
HtmlCompat.FROM_HTML_MODE_LEGACY
)
orderPhoneAndNum.text = TaskUtils.getCurrentTaskPhoneNumAndPassengerCountHtml(order.bookingUserPhone, order.passengerSize)
startStationName.text = order.orderStartSite?.siteName
endStationName.text = order.orderEndSite?.siteName
@@ -481,7 +465,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
true
)
hideNaviBtns()
taskOtherInfo.text = TaskUtils.getWaitTimeHtml()
taskOtherInfo.text = TaskUtils.getCurrentTaskWaitTimeHtml()
}
TaxiOrderStatusEnum.OnTheWayToStart.code -> { //前往上车地点
@@ -530,14 +514,14 @@ class TaxiCurrentTaskFragment : BaseFragment(),
val mCurLatitude = getChassisLocationGCJ02().latitude
val mCurLongitude = getChassisLocationGCJ02().longitude
d(
SceneConstant.M_TAXI + TAG,
TAG,
"currentLatLng=$mCurLatitude $mCurLongitude"
)
val startNaviLatLng = NaviLatLng(mCurLatitude, mCurLongitude)
val endNaviLatLng = NaviLatLng(stationLat, stationLng)
AmapNaviToDestinationModel.getInstance(context).initAMapNavi(startNaviLatLng, endNaviLatLng)
AmapNaviToDestinationModel.getInstance(context).setVoiceIsMute(isVoicePlay)
AmapNaviToDestinationModel.getInstance(context).setOCHTaciNaviChangedCallback(this)
AmapNaviToDestinationModel.getInstance(context).setTaxiNaviChangedCallback(this)
}
/**
@@ -546,8 +530,8 @@ class TaxiCurrentTaskFragment : BaseFragment(),
* @param timeInSecond 秒
*/
fun updateCurrentTaskTripInfo(meters: Long, timeInSecond: Long) {
if (mCurrentTaskWithOrder == null) return
if (mCurrentTaskWithOrder!!.endSite == null && mDriveToNearestStationTask == null) return
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return
if (currentTaskWithOrder.endSite == null && currentTaskWithOrder == null) return
taskOtherInfo.text = TaskUtils.getCurrentTaskTripHtml(meters, timeInSecond)
}
@@ -557,14 +541,15 @@ class TaxiCurrentTaskFragment : BaseFragment(),
}
private fun startOrEndService() {
if (mCurrentTaskWithOrder == null || mCurrentTaskWithOrder!!.order == null) return
val order = mCurrentTaskWithOrder!!.order
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
if (currentTaskWithOrder?.order == null) return
val order = currentTaskWithOrder?.order
if (TaxiOrderStatusEnum.ArriveAtStart.code == order!!.orderStatus) { //到达乘客上车点,司机可跳过乘客屏认证
mViewModel.sendUiIntent(UnmannedIntent.JumpPassengerCheck)
mViewModel.sendUiIntent(TaskUiIntent.JumpPassengerCheck)
} else if (TaxiOrderStatusEnum.UserArriveAtStart.code == order.orderStatus) {
mViewModel.sendUiIntent(UnmannedIntent.StartTask)
mViewModel.sendUiIntent(TaskUiIntent.StartTask)
} else if (TaxiOrderStatusEnum.ArriveAtEnd.code == order.orderStatus) { //点击了完成服务,结束订单并更新订单信息
mViewModel.sendUiIntent(UnmannedIntent.JourneyCompleted)
mViewModel.sendUiIntent(TaskUiIntent.JourneyCompleted)
} else if (TaxiOrderStatusEnum.OnTheWayToEnd.code == order.orderStatus) { //前往目的地过程中可提前结束行程
//自驾中提示,接管后才能结束
if (getState()
@@ -587,7 +572,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
.build(requireContext())
closeOrderDialog!!.setClickListener(object : OCHCommitDialog.ClickListener {
override fun confirm() {
mViewModel.sendUiIntent(UnmannedIntent.CloseOrderByDriver)
mViewModel.sendUiIntent(TaskUiIntent.CloseOrderByDriver)
}
override fun cancel() {
@@ -599,21 +584,32 @@ class TaxiCurrentTaskFragment : BaseFragment(),
override fun onClick(v: View) {
if (v.id == taskClickBtn.id) {
d(M_TAXI + TAG, taskStatus.text.toString())
startOrEndService()
} else if (v.id == cancelOrder.id) {
if (mCurrentTaskWithOrder!!.order != null) {
activity?.also {
TaxiOrderCancelDialog(
it, mCurrentTaskWithOrder!!.order!!.orderStatus
) {type ->
mViewModel.sendUiIntent(UnmannedIntent.CancelOrder(type))
}.show()
if (!ClickUtils.isFastClick()) {
i(TAG, "view点击过快")
return
}
when (v.id) {
taskClickBtn.id -> {
d(TAG, taskStatus.text.toString())
startOrEndService()
}
cancelOrder.id -> {
val currentWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
if (currentWithOrder?.order != null) {
val order = currentWithOrder.order
activity?.also {
TaxiOrderCancelDialog(it, order!!.orderStatus) { type ->
mViewModel.sendUiIntent(TaskUiIntent.CancelOrder(type))
}.show()
}
}
}
} else if (v.id == naviToStart.id || v.id == naviToEnd.id) {
showNaviToEndStationFragment(true)
naviToStart.id,
naviToEnd.id -> {
showNaviToEndStationFragment(true)
}
}
}
@@ -626,34 +622,30 @@ class TaxiCurrentTaskFragment : BaseFragment(),
mTaxiFragment?.startNaviToEndStation(isShow)
}
@RequiresApi(Build.VERSION_CODES.N)
override fun onCurrentNaviDistAndTimeChanged(meters: Int, timeInSecond: Long) {
updateCurrentTaskTripInfo(meters.toLong(), timeInSecond)
}
override fun reInitNaviAmap(isPlay: Boolean, isRestart: Boolean) {
d(
SceneConstant.M_TAXI + TAG,
"isPlay = $isPlay, isRestart=$isRestart"
)
d(TAG, "isPlay = $isPlay, isRestart=$isRestart")
if (!isRestart) {
mTaxiFragment?.showAmapNaviToStationFragment(false)
return
}
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
UiThreadHandler.postDelayed({
updateRemainDistanceAndTime(false)
}, 2000)
UiThreadHandler.postDelayed({
if (mCurrentTaskWithOrder != null &&
mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.GetTask.code
if (currentTaskWithOrder?.currentStatus == TaskStatusEnum.GetTask.code
) {
if (naviToStart.visibility == View.GONE) {
naviToStart.visibility = View.VISIBLE
}
}
if (mCurrentTaskWithOrder != null &&
mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.StartTask.code
if (currentTaskWithOrder?.currentStatus == TaskStatusEnum.StartTask.code
) {
if (naviToEnd.visibility == View.GONE) {
naviToEnd.visibility = View.VISIBLE
@@ -663,15 +655,14 @@ class TaxiCurrentTaskFragment : BaseFragment(),
}
fun onNaviToEndStationByAmap(isShow: Boolean) {
if (mCurrentTaskWithOrder == null) return
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return
mTaxiFragment?.showAmapNaviToStationFragment(
if (mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.StartTask.code)
if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code)
isShow else true
)
updateRemainDistanceAndTime(
if (mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.StartTask.code)
if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code)
isShow else true
)
}

View File

@@ -26,7 +26,6 @@ import com.mogo.och.taxi.constant.TaxiUnmannedConst
import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager
import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager.cancelOrder
import com.mogo.och.taxi.ui.unmanned.TaskWithOrderUIState
import com.mogo.och.taxi.ui.unmanned.UnmannedIntent
import com.mogo.och.taxi.ui.unmanned.UnmannedState
import com.mogo.och.taxi.utils.TaxiTrajectoryManager
@@ -34,7 +33,7 @@ import com.mogo.och.taxi.utils.TaxiTrajectoryManager
* @author: wangmingjun
* @date: 2023/7/26
*/
class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(),
class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
ITaxiTaskWithOrderCallback, ITaxiCarServiceCallback {
private val TAG = SceneConstant.M_TAXI + "TaxiUnmannedViewModel"
@@ -50,31 +49,31 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(),
override fun handleIntent(intent: IUiIntent) {
when (intent) {
is UnmannedIntent.StartTaskWithOrderLooper -> { //开始轮询
is TaskUiIntent.StartTaskWithOrderLooper -> { //开始轮询
startOrStopCurrentTaskWithOrderLoop(true)
}
is UnmannedIntent.StartOrEndTakeOrder -> {//开始、暂停接单
is TaskUiIntent.StartOrEndTakeOrder -> {//开始、暂停接单
TaxiTaskModel.updateCarServingStatus()
}
is UnmannedIntent.JumpPassengerCheck -> { //手动点击跳过乘客验证
is TaskUiIntent.JumpPassengerCheck -> { //手动点击跳过乘客验证
jumpPassengerCheck()
}
is UnmannedIntent.JourneyCompleted -> { //点击服务完成
is TaskUiIntent.JourneyCompleted -> { //点击服务完成
journeyCompleted()
}
is UnmannedIntent.CloseOrderByDriver -> {
is TaskUiIntent.CloseOrderByDriver -> {
closeOrderByDriver()
}
is UnmannedIntent.CancelOrder -> {// 取消订单, 暂未加取消类型和原因
is TaskUiIntent.CancelOrder -> {// 取消订单, 暂未加取消类型和原因
cancelOrder(intent.type)
}
is UnmannedIntent.StartTask -> {
is TaskUiIntent.StartTask -> {
startTask()
}
}

View File

@@ -1,16 +1,19 @@
package com.mogo.och.taxi.ui.task
import android.annotation.SuppressLint
import android.graphics.Color
import android.graphics.drawable.GradientDrawable
import android.os.Bundle
import android.view.View
import androidx.core.text.HtmlCompat
import androidx.core.content.ContextCompat
import com.mogo.commons.mvp.BaseFragment
import com.mogo.eagle.core.function.main.MainMoGoApplication
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.och.taxi.R
import com.mogo.och.taxi.bean.OrderDetail
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean
import com.mogo.och.taxi.constant.TaskStatusEnum
import com.mogo.och.taxi.constant.TaskTypeEnum
import com.mogo.och.taxi.utils.TaskUtils
import kotlinx.android.synthetic.main.task_fragment_current.endStationName
import kotlinx.android.synthetic.main.task_fragment_current.mCurrentTaskLayout
import kotlinx.android.synthetic.main.task_fragment_current.naviToEnd
@@ -28,8 +31,7 @@ import kotlinx.android.synthetic.main.task_fragment_current.taskTypeTv
*/
class TaxiNextTaskFragment : BaseFragment() {
companion object {
const val TAG = "TaxiNextTaskFragment"
val TAG = SceneConstant.M_TAXI + javaClass.simpleName
fun newInstance(): TaxiNextTaskFragment {
val args = Bundle()
val fragment = TaxiNextTaskFragment()
@@ -47,36 +49,36 @@ class TaxiNextTaskFragment : BaseFragment() {
}
override fun initViews() {
showNoTaskView()
showNoNextTaskView()
}
fun onTaskDataChanged(model: QueryCurrentTaskRespBean.Result?) {
if (model?.order == null) {
showNoTaskView()
fun onTaskDataChanged(taskWithOrder: QueryCurrentTaskRespBean.Result?) {
if (taskWithOrder?.order == null) {
showNoNextTaskView()
return
}
if (model.taskType == TaskTypeEnum.VirtualTask.code) {
val order = model.order
if (taskWithOrder.taskType == TaskTypeEnum.VirtualTask.code &&
taskWithOrder.currentStatus != TaskStatusEnum.CompleteTask.code
) {
val order = taskWithOrder.order
updateTaskUI(order!!)
} else {
showNoTaskView()
showNoNextTaskView()
}
}
@SuppressLint("SetTextI18n")
private fun updateTaskUI(order: OrderDetail) {
showTaskView()
showNextTaskView()
taskOtherInfo.visibility = View.GONE
naviToStart.visibility = View.GONE
naviToEnd.visibility = View.GONE
orderPhoneAndNum.text = HtmlCompat.fromHtml(
"<font color=\"#FFFFFF\"> " + order.bookingUserPhone + "</font>" +
"<font color=\"#6473B2\"> | </font>" +
"<font color=\"#FFFFFF\">" + order.passengerSize + "" + "</font>",
HtmlCompat.FROM_HTML_MODE_LEGACY
)
orderPhoneAndNum.text =
TaskUtils.getNextTaskPhoneNumAndPassengerCountHtml(
order.bookingUserPhone,
order.passengerSize
)
order.orderStartSite?.let {
startStationName.text = it.siteName
@@ -86,7 +88,11 @@ class TaxiNextTaskFragment : BaseFragment() {
}
taskTypeTv.text = resources.getString(R.string.task_order)
taskTypeTv.background = resources.getDrawable(R.drawable.task_order_type_btn_bg, null)
taskTypeTv.background =
ContextCompat.getDrawable(
MainMoGoApplication.getApp().applicationContext,
R.drawable.task_order_type_btn_bg
)
updateTaskContainerBottomBtn(
getString(R.string.waiting_server),
@@ -110,12 +116,12 @@ class TaxiNextTaskFragment : BaseFragment() {
taskClickBtn.isClickable = isClickable
}
private fun showNoTaskView() {
private fun showNoNextTaskView() {
noTaskData.visibility = View.VISIBLE
mCurrentTaskLayout.visibility = View.GONE
}
private fun showTaskView() {
private fun showNextTaskView() {
noTaskData.visibility = View.GONE
mCurrentTaskLayout.visibility = View.VISIBLE
}

View File

@@ -1,30 +0,0 @@
package com.mogo.och.taxi.ui.unmanned
import com.mogo.och.taxi.base.IUiIntent
/**
* @author: wangmingjun
* @date: 2023/7/26
*/
sealed class UnmannedIntent: IUiIntent{
//开始接单 、 暂停接单
object StartOrEndTakeOrder : UnmannedIntent()
object StartTaskWithOrderLooper : UnmannedIntent()
//取消订单
class CancelOrder(val type: Int) : UnmannedIntent()
object StartTask: UnmannedIntent()
//订单服务完成
object JourneyCompleted: UnmannedIntent()
//跳过乘客验证
object JumpPassengerCheck : UnmannedIntent()
//司机端手动结束订单
object CloseOrderByDriver : UnmannedIntent()
}

View File

@@ -40,7 +40,7 @@ object TaskUtils {
return HtmlCompat.fromHtml(strHtml, HtmlCompat.FROM_HTML_MODE_LEGACY)
}
fun getWaitTimeHtml(): Spanned {
fun getCurrentTaskWaitTimeHtml(): Spanned {
val currentCale = DateTimeUtils.getCurrentDateTime()
val currentDay =
DateTimeUtil.formatCalendarToString(currentCale, DateTimeUtil.yyyy_MM_dd)
@@ -71,4 +71,22 @@ object TaskUtils {
+ "<font color=\"#CAD6FF\">,总用时 </font>" + "<font color=\"#FFFFFF\"> $duration </font>" + "<font color=\"#CAD6FF\"> 分钟</font>")
return HtmlCompat.fromHtml(strHtml, HtmlCompat.FROM_HTML_MODE_LEGACY)
}
fun getCurrentTaskPhoneNumAndPassengerCountHtml(phoneNum: String, passengerSize: Int): Spanned {
return HtmlCompat.fromHtml(
"<font color=\"#FFFFFF\"> " + phoneNum + "</font>" +
"<font color=\"#6473B2\"> | </font>" +
"<font color=\"#FFFFFF\">" + passengerSize + "" + "</font>",
HtmlCompat.FROM_HTML_MODE_LEGACY
)
}
fun getNextTaskPhoneNumAndPassengerCountHtml(phoneNum: String, passengerSize: Int): Spanned {
return HtmlCompat.fromHtml(
"<font color=\"#FFFFFF\"> " + phoneNum + "</font>" +
"<font color=\"#6473B2\"> | </font>" +
"<font color=\"#FFFFFF\">" + passengerSize + "" + "</font>",
HtmlCompat.FROM_HTML_MODE_LEGACY
)
}
}