[Taxi无人化] refactor: viewModel / Model 优化;
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package com.mogo.och.taxi.bean
|
||||
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
@@ -91,6 +92,34 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
/**
|
||||
* with order.orderStatus == OnTheWayToEnd
|
||||
*/
|
||||
fun isOrderOnTheWayToEnd(data: QueryCurrentTaskRespBean.Result?): Boolean {
|
||||
if (data == null) {
|
||||
return false
|
||||
}
|
||||
if (data.order == null) {
|
||||
return false
|
||||
}
|
||||
return data.order!!.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.code
|
||||
}
|
||||
|
||||
/**
|
||||
* with order.orderStatus == ArriveAtEnd
|
||||
*/
|
||||
fun isOrderArriveAtEnd(data: QueryCurrentTaskRespBean.Result?): Boolean {
|
||||
if (data == null) {
|
||||
return false
|
||||
}
|
||||
if (data.order == null) {
|
||||
return false
|
||||
}
|
||||
return data.order!!.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data class StartTaskReqBean(var sn: String, var lineId: Long)
|
||||
@@ -116,8 +145,10 @@ data class QueryCarOrderByNoRespBean(var data: Result) : BaseData() {
|
||||
)
|
||||
}
|
||||
|
||||
data class ContrailListRespBean(var data: MutableList<Result>?) //轨迹路线集合
|
||||
: BaseData() {
|
||||
/**
|
||||
* 轨迹路线
|
||||
*/
|
||||
data class TrajectoryListRespBean(var data: MutableList<Result>?) : BaseData() {
|
||||
data class Result(
|
||||
var lineId: Long, var lineName: String, var csvFileUrl: String, var csvFileMd5: String,
|
||||
var txtFileUrl: String, var txtFileMd5: String, var contrailSaveTime: Long,
|
||||
|
||||
@@ -13,7 +13,7 @@ import com.mogo.och.taxi.bean.*
|
||||
/**
|
||||
* Created by pangfan on 2021/8/19
|
||||
*/
|
||||
object CarServiceManager {
|
||||
object TaxiTaskWithOrderServiceManager {
|
||||
|
||||
private var mOCHTaxiServiceApi: UnmannedTaskServiceApi =
|
||||
MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(
|
||||
@@ -154,7 +154,7 @@ object CarServiceManager {
|
||||
callback: OchCommonServiceCallback<BaseData>?
|
||||
) {
|
||||
mOCHTaxiServiceApi.cancelOrder(
|
||||
data = CancelOrderReqBean(MoGoAiCloudClientConfig.getInstance().sn, orderNo,cancelType)
|
||||
data = CancelOrderReqBean(MoGoAiCloudClientConfig.getInstance().sn, orderNo, cancelType)
|
||||
).transformTry()
|
||||
.subscribe(OchCommonSubscribeImpl(context, callback, "cancelOrder"))
|
||||
}
|
||||
@@ -165,9 +165,10 @@ object CarServiceManager {
|
||||
@JvmStatic
|
||||
fun contrailList(
|
||||
context: Context, linIds: Array<Long>,
|
||||
callback: OchCommonServiceCallback<ContrailListRespBean>?
|
||||
callback: OchCommonServiceCallback<TrajectoryListRespBean>?
|
||||
) {
|
||||
mOCHTaxiServiceApi.contrailList(data = linIds
|
||||
mOCHTaxiServiceApi.contrailList(
|
||||
data = linIds
|
||||
).transformTry()
|
||||
.subscribe(OchCommonSubscribeImpl(context, callback, "contrailList"))
|
||||
}
|
||||
@@ -4,7 +4,7 @@ import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.och.taxi.bean.ArriveSiteReqBean
|
||||
import com.mogo.och.taxi.bean.CancelOrderReqBean
|
||||
import com.mogo.och.taxi.bean.ContrailListRespBean
|
||||
import com.mogo.och.taxi.bean.TrajectoryListRespBean
|
||||
import com.mogo.och.taxi.bean.JumpPassengerCheckReqBean
|
||||
import com.mogo.och.taxi.bean.OrderCompletedReqBean
|
||||
import com.mogo.och.taxi.bean.PrepareTaskReqBean
|
||||
@@ -128,7 +128,7 @@ interface UnmannedTaskServiceApi {
|
||||
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
@Header("ticket") ticket: String = MoGoAiCloudClientConfig.getInstance().token,
|
||||
@Body data: Array<Long>
|
||||
): Observable<ContrailListRespBean>
|
||||
): Observable<TrajectoryListRespBean>
|
||||
|
||||
/**
|
||||
* 司机手动点击跳过乘客验证
|
||||
|
||||
@@ -16,9 +16,9 @@ import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.provider.LoginService
|
||||
import com.mogo.och.taxi.R
|
||||
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean
|
||||
import com.mogo.och.taxi.model.TaxiModel
|
||||
import com.mogo.och.taxi.network.LoginBusImpl
|
||||
import com.mogo.och.taxi.ui.personal.TaxiPersonalDialogFragment
|
||||
import com.mogo.och.taxi.ui.task.TaxiTaskModel
|
||||
import com.mogo.och.taxi.ui.task.TaxiTaskTabFragment
|
||||
import com.mogo.och.taxi.utils.TPRouteDataTestUtils
|
||||
import kotlinx.android.synthetic.main.taxi_base_fragment.module_mogo_och_operation_status
|
||||
@@ -222,22 +222,22 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
|
||||
*/
|
||||
private fun initOrderDebugView() {
|
||||
findViewById<View>(R.id.test_bar_to_virtual)?.setOnClickListener {
|
||||
TaxiModel.setArriveAtUntruthStation()
|
||||
TaxiTaskModel.setArriveAtUntruthStation()
|
||||
}
|
||||
|
||||
findViewById<View>(R.id.test_bar_to_end)?.setOnClickListener {
|
||||
TaxiModel.setArriveAtEndStation()
|
||||
TaxiTaskModel.setArriveAtEndStation()
|
||||
}
|
||||
|
||||
findViewById<View>(R.id.test_bar_start_service_confirm)?.setOnClickListener {
|
||||
TaxiModel.toStartTask()
|
||||
TaxiTaskModel.toStartTask()
|
||||
}
|
||||
|
||||
findViewById<View>(R.id.test_bar_on_the_way_to_end)?.setOnClickListener {
|
||||
if (!isStarting) {
|
||||
mPresenter.startAutoPilot()
|
||||
}
|
||||
TaxiModel.setOnTheWayToEndStation()
|
||||
TaxiTaskModel.setOnTheWayToEndStation()
|
||||
}
|
||||
|
||||
findViewById<View>(R.id.test_bar_route)?.setOnClickListener { testRouteInfoUpload() }
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.mogo.och.taxi.constant.TaxiDriverRoleEnum;
|
||||
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.taxi.constant.TaxiUnmannedConst;
|
||||
import com.mogo.och.taxi.constant.TaxtServingStatusManager;
|
||||
import com.mogo.och.taxi.model.TaxiModel;
|
||||
import com.mogo.och.taxi.ui.task.TaxiTaskModel;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
@@ -37,7 +37,7 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
|
||||
|
||||
public TaxiPresenter(TaxiFragment view) {
|
||||
super(view);
|
||||
TaxiModel.INSTANCE.init(AbsMogoApplication.getApp());
|
||||
TaxiTaskModel.INSTANCE.init(AbsMogoApplication.getApp());
|
||||
OCHAdasAbilityManager.getInstance().init(AbsMogoApplication.getApp());
|
||||
initListeners();
|
||||
}
|
||||
@@ -45,22 +45,22 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
|
||||
@Override
|
||||
public void onDestroy(@NonNull LifecycleOwner owner) {
|
||||
releaseListeners();
|
||||
TaxiModel.INSTANCE.release();
|
||||
TaxiTaskModel.INSTANCE.release();
|
||||
super.onDestroy(owner);
|
||||
}
|
||||
|
||||
private void initListeners() {
|
||||
TaxiModel.INSTANCE.setADASStatusCallback(this);
|
||||
TaxiModel.INSTANCE.setControllerStatusCallback(this);
|
||||
TaxiModel.INSTANCE.setOrderStatusCallback(this);
|
||||
TaxiTaskModel.INSTANCE.setADASStatusCallback(this);
|
||||
TaxiTaskModel.INSTANCE.setControllerStatusCallback(this);
|
||||
TaxiTaskModel.INSTANCE.setOrderStatusCallback(this);
|
||||
}
|
||||
|
||||
private void releaseListeners() {
|
||||
TaxiModel.INSTANCE.setADASStatusCallback(null);
|
||||
TaxiModel.INSTANCE.setControllerStatusCallback(null);
|
||||
TaxiModel.INSTANCE.setOrderStatusCallback(null);
|
||||
TaxiTaskModel.INSTANCE.setADASStatusCallback(null);
|
||||
TaxiTaskModel.INSTANCE.setControllerStatusCallback(null);
|
||||
TaxiTaskModel.INSTANCE.setOrderStatusCallback(null);
|
||||
OCHAdasAbilityManager.getInstance().release();
|
||||
TaxiModel.INSTANCE.setMoGoAutopilotPlanningListener(null);
|
||||
TaxiTaskModel.INSTANCE.setMoGoAutopilotPlanningListener(null);
|
||||
}
|
||||
|
||||
private void runOnUIThread(Runnable executor) {
|
||||
@@ -78,22 +78,22 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
|
||||
* 开启自动驾驶 自驾模式
|
||||
*/
|
||||
public void startAutoPilot() {
|
||||
TaxiModel.INSTANCE.startAutoPilot();
|
||||
TaxiTaskModel.INSTANCE.startAutoPilot();
|
||||
}
|
||||
|
||||
// 获取当前订单状态
|
||||
public TaxiOrderStatusEnum getCurOrderStatus() {
|
||||
return TaxiModel.INSTANCE.getCurOrderStatus();
|
||||
return TaxiTaskModel.INSTANCE.getCurOrderStatus();
|
||||
}
|
||||
|
||||
// 登出
|
||||
public void logout() {
|
||||
TaxiModel.INSTANCE.logout();
|
||||
TaxiTaskModel.INSTANCE.logout();
|
||||
}
|
||||
|
||||
//导航去订单目的地
|
||||
public void startNaviToEndStation(boolean isShow) {
|
||||
TaxiModel.INSTANCE.startNaviToEndStation(isShow);
|
||||
TaxiTaskModel.INSTANCE.startNaviToEndStation(isShow);
|
||||
}
|
||||
|
||||
public void reportToEndDisAndTime(long lastSumLength, long duration) {//米/秒
|
||||
@@ -194,7 +194,7 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
|
||||
mView.updateOperationStatus(TaxtServingStatusManager.isOpeningOrderStatus(), finalRole);
|
||||
});
|
||||
|
||||
if (!TaxiModel.INSTANCE.checkCurrentTask()) {
|
||||
if (!TaxiTaskModel.INSTANCE.checkCurrentTaskCondition()) {
|
||||
mView.showDebugPanel();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import android.view.View
|
||||
import android.widget.LinearLayout
|
||||
import com.mogo.eagle.core.network.utils.GsonUtil
|
||||
import com.mogo.och.taxi.R
|
||||
import com.mogo.och.taxi.model.TaxiModel
|
||||
import com.mogo.och.taxi.ui.task.TaxiTaskModel
|
||||
import kotlinx.android.synthetic.main.taxi_debug_order.view.orderInfo
|
||||
import kotlinx.android.synthetic.main.taxi_debug_order.view.orderToStartLines
|
||||
import kotlinx.android.synthetic.main.taxi_debug_order.view.taskEndSite
|
||||
@@ -39,8 +39,8 @@ class DebugView @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
fun toggleOrderDebugView() {
|
||||
val data = TaxiModel.getCurTaskAndOrder()
|
||||
val curContrail = TaxiModel.getCurTaskContrail()
|
||||
val data = TaxiTaskModel.getCurTaskAndOrder()
|
||||
val curContrail = TaxiTaskModel.getCurrentTaskTrajectory()
|
||||
|
||||
visibility =
|
||||
if (visibility == View.VISIBLE)
|
||||
|
||||
@@ -14,7 +14,7 @@ import com.mogo.eagle.core.data.map.MogoLocation;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.och.taxi.callback.IOCHTaxiAutopilotPlanningCallback;
|
||||
import com.mogo.och.taxi.model.TaxiModel;
|
||||
import com.mogo.och.taxi.ui.task.TaxiTaskModel;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -30,7 +30,7 @@ public class RoutingNaviPresenter extends Presenter<TaxiRoutingNaviFragment> imp
|
||||
|
||||
public RoutingNaviPresenter(TaxiRoutingNaviFragment view) {
|
||||
super(view);
|
||||
TaxiModel.INSTANCE.init(AbsMogoApplication.getApp());
|
||||
TaxiTaskModel.INSTANCE.init(AbsMogoApplication.getApp());
|
||||
initListeners();
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ public class RoutingNaviPresenter extends Presenter<TaxiRoutingNaviFragment> imp
|
||||
}
|
||||
|
||||
private void initListeners() {
|
||||
TaxiModel.INSTANCE.setMoGoAutopilotPlanningListener(this);
|
||||
TaxiTaskModel.INSTANCE.setMoGoAutopilotPlanningListener(this);
|
||||
}
|
||||
|
||||
private void runOnUIThread( Runnable executor ) {
|
||||
|
||||
@@ -7,6 +7,7 @@ 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
|
||||
@@ -15,17 +16,15 @@ import com.mogo.commons.mvp.BaseFragment
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getState
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02
|
||||
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.scene.SceneConstant.Companion.M_TAXI
|
||||
import com.mogo.eagle.core.utilcode.util.DateTimeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
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.utils.NumberFormatUtil
|
||||
import com.mogo.och.common.module.wigets.OCHCommitDialog
|
||||
import com.mogo.och.taxi.R
|
||||
import com.mogo.och.taxi.bean.OrderDetail
|
||||
@@ -37,15 +36,16 @@ 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.TYPE_MARKER_TAXI_ORDER
|
||||
import com.mogo.och.taxi.model.TaxiModel
|
||||
import com.mogo.och.taxi.ui.base.TaxiFragment
|
||||
import com.mogo.och.taxi.ui.unmanned.TaskAndOrderUiState
|
||||
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
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.endPoint
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.endStationName
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.mBeingOrderLayout
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.mCurrentTaskLayout
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.naviToEnd
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.naviToStart
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.noTaskData
|
||||
@@ -58,9 +58,6 @@ import kotlinx.android.synthetic.main.task_fragment_current.taskStatus
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.taskTypeTv
|
||||
import kotlinx.android.synthetic.main.taxi_no_data_common_view.noOrderDataTv
|
||||
import kotlinx.coroutines.flow.map
|
||||
import java.util.Calendar
|
||||
import kotlin.math.ceil
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
@@ -93,7 +90,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
|
||||
override fun getTagName(): String {
|
||||
return "TaxiCurrentTaskFragment"
|
||||
return this.javaClass.simpleName
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
@@ -114,7 +111,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
/**
|
||||
* 是否有正在进行的订单,进行UI显示
|
||||
*
|
||||
* @param being
|
||||
* @param hasCurrentTask
|
||||
*/
|
||||
private fun initContainerView(hasCurrentTask: Boolean) {
|
||||
d(
|
||||
@@ -124,14 +121,14 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
try {
|
||||
if (hasCurrentTask) {
|
||||
noTaskData.visibility = View.GONE
|
||||
mBeingOrderLayout.visibility = View.VISIBLE
|
||||
mCurrentTaskLayout.visibility = View.VISIBLE
|
||||
} else {
|
||||
noTaskData.visibility = View.VISIBLE
|
||||
noOrderDataTv.text = "暂无进行中订单"
|
||||
mBeingOrderLayout.visibility = View.GONE
|
||||
mCurrentTaskLayout.visibility = View.GONE
|
||||
}
|
||||
} catch (e: NullPointerException) { //可能会出现订单信息已经轮询回来,但进行中页面控件还未初始化完成的情况
|
||||
TaxiModel.clearCurrentOCHOrder()
|
||||
TaxiTaskModel.clearCurrentOCHOrder()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,35 +153,35 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
|
||||
//监听返回的数据状态
|
||||
lifecycleScope.launchWhenStarted {
|
||||
mViewModel.uiStateFlow.map { it.taskAndOrderUiState }.collect { taskAndOrderUiState ->
|
||||
mViewModel.uiStateFlow.map { it.taskWithOrderUIState }.collect { taskAndOrderUiState ->
|
||||
d(TAG, "uiStateFlow-initViewModelObserver: $taskAndOrderUiState")
|
||||
when (taskAndOrderUiState) {
|
||||
is TaskAndOrderUiState.INIT -> {
|
||||
is TaskWithOrderUIState.Init -> {
|
||||
}
|
||||
|
||||
is TaskAndOrderUiState.TASKANDORDER -> {
|
||||
mDriveToNearestStationTask = taskAndOrderUiState.untruthTask
|
||||
mCurrentTaskWithOrder = taskAndOrderUiState.taskAndOrder
|
||||
is TaskWithOrderUIState.TaskDriveToNearestStationTask -> {
|
||||
mDriveToNearestStationTask = taskAndOrderUiState.driveToNearestStationTask
|
||||
if (taskAndOrderUiState.driveToNearestStationTask != null) {
|
||||
updateViewByDriveToNearestStationTask(taskAndOrderUiState.driveToNearestStationTask)
|
||||
} else {
|
||||
initContainerView(false)
|
||||
removeAllMapMarker()
|
||||
}
|
||||
}
|
||||
|
||||
if ((taskAndOrderUiState.untruthTask == null
|
||||
&& mCurrentTaskWithOrder != null
|
||||
&& mCurrentTaskWithOrder!!.endSite == null)
|
||||
|| mCurrentTaskWithOrder == null
|
||||
) {
|
||||
is TaskWithOrderUIState.TaskWithOrder -> {
|
||||
mCurrentTaskWithOrder = taskAndOrderUiState.taskWithOrder
|
||||
|
||||
if (mCurrentTaskWithOrder == null) {
|
||||
initContainerView(false)
|
||||
removeAllMapMarker()
|
||||
return@collect
|
||||
}
|
||||
|
||||
if (taskAndOrderUiState.untruthTask != null) {
|
||||
updateDriveToNearestStationTaskView(taskAndOrderUiState.untruthTask)
|
||||
} else {
|
||||
updateNextTaskFragment(taskAndOrderUiState.taskAndOrder)
|
||||
updateCurrentTaskAndOrderStatusChanged(taskAndOrderUiState.taskAndOrder)
|
||||
}
|
||||
updateNextTaskFragment(taskAndOrderUiState.taskWithOrder)
|
||||
updateViewByCurrentTaskWithOrder(taskAndOrderUiState.taskWithOrder)
|
||||
}
|
||||
|
||||
is TaskAndOrderUiState.UPDATEORDERMILEANDDUR -> {
|
||||
is TaskWithOrderUIState.UpdateTaskTripInfo -> {
|
||||
taskOtherInfo.text =
|
||||
TaskUtils.getCurrentTaskTotalAndDurationHtml(
|
||||
taskAndOrderUiState.mileage,
|
||||
@@ -196,10 +193,10 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateDriveToNearestStationTaskView(driveToNearestStationTask: StartServiceRespBean.Result?) {
|
||||
private fun updateViewByDriveToNearestStationTask(driveToNearestStationTask: StartServiceRespBean.Result?) {
|
||||
if (driveToNearestStationTask == null) return
|
||||
initContainerView(true)
|
||||
// DriverToNearestStationTask 更新
|
||||
// DriverToNearestStationTask 任务更新
|
||||
taskStatus.visibility = View.VISIBLE
|
||||
taskTypeTv.visibility = View.GONE
|
||||
cancelOrder.visibility = View.GONE
|
||||
@@ -242,8 +239,8 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
}
|
||||
|
||||
fun onOperationStatusChanged() {
|
||||
mViewModel.sendUiIntent(UnmannedIntent.StartOrPauseReceivingOrder)
|
||||
fun onCarTakeOrderStatusChanged() {
|
||||
mViewModel.sendUiIntent(UnmannedIntent.StartOrPauseTakeOrder)
|
||||
}
|
||||
|
||||
private fun updateRemainDistanceAndTime(isVoicePlay: Boolean) {
|
||||
@@ -270,10 +267,10 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务和订单信息
|
||||
* 更新当前任务和订单信息
|
||||
*/
|
||||
@SuppressLint("SetTextI18n", "UseCompatLoadingForDrawables")
|
||||
fun updateCurrentTaskAndOrderStatusChanged(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
|
||||
fun updateViewByCurrentTaskWithOrder(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
|
||||
if (taskAndOrder == null) return
|
||||
if ((taskAndOrder.endSite == null || taskAndOrder.currentStatus == TaskStatusEnum.CompleteTask.code)
|
||||
&& taskAndOrder.order == null
|
||||
@@ -291,15 +288,39 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
* 当前任务是接驾任务,显示订单状态+运营单 订单显示在进行中, 任务不再显示
|
||||
*/
|
||||
val taskType = taskAndOrder.taskType // 任务类型
|
||||
val order = taskAndOrder.order // 订单
|
||||
val startSite = taskAndOrder.startSite //进行的任务
|
||||
val endSite = taskAndOrder.endSite //进行的任务
|
||||
val currentStatus = taskAndOrder.currentStatus // 任务的状态
|
||||
|
||||
updateUIShowStatus(taskType, currentStatus, order)
|
||||
val order = taskAndOrder.order // 订单信息
|
||||
val startSite = taskAndOrder.startSite // 起点
|
||||
val endSite = taskAndOrder.endSite // 终点
|
||||
val currentStatus = taskAndOrder.currentStatus // 任务的状态 0:空闲 1:获取任务 2:开始任务 3:到达目的地
|
||||
|
||||
when (taskType) {
|
||||
TaskTypeEnum.None.code -> {
|
||||
if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code) {
|
||||
handleOrderView(order)
|
||||
}
|
||||
}
|
||||
|
||||
TaskTypeEnum.VirtualTask.code -> { //演练任务
|
||||
cancelOrder.visibility = View.GONE
|
||||
orderPhoneAndNum.visibility = View.GONE
|
||||
taskClickBtn.visibility = View.GONE
|
||||
|
||||
naviToStart.visibility = View.GONE
|
||||
taskTypeTv.visibility = View.VISIBLE
|
||||
naviToEnd.visibility =
|
||||
if (currentStatus >= TaskStatusEnum.StartTask.code) View.VISIBLE else View.GONE
|
||||
taskOtherInfo.visibility =
|
||||
if (currentStatus == TaskStatusEnum.GetTask.code) View.GONE else View.VISIBLE
|
||||
}
|
||||
|
||||
TaskTypeEnum.ToOrderEndTask.code, TaskTypeEnum.ToOrderStartTask.code -> {// 接驾任务 或 送驾任务
|
||||
order.also {
|
||||
handleOrderView(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
when (taskType) {
|
||||
TaskTypeEnum.VirtualTask.code -> {// 演练任务
|
||||
if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code) {
|
||||
updateOrderUI(order)
|
||||
@@ -329,7 +350,6 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
|
||||
updateMapMarkers()
|
||||
|
||||
updateRemainDistanceAndTime(false)
|
||||
}
|
||||
|
||||
@@ -392,14 +412,18 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
} else {
|
||||
d(
|
||||
M_TAXI + TAG,
|
||||
"CurrentTaskAndOrder == " + GsonUtil.jsonFromObject(mCurrentTaskWithOrder)
|
||||
"CurrentTaskWithOrder == " + GsonUtil.jsonFromObject(mCurrentTaskWithOrder)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateOrderUI(order: OrderDetail) {
|
||||
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
|
||||
)
|
||||
orderPhoneAndNum.text = HtmlCompat.fromHtml(
|
||||
"<font color=\"#FFFFFF\"> " + order.bookingUserPhone + "</font>" +
|
||||
"<font color=\"#6473B2\"> | </font>" +
|
||||
@@ -412,24 +436,25 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
when (order.orderStatus) {
|
||||
TaxiOrderStatusEnum.None.code -> { //无
|
||||
initContainerView(false)
|
||||
removeAllMapMarker()
|
||||
}
|
||||
|
||||
TaxiOrderStatusEnum.ArriveAtEnd.code -> { //到达目的地
|
||||
taskStatus.text = resources.getString(R.string.task_start_end_site)
|
||||
updateStartAndEndStationPointByStatus(true)
|
||||
updateOrderBottomBtn(
|
||||
updateTaskContainerBottomBtn(
|
||||
getString(R.string.module_och_taxi_order_server_end),
|
||||
Color.parseColor("#FFFFFF"),
|
||||
Color.parseColor("#FF1D5EF3"),
|
||||
true
|
||||
)
|
||||
hideNavi()
|
||||
hideNaviBtns()
|
||||
}
|
||||
|
||||
TaxiOrderStatusEnum.OnTheWayToEnd.code -> { //送驾中
|
||||
taskStatus.text = resources.getString(R.string.task_start_end_site)
|
||||
updateStartAndEndStationPointByStatus(true)
|
||||
updateOrderBottomBtn(
|
||||
updateTaskContainerBottomBtn(
|
||||
getString(R.string.module_och_taxi_order_close),
|
||||
Color.parseColor("#FFFFFF"),
|
||||
Color.parseColor("#FF1D5EF3"),
|
||||
@@ -438,10 +463,10 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
|
||||
TaxiOrderStatusEnum.UserArriveAtStart.code, TaxiOrderStatusEnum.ArriveAtStart.code -> {
|
||||
//乘客到达上车点,验证成功 ; 到达乘客上车点
|
||||
updateStartAndEndStationPointByStatus(false)
|
||||
//乘客到达上车点, 验证成功 ; 到达乘客上车点
|
||||
taskStatus.text = resources.getString(R.string.arrived_start_site)
|
||||
updateOrderBottomBtn(
|
||||
updateStartAndEndStationPointByStatus(false)
|
||||
updateTaskContainerBottomBtn(
|
||||
if (order.orderStatus == TaxiOrderStatusEnum.UserArriveAtStart.code)
|
||||
getString(R.string.module_och_taxi_order_server_start)
|
||||
else getString(R.string.module_och_taxi_order_server_start_wait_check),
|
||||
@@ -449,14 +474,14 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
Color.parseColor("#FF1D5EF3"),
|
||||
true
|
||||
)
|
||||
updateOtherInfo()
|
||||
hideNavi()
|
||||
hideNaviBtns()
|
||||
taskOtherInfo.text = TaskUtils.getWaitTimeHtml()
|
||||
}
|
||||
|
||||
TaxiOrderStatusEnum.OnTheWayToStart.code -> { //前往上车地点
|
||||
taskStatus.text = resources.getString(R.string.task_start_start_site)
|
||||
updateStartAndEndStationPointByStatus(false)
|
||||
updateOrderBottomBtn(
|
||||
updateTaskContainerBottomBtn(
|
||||
getString(R.string.module_och_taxi_order_server_start),
|
||||
Color.parseColor("#4DFFFFFF"),
|
||||
Color.parseColor("#4D1D5EF3"),
|
||||
@@ -466,60 +491,6 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateOtherInfo() {
|
||||
val currentCale = DateTimeUtils.getCurrentDateTime()
|
||||
val currentDay =
|
||||
DateTimeUtil.formatCalendarToString(currentCale, DateTimeUtil.yyyy_MM_dd)
|
||||
|
||||
currentCale.add(Calendar.MINUTE, 10)
|
||||
val strHtml13: String = if (currentDay == DateTimeUtil.formatCalendarToString(
|
||||
currentCale,
|
||||
DateTimeUtil.yyyy_MM_dd
|
||||
)
|
||||
) {
|
||||
("<font color=\"#CAD6FF\">免费等待至 </font>"
|
||||
+ "<b><font color=\"#FFFFFF\"><big>" + DateTimeUtil.formatCalendarToString(
|
||||
currentCale,
|
||||
DateTimeUtil.HH_mm
|
||||
) + "</big></b></font>")
|
||||
} else {
|
||||
("<font color=\"#CAD6FF\">免费等待至</font>"
|
||||
+ "<font color=\"#FFFFFF\"><big>" + DateTimeUtil.formatCalendarToString(
|
||||
currentCale,
|
||||
DateTimeUtil.MM_dd_HH_mm
|
||||
) + "</big></font>")
|
||||
}
|
||||
taskOtherInfo.text = HtmlCompat.fromHtml(strHtml13, HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
}
|
||||
|
||||
private fun updateUIShowStatus(taskType: Int, currentStatus: Int, order: OrderDetail?) {
|
||||
when (taskType) {
|
||||
TaskTypeEnum.None.code -> {
|
||||
if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code) {
|
||||
handleOrderView(order)
|
||||
}
|
||||
}
|
||||
|
||||
TaskTypeEnum.VirtualTask.code -> { //演练任务
|
||||
cancelOrder.visibility = View.GONE
|
||||
orderPhoneAndNum.visibility = View.GONE
|
||||
taskClickBtn.visibility = View.GONE
|
||||
// currentStatus 0:空闲 1:获取任务 2:开始任务 3:到达目的地
|
||||
naviToStart.visibility = View.GONE
|
||||
taskTypeTv.visibility = View.VISIBLE
|
||||
naviToEnd.visibility =
|
||||
if (currentStatus >= TaskStatusEnum.StartTask.code) View.VISIBLE else View.GONE
|
||||
taskOtherInfo.visibility =
|
||||
if (currentStatus == TaskStatusEnum.GetTask.code) View.GONE else View.VISIBLE
|
||||
}
|
||||
|
||||
TaskTypeEnum.ToOrderEndTask.code, TaskTypeEnum.ToOrderStartTask.code -> {// 运营单(接驾任务、送驾任务)
|
||||
if (order == null) return
|
||||
handleOrderView(order)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleOrderView(order: OrderDetail?) {
|
||||
if (order == null) return
|
||||
cancelOrder.visibility = View.VISIBLE
|
||||
@@ -540,13 +511,12 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
|
||||
|
||||
private fun hideNavi() {
|
||||
private fun hideNaviBtns() {
|
||||
naviToStart.visibility = View.GONE
|
||||
naviToEnd.visibility = View.GONE
|
||||
AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi()
|
||||
mTaxiFragment?.showAmapNaviToStationFragment(false)
|
||||
mTaxiFragment?.showRoutingToStationFragment(false)
|
||||
requireParentFragment()
|
||||
}
|
||||
|
||||
private fun startNaviToStation(isVoicePlay: Boolean, stationLat: Double, stationLng: Double) {
|
||||
@@ -566,40 +536,18 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
|
||||
/**
|
||||
* 剩余里程和剩余时间
|
||||
* @param meters m
|
||||
* @param meters 米
|
||||
* @param timeInSecond 秒
|
||||
*/
|
||||
fun updateDistanceAndTime(meters: Long, timeInSecond: Long) {
|
||||
// CallerLogger.INSTANCE.d(M_TAXI + TAG,"meters = "+meters+"timeInSecond ="+timeInSecond);
|
||||
fun updateCurrentTaskTripInfo(meters: Long, timeInSecond: Long) {
|
||||
if (mCurrentTaskWithOrder == null) return
|
||||
if (mCurrentTaskWithOrder!!.endSite == null && mDriveToNearestStationTask == null) return
|
||||
|
||||
var dis = "0"
|
||||
var disUnit = "公里"
|
||||
if (meters > 0) {
|
||||
if (meters / 1000 < 1) {
|
||||
disUnit = "米"
|
||||
dis = meters.toFloat().roundToInt().toString()
|
||||
} else {
|
||||
disUnit = "公里"
|
||||
dis = NumberFormatUtil.formatLong(meters.toDouble() / 1000)
|
||||
}
|
||||
}
|
||||
val min = ceil(timeInSecond.toDouble() / 60f).toInt()
|
||||
val strHtml2 =
|
||||
("<font color=\"#CAD6FF\">里程 </font>" + "<b><font color=\"#FFFFFF\">" + dis + "</font></b>" + "<font color=\"#CAD6FF\"> " + disUnit + "</font>"
|
||||
+ "<font color=\"#CAD6FF\">,剩余 </font>" + "<b><font color=\"#FFFFFF\">" + min + "</font></b>" + "<font color=\"#CAD6FF\"> 分钟</font>")
|
||||
|
||||
taskOtherInfo.text = HtmlCompat.fromHtml(strHtml2, HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
taskOtherInfo.text = TaskUtils.getCurrentTaskTripHtml(meters, timeInSecond)
|
||||
}
|
||||
|
||||
// private fun speekVoice200mTipsOnce() {
|
||||
// showNotice(resources.getString(R.string.module_och_taxi_order_arrive_end_200m_tip))
|
||||
// }
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi()
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
private fun startOrEndService() {
|
||||
@@ -675,7 +623,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
override fun onCurrentNaviDistAndTimeChanged(meters: Int, timeInSecond: Long) {
|
||||
updateDistanceAndTime(meters.toLong(), timeInSecond)
|
||||
updateCurrentTaskTripInfo(meters.toLong(), timeInSecond)
|
||||
}
|
||||
|
||||
override fun reInitNaviAmap(isPlay: Boolean, isRestart: Boolean) {
|
||||
@@ -708,7 +656,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}, 3000)
|
||||
}
|
||||
|
||||
fun onNaviToEndAmap(isShow: Boolean) {
|
||||
fun onNaviToEndStationByAmap(isShow: Boolean) {
|
||||
if (mCurrentTaskWithOrder == null) return
|
||||
|
||||
mTaxiFragment?.showAmapNaviToStationFragment(
|
||||
@@ -743,7 +691,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
MapMakerManager.removeAllMapMarkerByOwner(TYPE_MARKER_TAXI_ORDER)
|
||||
}
|
||||
|
||||
private fun updateOrderBottomBtn(
|
||||
private fun updateTaskContainerBottomBtn(
|
||||
txt: String?,
|
||||
txtColorId: Int,
|
||||
bgColorId: Int,
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.mogo.och.common.module.voice.VoiceNotice
|
||||
import com.mogo.och.taxi.R
|
||||
import com.mogo.och.taxi.base.BaseViewModel
|
||||
import com.mogo.och.taxi.base.IUiIntent
|
||||
import com.mogo.och.taxi.bean.ContrailListRespBean
|
||||
import com.mogo.och.taxi.bean.TrajectoryListRespBean
|
||||
import com.mogo.och.taxi.bean.PrepareTaskRespBean
|
||||
import com.mogo.och.taxi.bean.QueryCarOrderByNoRespBean
|
||||
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean
|
||||
@@ -29,13 +29,12 @@ 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.constant.TaxtServingStatusManager
|
||||
import com.mogo.och.taxi.constant.TaxtServingStatusManager.isOpeningOrderStatus
|
||||
import com.mogo.och.taxi.model.TaxiModel
|
||||
import com.mogo.och.taxi.network.CarServiceManager
|
||||
import com.mogo.och.taxi.network.CarServiceManager.cancelOrder
|
||||
import com.mogo.och.taxi.network.CarServiceManager.contrailList
|
||||
import com.mogo.och.taxi.network.CarServiceManager.queryCarOrderByOrderNo
|
||||
import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager
|
||||
import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager.cancelOrder
|
||||
import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager.contrailList
|
||||
import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager.queryCarOrderByOrderNo
|
||||
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.ui.unmanned.UnmannedState
|
||||
@@ -49,28 +48,27 @@ import java.util.concurrent.TimeUnit
|
||||
* @author: wangmingjun
|
||||
* @date: 2023/7/26
|
||||
*/
|
||||
class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>() {
|
||||
|
||||
private var mInAndWaitServiceDisposable: Disposable? = null //进行中、待服务订单列表轮询
|
||||
|
||||
private var mCurrentTaskAndOrder: QueryCurrentTaskRespBean.Result? = null
|
||||
private val TAG = "TaxiUnmannedViewModel"
|
||||
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
private var mContext : Context = AbsMogoApplication.getApp().applicationContext
|
||||
private var mContext: Context = AbsMogoApplication.getApp().applicationContext
|
||||
|
||||
override fun initUiState(): UnmannedState {
|
||||
return UnmannedState(TaskWithOrderUIState.Init)
|
||||
}
|
||||
|
||||
override fun handleIntent(intent: IUiIntent) {
|
||||
when(intent) {
|
||||
|
||||
when (intent) {
|
||||
is UnmannedIntent.StartTaskOrOrderLooper -> { //开始轮询
|
||||
startOrStopOrderLoop(true)
|
||||
}
|
||||
|
||||
is UnmannedIntent.StartOrPauseTakeOrder -> {//开始、暂停接单
|
||||
updateCarStatus()
|
||||
updateCarStatus()
|
||||
}
|
||||
|
||||
is UnmannedIntent.JumpPassengerCheckDone -> { //手动点击跳过乘客验证
|
||||
@@ -82,9 +80,9 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
}
|
||||
|
||||
is UnmannedIntent.CloseOrderByDriver -> {
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null){
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null) {
|
||||
val site = mCurrentTaskAndOrder!!.order!!.orderEndSite
|
||||
TaxiModel.arriveSite(site!!.siteId, true)
|
||||
TaxiTaskModel.submitArriveSite(site!!.siteId, true)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,15 +91,15 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
}
|
||||
|
||||
is UnmannedIntent.StartTask -> {
|
||||
TaxiModel.toStartTask()
|
||||
TaxiTaskModel.toStartTask()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleCancelOrder(cancelType: Int) {
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null){
|
||||
cancelOrder(mContext, mCurrentTaskAndOrder!!.order!!.orderNo,cancelType,
|
||||
object : OchCommonServiceCallback<BaseData>{
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null) {
|
||||
cancelOrder(mContext, mCurrentTaskAndOrder!!.order!!.orderNo, cancelType,
|
||||
object : OchCommonServiceCallback<BaseData> {
|
||||
override fun onSuccess(data: BaseData?) {
|
||||
d(SceneConstant.M_TAXI + TAG, "handleCancelOrder() = onSuccess")
|
||||
}
|
||||
@@ -119,24 +117,25 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
*/
|
||||
private fun updateCarStatus() {
|
||||
if (!isLogin()) {
|
||||
TaxiModel.loginService!!.queryLoginStatusByNet()
|
||||
TaxiTaskModel.loginService!!.queryLoginStatusByNet()
|
||||
return
|
||||
}
|
||||
if (isOpeningOrderStatus()){//接单状态下,去结束
|
||||
CarServiceManager.endService(mContext,
|
||||
if (isOpeningOrderStatus()) {//接单状态下,去结束
|
||||
TaxiTaskWithOrderServiceManager.endService(mContext,
|
||||
object : OchCommonServiceCallback<BaseData> {
|
||||
override fun onSuccess(data: BaseData?) {
|
||||
TaxiModel.loginService!!.queryLoginStatusByNet()
|
||||
TaxiTaskModel.loginService!!.queryLoginStatusByNet()
|
||||
//需要将虚拟任务停掉, 虚拟任务会再开始接单后获取新的
|
||||
d(TAG, "set mUntruthSiteTask null")
|
||||
updateUntruthTaskUI(null)
|
||||
updateDriveToNearestStationTaskUI(null)
|
||||
updateUntruthTask(null)
|
||||
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.endSite != null
|
||||
&& mCurrentTaskAndOrder!!.startSite != null
|
||||
&& mCurrentTaskAndOrder!!.currentStatus < TaskStatusEnum.CompleteTask.code){
|
||||
&& mCurrentTaskAndOrder!!.startSite != null
|
||||
&& mCurrentTaskAndOrder!!.currentStatus < TaskStatusEnum.CompleteTask.code
|
||||
) {
|
||||
VoiceNotice.showNotice("暂停接单啦!要完成当前订单哦")
|
||||
}else{
|
||||
} else {
|
||||
VoiceNotice.showNotice("暂停接单啦")
|
||||
}
|
||||
|
||||
@@ -156,34 +155,37 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
|
||||
})
|
||||
|
||||
}else{//暂停接单状态下,去接单
|
||||
CarServiceManager.startService(mContext,
|
||||
} 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
|
||||
TaxiModel.loginService!!.queryLoginStatusByNet()
|
||||
TaxiTaskModel.loginService!!.queryLoginStatusByNet()
|
||||
VoiceNotice.showNotice("开始接单啦")
|
||||
d(TAG, "data.data="+GsonUtil.jsonFromObject(data.data))
|
||||
d(TAG, "data.data=" + GsonUtil.jsonFromObject(data.data))
|
||||
if (mCurrentTaskAndOrder == null) return
|
||||
if (mCurrentTaskAndOrder!!.endSite != null){
|
||||
if (mCurrentTaskAndOrder!!.endSite != null) {
|
||||
if (mCurrentTaskAndOrder!!.currentStatus == TaskStatusEnum.CompleteTask.code
|
||||
&& mCurrentTaskAndOrder!!.order != null){ //有任务, 状态为3, 且有订单
|
||||
&& mCurrentTaskAndOrder!!.order != null
|
||||
) { //有任务, 状态为3, 且有订单
|
||||
return
|
||||
}else if (mCurrentTaskAndOrder!!.currentStatus < TaskStatusEnum.CompleteTask.code){
|
||||
} else if (mCurrentTaskAndOrder!!.currentStatus < TaskStatusEnum.CompleteTask.code) {
|
||||
//有任务, 并且未执行完成
|
||||
return
|
||||
}
|
||||
}
|
||||
updateUntruthTaskUI(data.data)
|
||||
updateDriveToNearestStationTaskUI(data.data)
|
||||
updateUntruthTask(data.data)
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
ToastUtilsOch.showWithCodeMessage(code,
|
||||
ToastUtilsOch.showWithCodeMessage(
|
||||
code,
|
||||
"$msg curLatitude = ${CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().latitude}" +
|
||||
" curLongitude = ${CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().longitude}")
|
||||
" curLongitude = ${CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().longitude}"
|
||||
)
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
@@ -193,30 +195,31 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
ToastUtils.showShort(mContext.getString(R.string.request_error_tip))
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
private fun journeyCompleted() {
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null){
|
||||
CarServiceManager.orderCompleted(AbsMogoApplication.getApp().applicationContext,
|
||||
mCurrentTaskAndOrder!!.order!!.orderNo,object : OchCommonServiceCallback<BaseData>{
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null) {
|
||||
TaxiTaskWithOrderServiceManager.orderCompleted(AbsMogoApplication.getApp().applicationContext,
|
||||
mCurrentTaskAndOrder!!.order!!.orderNo,
|
||||
object : OchCommonServiceCallback<BaseData> {
|
||||
override fun onSuccess(data: BaseData?) {
|
||||
d(SceneConstant.M_TAXI + TAG, "orderCompleted() = onSuccess")
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
d(SceneConstant.M_TAXI + TAG, "orderCompleted() $code $msg")
|
||||
d(SceneConstant.M_TAXI + TAG, "orderCompleted() $code $msg")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
private fun jumpPassengerCheckDone() {
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null){
|
||||
CarServiceManager.jumpPassengerCheck(AbsMogoApplication.getApp().applicationContext,
|
||||
mCurrentTaskAndOrder!!.order!!.orderNo,object : OchCommonServiceCallback<BaseData>{
|
||||
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")
|
||||
}
|
||||
@@ -229,7 +232,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
}
|
||||
|
||||
private fun updateUntruthTask(result: StartServiceRespBean.Result?) {
|
||||
TaxiModel.updateUntruthTask(result)
|
||||
TaxiTaskModel.updateUntruthTask(result)
|
||||
}
|
||||
|
||||
private fun updateTaskAndOrderUi() {
|
||||
@@ -237,29 +240,29 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
|
||||
sendUiState {
|
||||
copy(
|
||||
taskWithOrderUIState = TaskWithOrderUIState.TaskWithOrder(mCurrentTaskAndOrder,
|
||||
TaxiModel.getCurUntruthTask()
|
||||
taskWithOrderUIState = TaskWithOrderUIState.TaskWithOrder(
|
||||
mCurrentTaskAndOrder
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateUntruthTaskUI(untruthTask: StartServiceRespBean.Result?) {
|
||||
d(TAG, "queryCurrentTaskOnce = updateTaskAndOrderUi")
|
||||
|
||||
private fun updateDriveToNearestStationTaskUI(driveToNearestStationTask: StartServiceRespBean.Result?) {
|
||||
d(TAG, "updateDriveToNearestStationTaskUI = ${driveToNearestStationTask?.toString()}")
|
||||
sendUiState {
|
||||
copy(
|
||||
taskWithOrderUIState = TaskWithOrderUIState.TaskWithOrder(mCurrentTaskAndOrder,
|
||||
untruthTask)
|
||||
taskWithOrderUIState = TaskWithOrderUIState.TaskDriveToNearestStationTask(
|
||||
driveToNearestStationTask
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateNoTaskAndOrderUi() {
|
||||
private fun updateNoTaskWithOrderUI() {
|
||||
sendUiState {
|
||||
copy(
|
||||
taskWithOrderUIState = TaskWithOrderUIState.TaskWithOrder(null,
|
||||
TaxiModel.getCurUntruthTask()
|
||||
taskWithOrderUIState = TaskWithOrderUIState.TaskWithOrder(
|
||||
null,
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -274,9 +277,9 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
}
|
||||
}
|
||||
|
||||
private fun queryCurrentTaskOnce(){
|
||||
private fun queryCurrentTaskOnce() {
|
||||
if (!LoginStatusManager.isLogin()) return // 未登陆则不去查询
|
||||
CarServiceManager.queryCurrentTask(AbsMogoApplication.getApp().applicationContext,
|
||||
TaxiTaskWithOrderServiceManager.queryCurrentTask(AbsMogoApplication.getApp().applicationContext,
|
||||
object : OchCommonServiceCallback<QueryCurrentTaskRespBean> {
|
||||
override fun onSuccess(data: QueryCurrentTaskRespBean?) {
|
||||
if (data === null) return
|
||||
@@ -287,69 +290,80 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
|
||||
d(TAG, "queryCurrentTaskOnce = result = " + GsonUtil.jsonFromObject(result))
|
||||
|
||||
d(TAG, "queryCurrentTaskOnce = mCurrentTaskAndOrder = " + GsonUtil.jsonFromObject(mCurrentTaskAndOrder))
|
||||
d(
|
||||
TAG,
|
||||
"queryCurrentTaskOnce = mCurrentTaskAndOrder = " + GsonUtil.jsonFromObject(
|
||||
mCurrentTaskAndOrder
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order!= null &&
|
||||
result != null && result.order == null) {
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null &&
|
||||
result != null && result.order == null
|
||||
) {
|
||||
//本地根据订单 orderNo 去查询下(乘客取消订单)
|
||||
d(TAG, "queryCurrentTaskOnce1 = result order is empty, query order by orderNo!")
|
||||
d(
|
||||
TAG,
|
||||
"queryCurrentTaskOnce1 = result order is empty, query order by orderNo!"
|
||||
)
|
||||
queryCurrentOrderStatusByNo(mCurrentTaskAndOrder!!.order!!.orderNo)
|
||||
return
|
||||
}
|
||||
|
||||
//订单或者伪任务更新, 都去刷新下界面
|
||||
if (mCurrentTaskAndOrder == null || !mCurrentTaskAndOrder!!.equals(result)){
|
||||
d(TAG, "queryCurrentTaskOnce1 = mCurrentTaskAndOrder update " )
|
||||
if (mCurrentTaskAndOrder == null || !mCurrentTaskAndOrder!!.equals(result)) {
|
||||
d(TAG, "queryCurrentTaskOnce1 = mCurrentTaskAndOrder update ")
|
||||
if (result == null) return
|
||||
|
||||
if (result.endSite == null && result.order == null){
|
||||
if (result.endSite == null && result.order == null) {
|
||||
mCurrentTaskAndOrder = null
|
||||
updateNoTaskAndOrderUi()
|
||||
TaxiModel.updateCurrentTaskAndOrder(null)
|
||||
updateNoTaskWithOrderUI()
|
||||
TaxiTaskModel.updateCurrentTaskAndOrder(null)
|
||||
}
|
||||
|
||||
//当前任务完成且订单状态到达乘客上车点, 则立马去拉取任务 不再等30s,否则送驾任务要等30s后才能去执行
|
||||
if (result.currentStatus == TaskStatusEnum.CompleteTask.code){
|
||||
if (result.currentStatus == TaskStatusEnum.CompleteTask.code) {
|
||||
if (result.order != null && result.order!!.orderStatus
|
||||
== TaxiOrderStatusEnum.ArriveAtStart.code){
|
||||
== TaxiOrderStatusEnum.ArriveAtStart.code
|
||||
) {
|
||||
pullTask(result.endSite!!.siteId)
|
||||
d(TAG, "queryCurrentTaskOnce1 = pullTask" )
|
||||
d(TAG, "queryCurrentTaskOnce1 = pullTask")
|
||||
|
||||
}else{
|
||||
} else {
|
||||
startPrepareTask120S(result.endSite!!.siteId)
|
||||
d(TAG, "queryCurrentTaskOnce1 = startPrepareTask120S" )
|
||||
d(TAG, "queryCurrentTaskOnce1 = startPrepareTask120S")
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
mCurrentTaskAndOrder = result
|
||||
TaxiModel.updateCurrentTaskAndOrder(result)
|
||||
TaxiModel.updateStation()
|
||||
TaxiTaskModel.updateCurrentTaskAndOrder(result)
|
||||
TaxiTaskModel.updateStation()
|
||||
updateTaskAndOrderUi()
|
||||
if (result.order != null && result.order!!.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code){
|
||||
if (result.order != null && result.order!!.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code) {
|
||||
d(TAG, "queryCurrentTaskOnce1 = ArriveAtEnd query mileage and duration")
|
||||
queryCurrentOrderStatusByNo(result.order!!.orderNo) //查询全程里程和用时,更新
|
||||
}
|
||||
|
||||
//根据lineId集合去查轨迹集合, 返回的只是接驾任务的line集合,没有送驾任务
|
||||
if (result.order != null && result.order!!.orderStatus <= TaxiOrderStatusEnum.OnTheWayToEnd.code){
|
||||
if (result.order != null && result.order!!.orderStatus <= TaxiOrderStatusEnum.OnTheWayToEnd.code) {
|
||||
var lines = result.order!!.planningLines
|
||||
lines = lines.plus(result.order!!.orderLine)
|
||||
d(TAG, "queryCurrentTaskOnce1 = by lineIds query Contrails" )
|
||||
d(TAG, "queryCurrentTaskOnce1 = by lineIds query Contrails")
|
||||
queryOrderPickUpContrails(lines)
|
||||
}
|
||||
|
||||
if (result.currentStatus <= TaskStatusEnum.StartTask.code){//任务执行中, 去加载下轨迹
|
||||
d(TAG, "queryCurrentTaskOnce1 = by lineId query Contrail" )
|
||||
TaxiModel.queryTaskContrail(Array(1) { result.lineId })
|
||||
if (result.currentStatus <= TaskStatusEnum.StartTask.code) {//任务执行中, 去加载下轨迹
|
||||
d(TAG, "queryCurrentTaskOnce1 = by lineId query Contrail")
|
||||
TaxiTaskModel.queryTaskContrail(Array(1) { result.lineId })
|
||||
}
|
||||
|
||||
if (result.taskType <= TaskTypeEnum.ToOrderStartTask.code
|
||||
&& result.currentStatus == TaskStatusEnum.GetTask.code){//自动去启动自驾
|
||||
if (!(result.order != null && result.order!!.orderStatus >= TaxiOrderStatusEnum.ArriveAtStart.code)){
|
||||
d(TAG, "queryCurrentTaskOnce1 = autoStartDriving" )
|
||||
TaxiModel.autoStartDriving()
|
||||
&& result.currentStatus == TaskStatusEnum.GetTask.code
|
||||
) {//自动去启动自驾
|
||||
if (!(result.order != null && result.order!!.orderStatus >= TaxiOrderStatusEnum.ArriveAtStart.code)) {
|
||||
d(TAG, "queryCurrentTaskOnce1 = autoStartDriving")
|
||||
TaxiTaskModel.autoStartDriving()
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -369,13 +383,13 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
*/
|
||||
private fun queryOrderPickUpContrails(planningLines: Array<Long>?) {
|
||||
if (planningLines == null) return
|
||||
contrailList(mContext,planningLines,
|
||||
object : OchCommonServiceCallback<ContrailListRespBean>{
|
||||
override fun onSuccess(data: ContrailListRespBean?) {
|
||||
contrailList(mContext, planningLines,
|
||||
object : OchCommonServiceCallback<TrajectoryListRespBean> {
|
||||
override fun onSuccess(data: TrajectoryListRespBean?) {
|
||||
if (data == null || data.code != 0) return
|
||||
val contrails = data.data
|
||||
if (mCurrentTaskAndOrder != null){
|
||||
TaxiModel.updateOrderContrails(contrails)
|
||||
if (mCurrentTaskAndOrder != null) {
|
||||
TaxiTaskModel.updateOrderContrails(contrails)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -387,38 +401,43 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
}
|
||||
|
||||
private fun queryCurrentOrderStatusByNo(orderNo: String) {
|
||||
queryCarOrderByOrderNo(mContext,orderNo,
|
||||
object : OchCommonServiceCallback<QueryCarOrderByNoRespBean>{
|
||||
queryCarOrderByOrderNo(mContext, orderNo,
|
||||
object : OchCommonServiceCallback<QueryCarOrderByNoRespBean> {
|
||||
override fun onSuccess(data: QueryCarOrderByNoRespBean?) {
|
||||
d(SceneConstant.M_TAXI + TAG, "queryCurrentOrderStatusByNo data = " +
|
||||
GsonUtil.jsonFromObject(data))
|
||||
d(
|
||||
SceneConstant.M_TAXI + TAG, "queryCurrentOrderStatusByNo data = " +
|
||||
GsonUtil.jsonFromObject(data)
|
||||
)
|
||||
if (data == null || data.code != 0) return
|
||||
if (data.data.orderStatus == TaxiOrderStatusEnum.Cancel.code){
|
||||
if (data.data.orderStatus == TaxiOrderStatusEnum.Cancel.code) {
|
||||
VoiceNotice.showNotice("乘客已经取消")
|
||||
mCurrentTaskAndOrder = null
|
||||
updateNoTaskAndOrderUi()
|
||||
updateNoTaskWithOrderUI()
|
||||
//2020.8.23 到站后不再调用取消自驾. 原因是取消自驾,D档位会溜车
|
||||
// TaxiModel.cancelAutopilot()
|
||||
return
|
||||
}
|
||||
if (data.data.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code){//到站
|
||||
if (data.data.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code) {//到站
|
||||
//结束导航
|
||||
updateOrderMileAndDur(data.data.mileage,data.data.duration.toInt())
|
||||
updateOrderMileAndDur(data.data.mileage, data.data.duration.toInt())
|
||||
return
|
||||
}
|
||||
if (data.data.orderStatus == TaxiOrderStatusEnum.JourneyCompleted.code){//完成
|
||||
if (data.data.orderStatus == TaxiOrderStatusEnum.JourneyCompleted.code) {//完成
|
||||
//获取新的任务
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.endSite != null){
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.endSite != null) {
|
||||
startPrepareTask120S(mCurrentTaskAndOrder!!.endSite!!.siteId)
|
||||
}
|
||||
mCurrentTaskAndOrder = null
|
||||
updateNoTaskAndOrderUi()
|
||||
updateNoTaskWithOrderUI()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
d(SceneConstant.M_TAXI + TAG, "queryCurrentOrderStatusByNo() code=$code,msg=$msg")
|
||||
d(
|
||||
SceneConstant.M_TAXI + TAG,
|
||||
"queryCurrentOrderStatusByNo() code=$code,msg=$msg"
|
||||
)
|
||||
}
|
||||
|
||||
})
|
||||
@@ -429,8 +448,10 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
|
||||
sendUiState {
|
||||
copy(
|
||||
taskWithOrderUIState = TaskWithOrderUIState.UpdateTaskTripInfo(mileage,
|
||||
duration)
|
||||
taskWithOrderUIState = TaskWithOrderUIState.UpdateTaskTripInfo(
|
||||
mileage,
|
||||
duration
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -442,21 +463,23 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
}
|
||||
|
||||
private fun pullTask(siteId: Long) {
|
||||
CarServiceManager.prepareTask(
|
||||
TaxiTaskWithOrderServiceManager.prepareTask(
|
||||
mContext,
|
||||
siteId,
|
||||
object : OchCommonServiceCallback<PrepareTaskRespBean> {
|
||||
override fun onSuccess(data: PrepareTaskRespBean?) {
|
||||
d(SceneConstant.M_TAXI + TAG, "prepareTask = " + GsonUtil.jsonFromObject(data)
|
||||
+ ", isOpeningOrderStatus = ${isOpeningOrderStatus()}")
|
||||
d(
|
||||
SceneConstant.M_TAXI + TAG, "prepareTask = " + GsonUtil.jsonFromObject(data)
|
||||
+ ", isOpeningOrderStatus = ${isOpeningOrderStatus()}"
|
||||
)
|
||||
if (data?.data == null || data.code != 0) return
|
||||
//去下载轨迹, 下发给工控机下载
|
||||
TaxiModel.queryTaskContrail(Array(1) { data.data!!.lineId })
|
||||
TaxiTaskModel.queryTaskContrail(Array(1) { data.data!!.lineId })
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
d(SceneConstant.M_TAXI + TAG, "$code $msg")
|
||||
if (isLogin() && isOpeningOrderStatus()){
|
||||
if (isLogin() && isOpeningOrderStatus()) {
|
||||
startPrepareTask120S(siteId) //失败后30s再次调用获取下一任务
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -11,12 +11,17 @@ sealed class TaskWithOrderUIState {
|
||||
object Init : TaskWithOrderUIState()
|
||||
|
||||
/**
|
||||
* 演练任务、接驾任务、送驾任务
|
||||
* 演练任务 或 接驾任务 或 送驾任务
|
||||
*/
|
||||
data class TaskWithOrder(
|
||||
val taskWithOrder: QueryCurrentTaskRespBean.Result?,
|
||||
val driveToNearestStationTask: StartServiceRespBean.Result?
|
||||
val taskWithOrder: QueryCurrentTaskRespBean.Result?
|
||||
) : TaskWithOrderUIState()
|
||||
|
||||
/**
|
||||
* 特殊任务:人工驾驶去最近的站点任务
|
||||
*/
|
||||
data class TaskDriveToNearestStationTask(val driveToNearestStationTask: StartServiceRespBean.Result?) :
|
||||
TaskWithOrderUIState()
|
||||
|
||||
data class UpdateTaskTripInfo(val mileage: Float, val duration: Int) : TaskWithOrderUIState()
|
||||
}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.mogo.och.taxi.utils
|
||||
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import io.reactivex.exceptions.UndeliverableException
|
||||
import io.reactivex.functions.Consumer
|
||||
import io.reactivex.plugins.RxJavaPlugins
|
||||
import java.io.IOException
|
||||
|
||||
object RxJavaUtils {
|
||||
fun setErrorHandler(tag: String) {
|
||||
//2022.1.28
|
||||
// 调用Disposable.dispose() 时候会出现InterruptedException 导致出现崩溃
|
||||
// The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the excTeption has nowhere to go to begin with
|
||||
RxJavaPlugins.setErrorHandler(Consumer { e ->
|
||||
var e = e
|
||||
if (e is UndeliverableException) {
|
||||
e = (e.cause)!!
|
||||
CallerLogger.d(tag, "UndeliverableException")
|
||||
}
|
||||
if ((e is IOException)) { //
|
||||
// fine, irrelevant network problem or API that throws on cancellation
|
||||
CallerLogger.d(tag, "IOException")
|
||||
return@Consumer
|
||||
}
|
||||
if (e is InterruptedException) {
|
||||
// fine, some blocking code was interrupted by a dispose call
|
||||
CallerLogger.d(tag, "InterruptedException")
|
||||
return@Consumer
|
||||
}
|
||||
if ((e is NullPointerException) || (e is IllegalArgumentException)) {
|
||||
// that's likely a bug in the application
|
||||
CallerLogger.d(
|
||||
tag,
|
||||
"NullPointerException or IllegalArgumentException"
|
||||
)
|
||||
Thread.currentThread().uncaughtExceptionHandler?.uncaughtException(
|
||||
Thread.currentThread(),
|
||||
e
|
||||
)
|
||||
return@Consumer
|
||||
}
|
||||
if (e is IllegalStateException) {
|
||||
// that's a bug in RxJava or in a custom operator
|
||||
CallerLogger.d(tag, "IllegalStateException")
|
||||
Thread.currentThread().uncaughtExceptionHandler?.uncaughtException(
|
||||
Thread.currentThread(),
|
||||
e
|
||||
)
|
||||
return@Consumer
|
||||
}
|
||||
CallerLogger.d(tag, "Undeliverable exception")
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,5 @@
|
||||
package com.mogo.och.taxi.utils;
|
||||
|
||||
import com.mogo.och.taxi.model.TaxiModel;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
@@ -6,13 +6,12 @@ import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils;
|
||||
import com.mogo.och.taxi.bean.ContrailListRespBean;
|
||||
import com.mogo.och.taxi.bean.TrajectoryListRespBean;
|
||||
import com.mogo.och.taxi.bean.OrderDetail;
|
||||
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean;
|
||||
import com.mogo.och.taxi.bean.Site;
|
||||
import com.mogo.och.taxi.constant.TaskStatusEnum;
|
||||
import com.mogo.och.taxi.constant.TaxiUnmannedConst;
|
||||
import com.mogo.och.taxi.model.TaxiModel;
|
||||
import com.mogo.och.taxi.ui.task.TaxiTaskModel;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@@ -67,7 +66,7 @@ public class TaxiTrajectoryManager {
|
||||
* 同步订单信息
|
||||
*/
|
||||
public void syncTrajectoryInfo() {
|
||||
QueryCurrentTaskRespBean.Result taskAndOrder = TaxiModel.INSTANCE.getCurTaskAndOrder();
|
||||
QueryCurrentTaskRespBean.Result taskAndOrder = TaxiTaskModel.INSTANCE.getCurTaskAndOrder();
|
||||
if (taskAndOrder == null || taskAndOrder.getCurrentStatus() >= TaskStatusEnum.StartTask.getCode()) {
|
||||
CallerLogger.INSTANCE.d(M_TAXI + TAG, "syncTrajectoryInfo() stop.");
|
||||
stopTrajReqLoop();
|
||||
@@ -116,7 +115,7 @@ public class TaxiTrajectoryManager {
|
||||
}
|
||||
|
||||
private void setupAutoPilotLine() {
|
||||
QueryCurrentTaskRespBean.Result taskAndOrder = TaxiModel.INSTANCE.getCurTaskAndOrder();
|
||||
QueryCurrentTaskRespBean.Result taskAndOrder = TaxiTaskModel.INSTANCE.getCurTaskAndOrder();
|
||||
|
||||
if (taskAndOrder == null || taskAndOrder.getEndSite() == null) {
|
||||
CallerLogger.INSTANCE.e(M_TAXI + TAG,
|
||||
@@ -129,7 +128,7 @@ public class TaxiTrajectoryManager {
|
||||
* 4、若不存在,说明当前的执行的任务是与订单无关的演练任务,通知下载加载当前任务的轨迹以及预加载订单轨迹集合的第一个
|
||||
*/
|
||||
|
||||
final ContrailListRespBean.Result curTaskContrail = TaxiModel.INSTANCE.getCurTaskContrail();
|
||||
final TrajectoryListRespBean.Result curTaskContrail = TaxiTaskModel.INSTANCE.getCurrentTaskTrajectory();
|
||||
if (curTaskContrail == null) return;
|
||||
|
||||
long curLineId = taskAndOrder.getLineId();
|
||||
@@ -157,8 +156,8 @@ public class TaxiTrajectoryManager {
|
||||
}
|
||||
|
||||
final OrderDetail orderDetail = taskAndOrder.getOrder();
|
||||
ContrailListRespBean.Result preloadContrail = null; //预加载的轨迹
|
||||
final List<ContrailListRespBean.Result> orderContrails = TaxiModel.INSTANCE.getCurOrderContrails();
|
||||
TrajectoryListRespBean.Result preloadContrail = null; //预加载的轨迹
|
||||
final List<TrajectoryListRespBean.Result> orderContrails = TaxiTaskModel.INSTANCE.getCurrentOrderTrajectoryList();
|
||||
|
||||
if (orderDetail != null && orderContrails != null && orderContrails.size() != 0 ){
|
||||
for (int i = 0; i< orderContrails.size() ; i++){
|
||||
|
||||
Reference in New Issue
Block a user