[自主算路验证] opt: 优化模式切换互斥逻辑,优化启自驾逻辑,优化选择路线item UI;

This commit is contained in:
aibingbing
2023-11-28 16:16:48 +08:00
parent eec68fe3bc
commit de59d9f166
19 changed files with 163 additions and 66 deletions

View File

@@ -201,21 +201,22 @@ abstract class BaseTaxiTabFragment<V : IView, P : Presenter<V>> : MvpFragment<V,
module_mogo_och_operation_status.setOnClickListener(object : OnPreventFastClickListener() {
override fun onClickImpl(v: View?) {
if (MogoStatusManager.getInstance().isTaxiUnmanedDriverLineRoutingVerifyMode) {
ToastUtils.showLong("请先切换到Taxi无人化流程模式")
ToastUtils.showLong("请先切换到Taxi无人化流程模式后使用")
return
}
onChangeOperationStatus()
}
})
MogoStatusManager.getInstance()
.registerStatusChangedListener(TAG, StatusDescriptor.TAXI_UNMANED_DRIVER_LINE_ROUTING_VERIFY_MODE
) { descriptor, isTrue ->
if (StatusDescriptor.TAXI_UNMANED_DRIVER_LINE_ROUTING_VERIFY_MODE == descriptor) {
UiThreadHandler.post {
module_mogo_och_operation_status.isEnabled = !isTrue
}
}
}
// 20231128 如果设置enable=false, 需要切图,所以先不设置了
// MogoStatusManager.getInstance()
// .registerStatusChangedListener(TAG, StatusDescriptor.TAXI_UNMANED_DRIVER_LINE_ROUTING_VERIFY_MODE
// ) { descriptor, isTrue ->
// if (StatusDescriptor.TAXI_UNMANED_DRIVER_LINE_ROUTING_VERIFY_MODE == descriptor) {
// UiThreadHandler.post {
// module_mogo_och_operation_status.isEnabled = !isTrue
// }
// }
// }
taxi_close_navi_icon.setOnClickListener {
showAmapNaviToStationFragment(false)

View File

@@ -262,6 +262,7 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
null
)
}
MogoStatusManager.getInstance().setTaxiUnmanedDriverTakingOrders(TAG, inOperation)
}
override fun onMapLoaded() {}

View File

@@ -6,6 +6,7 @@ import androidx.annotation.NonNull;
import androidx.lifecycle.LifecycleOwner;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.module.status.MogoStatusManager;
import com.mogo.commons.mvp.Presenter;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
@@ -79,7 +80,11 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
* 开启自动驾驶 自驾模式
*/
public void startAutoPilot() {
TaxiTaskModel.INSTANCE.startAutopilotByClick();
if (MogoStatusManager.getInstance().isTaxiUnmanedDriverLineRoutingVerifyMode()) {
TaxiRoutingModel.INSTANCE.startAutoPilotByClick();
} else {
TaxiTaskModel.INSTANCE.startAutopilotByClick();
}
}
// 登出

View File

@@ -154,7 +154,7 @@ class TaxiRoutingChooseLineActivity : AppCompatActivity() {
}
private fun loadData() {
mViewModel.sendUiIntent(TaxiRoutingUiIntent.QueryRoutingGrayLineList)
mViewModel.sendUiIntent(TaxiRoutingUiIntent.QueryRoutingGrayLineList(System.currentTimeMillis()))
}
private fun onRoutingGrayLineListChanged(data: MutableList<GrayLineBean>) {

View File

@@ -81,7 +81,7 @@ class TaxiRoutingFragment : BaseFragment(), ICommonNaviChangedCallback {
private fun initViewListener() {
btnChooseTask.setOnClickListener {
mViewModel.sendUiIntent(TaxiRoutingUiIntent.StartChooseLineAction)
mViewModel.sendUiIntent(TaxiRoutingUiIntent.StartChooseLineAction(System.currentTimeMillis()))
}
}

View File

@@ -3,6 +3,7 @@ package com.mogo.och.taxi.ui.routing
import android.content.Context
import android.content.Intent
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ToastUtils
@@ -51,6 +52,8 @@ class TaxiRoutingFragmentViewModel : BaseViewModel<TaxiRoutingUiState, TaxiRouti
)
)
}
// 设置灰度路线任务执行状态,切换模式时判断使用
MogoStatusManager.getInstance().setTaxiUnmanedDriverLineRoutingPerformTask(TAG, true)
}
is TaxiRoutingUiIntent.StartTaskAction -> {
@@ -63,6 +66,7 @@ class TaxiRoutingFragmentViewModel : BaseViewModel<TaxiRoutingUiState, TaxiRouti
return
}
DebugView.printInfoMsg("[启自驾] 准备启动自驾")
TaxiRoutingModel.updateCurrentGrayLineAndContrail(grayLineBean, contrailBean)
TaxiRoutingModel.startAutoPilot(grayLineBean!!, contrailBean!!)
sendUiState {
copy(
@@ -129,6 +133,9 @@ class TaxiRoutingFragmentViewModel : BaseViewModel<TaxiRoutingUiState, TaxiRouti
routingUiState = RoutingUIState.Init
)
}
TaxiRoutingModel.updateCurrentGrayLineAndContrail(null, null)
// 设置灰度路线任务执行状态,切换模式时判断使用
MogoStatusManager.getInstance().setTaxiUnmanedDriverLineRoutingPerformTask(TAG, false)
}
override fun onSubmitEndTaskFailed(errorStr: String) {

View File

@@ -37,6 +37,9 @@ object TaxiRoutingModel {
private val mContext: Context
get() = AbsMogoApplication.getApp().applicationContext
private var currentGrayLineBean: GrayLineBean? = null
private var currentContrailBean: ContrailBean? = null
private val mTaxiRoutingCallbackMap: ConcurrentHashMap<String, ITaxiRoutingCallback> =
ConcurrentHashMap()
@@ -299,6 +302,20 @@ object TaxiRoutingModel {
})
}
fun updateCurrentGrayLineAndContrail(grayLineBean: GrayLineBean?, contrailBean: ContrailBean?) {
currentGrayLineBean = grayLineBean
currentContrailBean = contrailBean
}
fun startAutoPilotByClick() {
if (currentGrayLineBean == null || currentContrailBean == null) {
CallerLogger.e(TAG, "startAutoPilotByClick 异常currentGrayLineBean == null || currentContrailBean == null")
DebugView.printErrorMsg("[启自驾] startAutoPilotByClick 异常currentGrayLineBean == null || currentContrailBean == null")
return
}
startAutoPilot(currentGrayLineBean!!, currentContrailBean!!)
}
fun startAutoPilot(grayLineBean: GrayLineBean, contrailBean: ContrailBean) {
if (grayLineBean.startSite == null || grayLineBean.endSite == null) {
CallerLogger.e(TAG, "start site or end site is null")

View File

@@ -7,10 +7,10 @@ import com.mogo.och.taxi.bean.GrayLineBean
sealed class TaxiRoutingUiIntent : IUiIntent {
//打开选择路线页面
object StartChooseLineAction : TaxiRoutingUiIntent()
data class StartChooseLineAction(val currentTimestamp: Long) : TaxiRoutingUiIntent()
//查询灰度线路列表
object QueryRoutingGrayLineList : TaxiRoutingUiIntent()
data class QueryRoutingGrayLineList(val currentTimestamp: Long) : TaxiRoutingUiIntent()
//开始一个任务并查询此任务对应的轨迹详情
data class StartTaskAndQueryContrail(val grayLineBean: GrayLineBean) : TaxiRoutingUiIntent()

View File

@@ -1,6 +1,7 @@
package com.mogo.och.taxi.ui.task
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.map.MogoLocation
@@ -229,6 +230,12 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
d(TAG, "onTaskWithOrderChanged = result = " + GsonUtil.jsonFromObject(result))
DebugView.printInfoMsg("[查询TaskWithOrder信息] 更新数据, 刷新UI")
updateTaskAndOrderUi(result)
// 设置task执行相关状态切换模式时判断使用
if (result == null || result.taskType == TaskTypeEnum.None.code) {
MogoStatusManager.getInstance().setTaxiUnmanedDriverPerformTask(TAG, false)
} else {
MogoStatusManager.getInstance().setTaxiUnmanedDriverPerformTask(TAG, true)
}
}
override fun onTaskStarted(result: QueryCurrentTaskRespBean.Result?) {
@@ -318,6 +325,8 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
VoiceNotice.showNotice("已取消行程")
//取消自驾,D档位会溜车 map3.6.0 修改
TaxiTaskModel.cancelAutopilot()
// 设置task执行相关状态切换模式时判断使用
MogoStatusManager.getInstance().setTaxiUnmanedDriverPerformTask(TAG, false)
}
override fun onOrderArriveAtEnd(orderNo: String) {
@@ -339,6 +348,8 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
TaxiTaskModel.startPrepareTaskDelay(CallerUnmannedListenerManager.getPullTime().toLong(),
it.siteId)
}
// 设置task执行相关状态切换模式时判断使用
MogoStatusManager.getInstance().setTaxiUnmanedDriverPerformTask(TAG, false)
}
override fun onStartAutopilot(postDelayTime: Long) {

View File

@@ -31,7 +31,11 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.*
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils
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.common.socketmessage.OCHSocketMessageManager
import com.mogo.och.common.module.biz.common.socketmessage.data.OCHOperationalMessage
import com.mogo.och.common.module.biz.constant.LoginStatusManager
@@ -48,9 +52,22 @@ import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceM
import com.mogo.och.common.module.map.AmapNaviToDestinationModel
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil.coordinateConverterWgsToGcjLocations
import com.mogo.och.common.module.voice.VoiceNotice
import com.mogo.och.taxi.bean.*
import com.mogo.och.taxi.callback.*
import com.mogo.och.taxi.constant.*
import com.mogo.och.taxi.bean.PrepareTaskRespBean
import com.mogo.och.taxi.bean.QueryCarOrderByNoRespBean
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.IOCHTaxiAutopilotPlanningCallback
import com.mogo.och.taxi.callback.ITaxiADASStatusCallback
import com.mogo.och.taxi.callback.ITaxiCarServiceCallback
import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback
import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback
import com.mogo.och.taxi.callback.ITaxiTaskWithOrderCallback
import com.mogo.och.taxi.constant.TaskStatusEnum
import com.mogo.och.taxi.constant.TaskTypeEnum
import com.mogo.och.taxi.constant.TaxiCarServingStatusManager
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
import com.mogo.och.taxi.constant.TaxiUnmannedConst
import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.BUSINESSTYPE
import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager
import com.mogo.och.taxi.ui.debug.DebugView
@@ -1406,6 +1423,10 @@ object TaxiTaskModel {
mCurrentTaskWithOrder = null
mDriveToNearestStationTask = null
DebugView.printInfoMsg("[登出] 退出登陆")
MogoStatusManager.getInstance().setTaxiUnmanedDriverPerformTask(TAG, false)
MogoStatusManager.getInstance().setTaxiUnmanedDriverTakingOrders(TAG, false)
MogoStatusManager.getInstance().setTaxiUnmanedDriverLineRoutingPerformTask(TAG, false)
MogoStatusManager.getInstance().setTaxiUnmanedDriverLineRoutingVerifyMode(TAG, false)
}
//导航去订单终点目的地

View File

@@ -1,61 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
android:background="@drawable/routing_choose_line_shape_select_line_item_bg_normal">
android:paddingStart="@dimen/dp_78"
android:paddingEnd="@dimen/dp_78"
android:layout_marginTop="@dimen/dp_8"
android:background="@drawable/routing_choose_line_shape_select_line_item_bg_normal"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/switchLineNameTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginEnd="@dimen/dp_20"
android:ellipsize="end"
android:gravity="left|center_vertical"
android:maxLines="1"
android:singleLine="true"
android:textColor="@android:color/white"
android:textSize="@dimen/dp_40"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_default="spread"
android:textSize="@dimen/dp_44"
tools:text="线路名称线路名称线路" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/todayVerifyNumTextView"
android:layout_width="wrap_content"
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_20"
android:layout_gravity="center_vertical"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginEnd="@dimen/dp_20"
android:gravity="left|center_vertical"
android:maxLines="1"
android:textColor="@android:color/white"
android:textSize="@dimen/dp_32"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/historyVerifyNumTextView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/switchLineNameTextView"
tools:text="本车今日已验证1次" />
android:layout_marginEnd="@dimen/dp_20">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/historyVerifyNumTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginEnd="@dimen/dp_20"
android:gravity="right|center_vertical"
android:maxLines="1"
android:textColor="@color/taxi_color_ccb9c3e9"
android:textSize="@dimen/dp_28"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/todayVerifyNumTextView"
app:layout_constraintTop_toTopOf="@+id/todayVerifyNumTextView"
tools:text="路线累计反馈0可用1不可用" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/todayVerifyNumTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:gravity="left|center_vertical"
android:maxLines="1"
android:textColor="@android:color/white"
android:textSize="@dimen/dp_34"
tools:text="本车今日已验证1次" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/historyVerifyNumTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_toRightOf="@+id/todayVerifyNumTextView"
android:gravity="right|center_vertical"
android:maxLines="1"
android:textColor="@color/taxi_color_ccb9c3e9"
android:textSize="@dimen/dp_30"
tools:text="路线累计反馈0可用1不可用" />
</RelativeLayout>
</LinearLayout>

View File

@@ -20,9 +20,7 @@
<com.mogo.och.common.module.wigets.MarqueeTextView
android:id="@+id/taskTitleTv"
android:layout_width="@dimen/dp_420"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_45"
android:layout_marginBottom="@dimen/dp_45"
android:layout_height="@dimen/dp_132"
android:ellipsize="marquee"
android:gravity="center_vertical"
android:marqueeRepeatLimit="marquee_forever"