From f71f73a44dbaf84cf06895d08e0a697a4a5882f6 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Mon, 16 Oct 2023 18:09:50 +0800 Subject: [PATCH 01/17] =?UTF-8?q?[6.1.0]=20=E4=BB=BB=E5=8A=A1/=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=9B=9E=E8=B0=83=E6=8E=A5=E5=8F=A3=E9=83=A8=E5=88=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../callback/ITaxiTaskWithOrderCallback.kt | 3 +- .../com/mogo/och/taxi/ui/debug/DebugView.kt | 5 +- .../taxi/ui/task/TaxiCurrentTaskViewModel.kt | 71 +++++++++- .../mogo/och/taxi/ui/task/TaxiTaskModel.kt | 124 +++++------------- 4 files changed, 103 insertions(+), 100 deletions(-) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt index 036a9b7df2..1cfc6109b2 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt @@ -5,7 +5,8 @@ import com.mogo.och.taxi.bean.TrajectoryListRespBean interface ITaxiTaskWithOrderCallback { fun onTaskWithOrderDataChanged(taskWithOrder: QueryCurrentTaskRespBean.Result?) - fun onTaskCompleted(result: QueryCurrentTaskRespBean.Result) + fun onTaskCompleted(result: QueryCurrentTaskRespBean.Result?) + fun onTaskStarted(result: QueryCurrentTaskRespBean.Result?) fun onTaskTrajectoryDataChanged(data: TrajectoryListRespBean?) fun onOrderCancel() fun onOrderArriveAtEnd(orderNo: String) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt index 527fc424a5..fd63f93a6a 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt @@ -199,7 +199,10 @@ public class DebugView @JvmOverloads constructor( initViewByData(taskWithOrder) } - override fun onTaskCompleted(result: QueryCurrentTaskRespBean.Result) { + override fun onTaskCompleted(result: QueryCurrentTaskRespBean.Result?) { + } + + override fun onTaskStarted(result: QueryCurrentTaskRespBean.Result?) { } override fun onTaskTrajectoryDataChanged(data: TrajectoryListRespBean?) { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt index 3beff6419b..54389a9df1 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt @@ -2,14 +2,20 @@ package com.mogo.och.taxi.ui.task import com.mogo.commons.AbsMogoApplication import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.data.map.MogoLocation +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager import com.mogo.eagle.core.network.utils.GsonUtil +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.biz.network.OchCommonServiceCallback +import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager import com.mogo.och.common.module.utils.ToastUtilsOch import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.common.module.wigets.StartAutopilotAnimationView @@ -225,15 +231,48 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), updateTaskAndOrderUi(result) } + override fun onTaskStarted(result: QueryCurrentTaskRespBean.Result?) { + updateLocalCalculateStation(result) + if (result?.endSite != null){ + TaxiTaskModel.setBeautificationMode(true) + updateAutopilotControlParameters() + }else{ + clearDemoModeAndACParameters() + } + } + + private fun updateLocalCalculateStation(result: QueryCurrentTaskRespBean.Result?) { + if (result?.startSite != null && result.endSite != null + ) { + d(TAG, "updateLocalCalculateStation start") + val curTaskAndOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return + if (curTaskAndOrder.startSite != null && curTaskAndOrder.endSite != null) { + val startStation = MogoLocation() + startStation.longitude = curTaskAndOrder.startSite!!.gcjLon + startStation.latitude = curTaskAndOrder.startSite!!.gcjLat + val endStation = MogoLocation() + endStation.longitude = curTaskAndOrder.endSite!!.gcjLon + endStation.latitude = curTaskAndOrder.endSite!!.gcjLat + TrajectoryAndDistanceManager.setStationPoint( + startStation, + endStation, + curTaskAndOrder.lineId + ) + } + } else { + TaxiTaskModel.clearLocalCalculateStation() + } + } + /** * 开始倒计时120s或者10s拉取任务 * 演练任务120s拉取 * 接驾任务10s拉取 */ - override fun onTaskCompleted(result: QueryCurrentTaskRespBean.Result) { + override fun onTaskCompleted(result: QueryCurrentTaskRespBean.Result?) { d(TAG, "onTaskCompleted: ${result?.currentStatus}, siteId=${result?.endSite?.siteId}") - if (result.order != null && result.servingStatus == 1){ + if (result?.order != null && result.servingStatus == 1){ if (result.taskType <= TaskTypeEnum.VirtualTask.code && result.order!!.orderStatus < TaxiOrderStatusEnum.ArriveAtStart.code) { VoiceNotice.showNotice("已为您接到订单") @@ -245,15 +284,17 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), if (QueryCurrentTaskRespBean.isUserArriveAtStart(result)) { TaxiTaskModel.removePrepareTaskDelay() - TaxiTaskModel.prepareNextTask(0,result.endSite!!.siteId) + TaxiTaskModel.prepareNextTask(0,result?.endSite!!.siteId) }else if (!QueryCurrentTaskRespBean.isOrderArriveAtStart(result) || !QueryCurrentTaskRespBean.isOrderArriveAtEnd(result)){ TaxiTaskModel.startPrepareTaskDelay( if (TaskTypeEnum.isToOrderStartTask(result)) TaxiUnmannedConst.START_AUTOPILOT_COUNTDOWN_INTERVAL else TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S, - result.endSite!!.siteId) + result?.endSite!!.siteId) } + + clearDemoModeAndACParameters() } override fun onTaskTrajectoryDataChanged(data: TrajectoryListRespBean?) { @@ -382,4 +423,26 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), ToastUtils.showShort(context.getString(R.string.request_error_tip)) } } + + private fun clearDemoModeAndACParameters(){ + if (FunctionBuildConfig.isDemoMode) { + d(TAG, "setIPCDemoMode:false") + CallerAutoPilotControlManager.setIPCDemoMode(false) + } + TaxiTaskModel.clearAutopilotControlParameters() + } + + /** + * 将业务订单信息保存,鹰眼可取用 + */ + private fun updateAutopilotControlParameters() { + val parameters = TaxiTaskModel.initAutopilotControlParameters() + if (null == parameters) { + CallerLogger.e(TAG, "AutopilotControlParameters is empty.") + return + } + d(TAG, "AutopilotControlParameters is update.") + DebugView.printInfoMsg("[启自驾] updateAutopilotControlParameters调用成功") + CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(parameters) + } } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt index b0ba113e37..f4a2759548 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt @@ -268,16 +268,7 @@ object TaxiTaskModel { mCurrentTaskWithOrder!!.lineId, mCurrentTaskWithOrder!!.order!!.orderNo ) - if (FunctionBuildConfig.isDemoMode) { - // 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true - FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true - CallerAutoPilotControlManager.setIgnoreConditionDraw(true) - CallerAutoPilotControlManager.setIPCDemoMode(true) - d( - TAG, - "美化模式-ignore:置为true(到达出发点且已开启自动驾驶)" - ) - } + setBeautificationMode(true) } } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { DebugView.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_ENABLE,meaning=可自动驾驶,人工干预状态") @@ -698,8 +689,6 @@ object TaxiTaskModel { mCurrentTaskWithOrder = result - updateLocalCalculateStation() - // 任务为空 if (result?.endSite == null && result?.order == null) { d(TAG, "queryCurrentTaskOnce: 任务为空") @@ -710,15 +699,23 @@ object TaxiTaskModel { } } clearCurrentOCHOrder() + clearLocalCalculateStation() return } + //开始任务处理 + if (QueryCurrentTaskRespBean.isStartTaskType(result)){ + mTaxiTaskWithOrderCallbackMap.forEach { + val listener = it.value + listener.onTaskStarted(result) + } + } + //当前任务完成且订单状态到达乘客上车点, 则立马去拉取任务 不再等120s,否则送驾任务要等120s后才能去执行(8.29废) //8.29更新: 当前任务完成且订单状态为乘客已上车, 则立马去拉取任务 不再等120s,否则送驾任务要等120s后才能去执行 // 主要是解决A-B演练任务同时接到A-B订单状态流转的问题 //注意: 需要去除到达乘客上车点的节点, 这个节点不拉取任务 - if (result.currentStatus == TaskStatusEnum.CompleteTask.code - ) { + if (QueryCurrentTaskRespBean.isCompleteTaskType(result)) { mIsArrivedSiteStartTag = false //任务完成说明到站, 更新到站标识位, 不再到站接口请求成功更新 mADASStatusCallback?.updateAutopilotStatus() mTaxiTaskWithOrderCallbackMap.forEach { @@ -746,7 +743,7 @@ object TaxiTaskModel { } queryTaskTrajectoryByLineIds(linesIds.toTypedArray(), result.lineId) - //自动去启动自驾 + //自动去启动自驾, 拿到任务并且任务类型是演练和接驾任务 if (result.currentStatus == TaskStatusEnum.GetTask.code && result.taskType <= TaskTypeEnum.ToOrderStartTask.code ) { @@ -767,7 +764,6 @@ object TaxiTaskModel { listener.onTaskWithOrderDataChanged(mCurrentTaskWithOrder) } } - updateDemoModeAndAutopilotParameters(result) } } @@ -798,29 +794,12 @@ object TaxiTaskModel { }) } - fun updateLocalCalculateStation() { - if (mCurrentTaskWithOrder != null && - mCurrentTaskWithOrder?.startSite != null && mCurrentTaskWithOrder?.endSite != null - && mCurrentTaskWithOrder?.currentStatus == TaskStatusEnum.StartTask.code - ) { - d(TAG, "updateLocalCalculateStation start") - val curTaskAndOrder = getCurrentTaskWithOrder() ?: return - if (curTaskAndOrder.startSite != null && curTaskAndOrder.endSite != null) { - val startStation = MogoLocation() - startStation.longitude = curTaskAndOrder.startSite!!.gcjLon - startStation.latitude = curTaskAndOrder.startSite!!.gcjLat - val endStation = MogoLocation() - endStation.longitude = curTaskAndOrder.endSite!!.gcjLon - endStation.latitude = curTaskAndOrder.endSite!!.gcjLat - setStationPoint(startStation, endStation, curTaskAndOrder.lineId) - } - } else { - d(TAG, "updateLocalCalculateStation stop") - if (mDriveToNearestStationTask == null){ - AmapNaviToDestinationModel.getInstance(mContext).destroyAmaNavi() - } - setStationPoint(null, null, -1L) + fun clearLocalCalculateStation(){ + d(TAG, "updateLocalCalculateStation stop") + if (mDriveToNearestStationTask == null){ + AmapNaviToDestinationModel.getInstance(mContext).destroyAmaNavi() } + setStationPoint(null, null, -1L) } fun queryOrderByOrderNo(orderNo: String) { @@ -1178,7 +1157,7 @@ object TaxiTaskModel { mControllerStatusCallback?.startOpenAutopilot() } - private fun initAutopilotControlParameters(): AutopilotControlParameters? { + fun initAutopilotControlParameters(): AutopilotControlParameters? { if (!checkCurrentTaskCondition()) { e(TAG, "no order or order is empty.") return null @@ -1326,12 +1305,19 @@ object TaxiTaskModel { clearAutopilotControlParameters() mIsArrivedSiteStartTag = false isRestartAutopilot = false + setBeautificationMode(false) + } + + /** + * 设置美化模式相关项开/关 + */ + fun setBeautificationMode(isOpen: Boolean){ if (FunctionBuildConfig.isDemoMode) { // 当美化模式(演示模式)开启时: 取消或订单已完成时,置false - FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false - CallerAutoPilotControlManager.setIgnoreConditionDraw(false) - CallerAutoPilotControlManager.setIPCDemoMode(false) - d(TAG, "美化模式-ignore:置为false(已完成or清除当前任务)") + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = isOpen + CallerAutoPilotControlManager.setIgnoreConditionDraw(isOpen) + CallerAutoPilotControlManager.setIPCDemoMode(isOpen) + d(TAG, "美化模式-ignore:置为$isOpen, true表示:到达出发点且已开启自动驾驶; false表示:已完成or清除当前任务") } } @@ -1362,57 +1348,7 @@ object TaxiTaskModel { } } } - - //运营模式(美化模式), 鹰眼数据同步 - private fun updateDemoModeAndAutopilotParameters(data: QueryCurrentTaskRespBean.Result?) { - if (data == null) { - return - } - - val endSite = data.endSite - - if (endSite != null) { - if (QueryCurrentTaskRespBean.isStartTaskType(data)) { - if (FunctionBuildConfig.isDemoMode) { - // 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true - FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true - CallerAutoPilotControlManager.setIgnoreConditionDraw(true) - CallerAutoPilotControlManager.setIPCDemoMode(true) - d(TAG, "美化模式-ignore:置为true(更新本地order信息)") - } - updateAutopilotControlParameters() - } - if (QueryCurrentTaskRespBean.isCompleteTaskType(data)) { - if (FunctionBuildConfig.isDemoMode) { - d(TAG, "setIPCDemoMode:false") - CallerAutoPilotControlManager.setIPCDemoMode(false) - } - clearAutopilotControlParameters() - } - } else { - if (FunctionBuildConfig.isDemoMode) { - d(TAG, "setIPCDemoMode:false") - CallerAutoPilotControlManager.setIPCDemoMode(false) - } - clearAutopilotControlParameters() - } - } - - /** - * 将业务订单信息保存,鹰眼可取用 - */ - private fun updateAutopilotControlParameters() { - val parameters = initAutopilotControlParameters() - if (null == parameters) { - e(TAG, "AutopilotControlParameters is empty.") - return - } - d(TAG, "AutopilotControlParameters is update.") - DebugView.printInfoMsg("[启自驾] updateAutopilotControlParameters调用成功") - updateAutopilotControlParameters(parameters) - } - - private fun clearAutopilotControlParameters() { + fun clearAutopilotControlParameters() { d(TAG, "AutopilotControlParameters is clear.") DebugView.printInfoMsg("[启自驾] clearAutopilotControlParameters调用成功") updateAutopilotControlParameters(null) From 2418847fe2c70e5a2f58cbe6a09d0e285d4562c8 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Tue, 17 Oct 2023 14:48:36 +0800 Subject: [PATCH 02/17] =?UTF-8?q?[6.1.0]=20=E4=BB=BB=E5=8A=A1=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E9=80=BB=E8=BE=91=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../taxi/ui/task/TaxiCurrentTaskViewModel.kt | 35 ++++++++++++++----- .../mogo/och/taxi/ui/task/TaxiTaskModel.kt | 2 +- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt index 54389a9df1..135ba9656e 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt @@ -282,15 +282,34 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } } - if (QueryCurrentTaskRespBean.isUserArriveAtStart(result)) { - TaxiTaskModel.removePrepareTaskDelay() - TaxiTaskModel.prepareNextTask(0,result?.endSite!!.siteId) - }else if (!QueryCurrentTaskRespBean.isOrderArriveAtStart(result) - || !QueryCurrentTaskRespBean.isOrderArriveAtEnd(result)){ + /** + * 如果当前任务是演练任务/到达上车点的情况, 则120s去拉取下一个任务 + * 如果当前任务是接驾任务, 且订单没有到乘客已上车状态, 则10s去拉取下一个任务 + * 如果当前任务是接驾任务,且订单到达乘客已上车状态, 则立马拉取下一个任务 + * 如果当前任务是送驾任务, 且订单已经到站状态, 则不拉取任务, 等司机点击服务完成后再拉取任务 + */ + +// if (QueryCurrentTaskRespBean.isUserArriveAtStart(result)) { +// TaxiTaskModel.removePrepareTaskDelay() +// TaxiTaskModel.prepareNextTask(0,result?.endSite!!.siteId) +// }else if (!QueryCurrentTaskRespBean.isOrderArriveAtStart(result) +// || !QueryCurrentTaskRespBean.isOrderArriveAtEnd(result)){ +// TaxiTaskModel.startPrepareTaskDelay( +// if (TaskTypeEnum.isToOrderStartTask(result)) +// TaxiUnmannedConst.START_AUTOPILOT_COUNTDOWN_INTERVAL +// else TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S, +// result?.endSite!!.siteId) +// } + + if (result?.taskType == TaskTypeEnum.ToOrderStartTask.code){ TaxiTaskModel.startPrepareTaskDelay( - if (TaskTypeEnum.isToOrderStartTask(result)) - TaxiUnmannedConst.START_AUTOPILOT_COUNTDOWN_INTERVAL - else TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S, + if (QueryCurrentTaskRespBean.isOrderArriveAtStart(result)) + 0 + else TaxiUnmannedConst.START_AUTOPILOT_COUNTDOWN_INTERVAL, + result?.endSite!!.siteId) + }else if (result?.taskType != TaskTypeEnum.ToOrderEndTask.code){ + TaxiTaskModel.startPrepareTaskDelay( + TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S, result?.endSite!!.siteId) } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt index f4a2759548..e8e5903ae4 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt @@ -744,7 +744,7 @@ object TaxiTaskModel { queryTaskTrajectoryByLineIds(linesIds.toTypedArray(), result.lineId) //自动去启动自驾, 拿到任务并且任务类型是演练和接驾任务 - if (result.currentStatus == TaskStatusEnum.GetTask.code && + if (QueryCurrentTaskRespBean.isGetTaskType(result) && result.taskType <= TaskTypeEnum.ToOrderStartTask.code ) { if (result.order == null || result.order!!.orderStatus < TaxiOrderStatusEnum.ArriveAtStart.code) { From 48bc32fd8c1afe83df6bc264ee4b5d9b9b67d257 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Thu, 19 Oct 2023 19:24:55 +0800 Subject: [PATCH 03/17] =?UTF-8?q?[6.1.0]=20=E4=BB=BB=E5=8A=A1=E6=8B=89?= =?UTF-8?q?=E5=8F=96=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../taxi/bean/TaxiDriverTaskWithOrderBean.kt | 17 +++++-- .../taxi/ui/task/TaxiCurrentTaskViewModel.kt | 46 +++++++++---------- .../mogo/och/taxi/ui/task/TaxiTaskModel.kt | 22 ++++----- 3 files changed, 45 insertions(+), 40 deletions(-) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverTaskWithOrderBean.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverTaskWithOrderBean.kt index cba01a3f71..cd9164a5d0 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverTaskWithOrderBean.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverTaskWithOrderBean.kt @@ -131,6 +131,15 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() { return data.order!!.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code } + fun isOrderOnTheWayToStart(data: Result?): Boolean { + if (data == null) { + return false + } + if (data.order == null) { + return false + } + return data.order!!.orderStatus == TaxiOrderStatusEnum.OnTheWayToStart.code + } /** * with order.orderStatus == ArriveAtStart */ @@ -144,7 +153,7 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() { return data.order!!.orderStatus == TaxiOrderStatusEnum.ArriveAtStart.code } - fun isUserArriveAtStart(data: Result?): Boolean { + fun isOrderUserArriveAtStart(data: Result?): Boolean { if (data == null) { return false } @@ -157,7 +166,7 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() { /** * with task.currentStatus == StartTask */ - fun isStartTaskType(data: Result?): Boolean { + fun isTaskStartTaskType(data: Result?): Boolean { if (data == null) { return false } @@ -167,7 +176,7 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() { /** * with task.currentStatus == CompleteTask */ - fun isCompleteTaskType(data: Result?): Boolean { + fun isTaskCompleteTaskType(data: Result?): Boolean { if (data == null) { return false } @@ -177,7 +186,7 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() { /** * with task.currentStatus == GetTask */ - fun isGetTaskType(data: Result?): Boolean { + fun isTaskGetTaskType(data: Result?): Boolean { if (data == null) { return false } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt index 135ba9656e..f2d90c6f1e 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt @@ -18,7 +18,6 @@ import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager import com.mogo.och.common.module.utils.ToastUtilsOch import com.mogo.och.common.module.voice.VoiceNotice -import com.mogo.och.common.module.wigets.StartAutopilotAnimationView import com.mogo.och.taxi.R import com.mogo.och.taxi.base.BaseViewModel import com.mogo.och.taxi.base.IUiIntent @@ -283,34 +282,31 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } /** - * 如果当前任务是演练任务/到达上车点的情况, 则120s去拉取下一个任务 - * 如果当前任务是接驾任务, 且订单没有到乘客已上车状态, 则10s去拉取下一个任务 - * 如果当前任务是接驾任务,且订单到达乘客已上车状态, 则立马拉取下一个任务 + * 如果当前任务是演练任务/到达上车点的情况, 无订单 则120s去拉取下一个任务 + * 如果当前任务是到达上车点的情况, 有订单 则120s去拉取下一个任务 + * 如果当前任务是演练任务/接驾任务, 有订单且订单没有到乘客已上车状态, 则10s去拉取下一个任务 + * 如果当前任务是演练任务/接驾任务, 有订单且订单到达乘客已上车状态, 则立马拉取下一个任务 * 如果当前任务是送驾任务, 且订单已经到站状态, 则不拉取任务, 等司机点击服务完成后再拉取任务 */ -// if (QueryCurrentTaskRespBean.isUserArriveAtStart(result)) { -// TaxiTaskModel.removePrepareTaskDelay() -// TaxiTaskModel.prepareNextTask(0,result?.endSite!!.siteId) -// }else if (!QueryCurrentTaskRespBean.isOrderArriveAtStart(result) -// || !QueryCurrentTaskRespBean.isOrderArriveAtEnd(result)){ -// TaxiTaskModel.startPrepareTaskDelay( -// if (TaskTypeEnum.isToOrderStartTask(result)) -// TaxiUnmannedConst.START_AUTOPILOT_COUNTDOWN_INTERVAL -// else TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S, -// result?.endSite!!.siteId) -// } + // 有订单-》根据订单状态拉取 + // 无订单-》直接120s拉 - if (result?.taskType == TaskTypeEnum.ToOrderStartTask.code){ - TaxiTaskModel.startPrepareTaskDelay( - if (QueryCurrentTaskRespBean.isOrderArriveAtStart(result)) - 0 - else TaxiUnmannedConst.START_AUTOPILOT_COUNTDOWN_INTERVAL, - result?.endSite!!.siteId) - }else if (result?.taskType != TaskTypeEnum.ToOrderEndTask.code){ - TaxiTaskModel.startPrepareTaskDelay( - TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S, - result?.endSite!!.siteId) + if (result?.order != null){ + if (QueryCurrentTaskRespBean.isOrderOnTheWayToStart(result)){ + TaxiTaskModel.startPrepareTaskDelay(TaxiUnmannedConst.START_AUTOPILOT_COUNTDOWN_INTERVAL, + result?.endSite!!.siteId) + }else if (QueryCurrentTaskRespBean.isOrderUserArriveAtStart(result)) { + TaxiTaskModel.startPrepareTaskDelay(0, result?.endSite!!.siteId) + } + }else{ + if (result?.taskType == TaskTypeEnum.None.code){ + TaxiTaskModel.startPrepareTaskDelay( + TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S, result?.endSite!!.siteId) + }else{ + TaxiTaskModel.startPrepareTaskDelay( + TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S, result?.endSite!!.siteId) + } } clearDemoModeAndACParameters() diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt index e8e5903ae4..443d9672f9 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt @@ -259,7 +259,7 @@ object TaxiTaskModel { if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { DebugView.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_RUNNING,meaning=自动驾驶中") mADASStatusCallback?.onAutopilotRunning() - if ((QueryCurrentTaskRespBean.isStartTaskType(mCurrentTaskWithOrder))) { + if ((QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder))) { TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent( isRestartAutopilot, true, @@ -274,7 +274,7 @@ object TaxiTaskModel { DebugView.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_ENABLE,meaning=可自动驾驶,人工干预状态") if ((FunctionBuildConfig.isDemoMode && checkCurrentTaskCondition() - && QueryCurrentTaskRespBean.isStartTaskType(mCurrentTaskWithOrder) + && QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder) ) ) { // 当美化模式(演示模式)开启时:且有订单、且为去往目的地状态,维持自动驾驶icon开启状态 @@ -285,7 +285,7 @@ object TaxiTaskModel { DebugView.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_DISABLE,meaning=不可自动驾驶") if ((FunctionBuildConfig.isDemoMode && checkCurrentTaskCondition() - && QueryCurrentTaskRespBean.isStartTaskType(mCurrentTaskWithOrder) + && QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder) ) ) { // 当美化模式(演示模式)开启时:且有订单、且为去往目的地状态,维持自动驾驶icon开启状态 @@ -296,7 +296,7 @@ object TaxiTaskModel { DebugView.printInfoMsg("[自驾状态变化] afterValue=STATUS_PARALLEL_DRIVING,meaning=平行驾驶中") if (FunctionBuildConfig.isDemoMode) { if ((checkCurrentTaskCondition() - && QueryCurrentTaskRespBean.isStartTaskType( + && QueryCurrentTaskRespBean.isTaskStartTaskType( mCurrentTaskWithOrder ) ) @@ -357,7 +357,7 @@ object TaxiTaskModel { } if (checkCurrentTaskCondition() - && QueryCurrentTaskRespBean.isStartTaskType(mCurrentTaskWithOrder) + && QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder) ) { judgeTaskEndSiteStation(mogoLocation) } @@ -704,7 +704,7 @@ object TaxiTaskModel { } //开始任务处理 - if (QueryCurrentTaskRespBean.isStartTaskType(result)){ + if (QueryCurrentTaskRespBean.isTaskStartTaskType(result)){ mTaxiTaskWithOrderCallbackMap.forEach { val listener = it.value listener.onTaskStarted(result) @@ -715,7 +715,7 @@ object TaxiTaskModel { //8.29更新: 当前任务完成且订单状态为乘客已上车, 则立马去拉取任务 不再等120s,否则送驾任务要等120s后才能去执行 // 主要是解决A-B演练任务同时接到A-B订单状态流转的问题 //注意: 需要去除到达乘客上车点的节点, 这个节点不拉取任务 - if (QueryCurrentTaskRespBean.isCompleteTaskType(result)) { + if (QueryCurrentTaskRespBean.isTaskCompleteTaskType(result)) { mIsArrivedSiteStartTag = false //任务完成说明到站, 更新到站标识位, 不再到站接口请求成功更新 mADASStatusCallback?.updateAutopilotStatus() mTaxiTaskWithOrderCallbackMap.forEach { @@ -744,7 +744,7 @@ object TaxiTaskModel { queryTaskTrajectoryByLineIds(linesIds.toTypedArray(), result.lineId) //自动去启动自驾, 拿到任务并且任务类型是演练和接驾任务 - if (QueryCurrentTaskRespBean.isGetTaskType(result) && + if (QueryCurrentTaskRespBean.isTaskGetTaskType(result) && result.taskType <= TaskTypeEnum.ToOrderStartTask.code ) { if (result.order == null || result.order!!.orderStatus < TaxiOrderStatusEnum.ArriveAtStart.code) { @@ -1067,9 +1067,9 @@ object TaxiTaskModel { fun startAutopilotByClick() { //订单状态流转成功, 点击了开启自驾按钮, 启动自驾 - if (QueryCurrentTaskRespBean.isStartTaskType(mCurrentTaskWithOrder)) { + if (QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder)) { startAutoPilot() - } else if (QueryCurrentTaskRespBean.isGetTaskType(mCurrentTaskWithOrder)) { + } else if (QueryCurrentTaskRespBean.isTaskGetTaskType(mCurrentTaskWithOrder)) { startTask(mCurrentTaskWithOrder!!.lineId, true) } else { e(TAG, "task currentStatus is not StartTask.") @@ -1384,7 +1384,7 @@ object TaxiTaskModel { d( TAG, "stopAutoStartAutopilot = ${mCurrentTaskWithOrder?.currentStatus}" ) - if (QueryCurrentTaskRespBean.isGetTaskType(mCurrentTaskWithOrder)) { + if (QueryCurrentTaskRespBean.isTaskGetTaskType(mCurrentTaskWithOrder)) { mControllerStatusCallback?.stopOpenAutopilotNonManual() mTaxiTaskWithOrderCallbackMap.forEach { val listener = it.value From 1791b9c19cbf400ff63a607bad42477a3ac1a6f7 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Fri, 20 Oct 2023 16:43:04 +0800 Subject: [PATCH 04/17] =?UTF-8?q?[6.1.0=E9=97=AE=E9=A2=98=E4=BC=98?= =?UTF-8?q?=E5=8C=96]=20=E8=A7=A3=E5=86=B3prepareTask=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=8B=89=E5=8F=96=E5=87=BA=E9=94=99UI=E9=97=AA=E7=83=81?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../taxi/ui/task/TaxiCurrentTaskFragment.kt | 5 ++++ .../mogo/och/taxi/ui/task/TaxiTaskModel.kt | 24 ++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt index 72a2601d09..f66a4a610b 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt @@ -217,6 +217,11 @@ class TaxiCurrentTaskFragment : BaseFragment(), return } + if (mPrepareTasCountDownTimer != null){ + mPrepareTasCountDownTimer?.cancel() + mPrepareTasCountDownTimer = null + } + prepareTaskCountdownTv.visibility = View.VISIBLE mPrepareTasCountDownTimer = object : CountDownTimer(millisInFuture, 1000L) {// 5倒计时后开启自驾 diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt index 443d9672f9..a5f1ed495d 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt @@ -120,6 +120,8 @@ object TaxiTaskModel { private var mIsArrivedSiteStartTag = false //到站接口请求标志位,防止围栏触发多次调用到站接口, true 接口请求, false : 接口请求完成 + private var isPrepareingNextTask = false // 拉取任务接口标志位 + fun addTaskWithOrderListener(tag: String, listener: ITaxiTaskWithOrderCallback) { if (mTaxiTaskWithOrderCallbackMap.containsKey(tag)) { return @@ -881,7 +883,14 @@ object TaxiTaskModel { }) } - fun prepareNextTask(delayTime: Long, siteId: Long) { + fun prepareNextTask(delayTime: Long, siteId: Long) { + + if (isPrepareingNextTask){ + DebugView.printInfoMsg("[PrepareNextTask] 请求调用中, 直接return") + d(TAG, "[PrepareNextTask] 请求调用中, 直接return") + return + } + isPrepareingNextTask = false DebugView.printInfoMsg("[PrepareNextTask] 准备发送请求, siteId=$siteId") TaxiTaskWithOrderServiceManager.prepareTask( mContext, @@ -894,11 +903,24 @@ object TaxiTaskModel { "isCarServingStatus = ${TaxiCarServingStatusManager.isCarServingStatus()}" ) DebugView.printInfoMsg("[PrepareNextTask] 请求success") + isPrepareingNextTask = false } override fun onFail(code: Int, msg: String?) { DebugView.printErrorMsg("[PrepareNextTask] 请求fail, code=$code ,msg=$msg") d(TAG, "prepareNextTask onFail: code=$code ,msg=$msg") + isPrepareingNextTask = false + if (LoginStatusManager.isLogin() && TaxiCarServingStatusManager.isCarServingStatus()) { + startPrepareTaskDelay(delayTime, siteId) + } + } + + override fun onError() { + super.onError() + DebugView.printErrorMsg("[PrepareNextTask] 请求onError, " + + "net = ${NetworkUtils.isConnected(mContext)}") + d(TAG, "prepareNextTask onError, , net = ${NetworkUtils.isConnected(mContext)}") + isPrepareingNextTask = false if (LoginStatusManager.isLogin() && TaxiCarServingStatusManager.isCarServingStatus()) { startPrepareTaskDelay(delayTime, siteId) } From 50cff456f691c30825031a5752dd93a9591785f6 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Fri, 20 Oct 2023 16:51:11 +0800 Subject: [PATCH 05/17] =?UTF-8?q?[=E5=88=B0=E7=AB=99=E6=8B=89=E5=8F=96?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1]=20=E5=A2=9E=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/taxi/ui/task/TaxiCurrentTaskViewModel.kt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt index f2d90c6f1e..fd319519f3 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt @@ -282,16 +282,16 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } /** - * 如果当前任务是演练任务/到达上车点的情况, 无订单 则120s去拉取下一个任务 - * 如果当前任务是到达上车点的情况, 有订单 则120s去拉取下一个任务 - * 如果当前任务是演练任务/接驾任务, 有订单且订单没有到乘客已上车状态, 则10s去拉取下一个任务 - * 如果当前任务是演练任务/接驾任务, 有订单且订单到达乘客已上车状态, 则立马拉取下一个任务 - * 如果当前任务是送驾任务, 且订单已经到站状态, 则不拉取任务, 等司机点击服务完成后再拉取任务 + * 1、有订单下(表示当前有订单或者未来有要执行的订单): + * 接驾任务需要10s拉取, 拉取时机在车辆前往上车点状态 + * 送驾任务需要立即拉取, 拉取时机在乘客已上车状态 + * 2、在没有订单情况下 + * 若当前到站的是前往标定站点, 则120s去拉取任务 + * 若当前是演练任务到站, 120s去拉取任务 + * 若当前是接驾任务到站, 此情况肯定是有订单的, 则走1 + * 若当前到站的是送驾任务, 不去拉取, 需等待司机点击服务完成按钮后拉取 */ - // 有订单-》根据订单状态拉取 - // 无订单-》直接120s拉 - if (result?.order != null){ if (QueryCurrentTaskRespBean.isOrderOnTheWayToStart(result)){ TaxiTaskModel.startPrepareTaskDelay(TaxiUnmannedConst.START_AUTOPILOT_COUNTDOWN_INTERVAL, From 376162db449ed7306d569c5963fc6d6646aa2c02 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Fri, 20 Oct 2023 17:10:45 +0800 Subject: [PATCH 06/17] =?UTF-8?q?[6.1.0=E4=BC=98=E5=8C=96]mPresenter=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/och/taxi/ui/base/TaxiFragment.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt index 580cee3f6d..f2c0efba72 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt @@ -57,7 +57,7 @@ class TaxiFragment : BaseTaxiTabFragment(), fun changeOverview(eventLogout: EventLogout) { if (eventLogout.messgae == EventLogout.LOGOUT_TYPE) { d(SceneConstant.M_TAXI + TAG, "changeOverview Event消息去登出") - mPresenter.logout() + mPresenter?.logout() } } @@ -107,12 +107,12 @@ class TaxiFragment : BaseTaxiTabFragment(), // 在自动驾驶中,或者自己确认车辆环境可开启自动驾驶 则可点击 if (!isStarting) { d(SceneConstant.M_TAXI + TAG, "startAutopilot") - mPresenter.startAutoPilot() + mPresenter?.startAutoPilot() } } override fun pauseStartAutopilot() { - mPresenter.pauseStartAutopilot() + mPresenter?.pauseStartAutopilot() } override fun resumeStartAutopilot(remainingTime: Long) { @@ -120,7 +120,7 @@ class TaxiFragment : BaseTaxiTabFragment(), } override fun startNaviToEndStation(isShow: Boolean) { - mPresenter.startNaviToEndStation(isShow) + mPresenter?.startNaviToEndStation(isShow) } override fun initViews() { @@ -134,7 +134,7 @@ class TaxiFragment : BaseTaxiTabFragment(), } override fun stopAutoStartAutopilot() { - mPresenter.stopAutoStartAutopilot() + mPresenter?.stopAutoStartAutopilot() } private fun initFlowEvent() { @@ -275,7 +275,7 @@ class TaxiFragment : BaseTaxiTabFragment(), findViewById(R.id.test_bar_on_the_way_to_end)?.setOnClickListener { if (!isStarting) { - mPresenter.startAutoPilot() + mPresenter?.startAutoPilot() } TaxiTaskModel.mockOnTheWayToEndStation() } From 739b4d79ac73a13bdd97b65826191b0ea586473e Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Mon, 23 Oct 2023 19:29:05 +0800 Subject: [PATCH 07/17] =?UTF-8?q?[6.1.2=E4=BC=98=E5=8C=96]=20=E5=BC=80?= =?UTF-8?q?=E5=A7=8B=E5=88=B0=E7=AB=99=E7=AB=8B=E9=A9=AC=E5=88=B0=E7=AB=99?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../taxi/ui/task/TaxiCurrentTaskViewModel.kt | 6 +-- .../mogo/och/taxi/ui/task/TaxiTaskModel.kt | 39 ++++++++++++++++--- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt index fd319519f3..80ed1360a9 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt @@ -103,19 +103,19 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } private fun jumpPassengerCheck() { - DebugView.printInfoMsg("[开始服务] 准备发送请求") + DebugView.printInfoMsg("[跳过乘客验证] 准备发送请求") val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() currentTaskWithOrder?.order?.also { TaxiTaskWithOrderServiceManager.jumpPassengerCheck(AbsMogoApplication.getApp().applicationContext, it.orderNo, object : OchCommonServiceCallback { override fun onSuccess(data: BaseData?) { - DebugView.printInfoMsg("[开始服务] 请求success") + DebugView.printInfoMsg("[跳过乘客验证] 请求success") d(TAG, "jumpPassengerCheck onSuccess:") } override fun onFail(code: Int, msg: String?) { - DebugView.printInfoMsg("[开始服务] 请求fail, code=$code, msg=$msg") + DebugView.printInfoMsg("[跳过乘客验证] 请求fail, code=$code, msg=$msg") d(TAG, "jumpPassengerCheck onFail: code=$code, msg=$msg") } }) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt index a5f1ed495d..a617f6e7e7 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt @@ -325,7 +325,34 @@ object TaxiTaskModel { ) return } - autopilotArriveAtStation() + + //围栏已经到站, 拉取到下一个任务, 此时自驾的到站才传递过来, 导致直接上报了当前任务的终点站到站, 造成任务一开始立马到站的问题 + //解决方案: 根据自驾到站的经纬度和当前任务终点站的坐标比对, 如果距离在15米内, 则任务到站正确, 否则不请求到站 + if (!checkCurrentTaskCondition()) return + val endSiteLat: Double? = mCurrentTaskWithOrder?.endSite?.gcjLat + val endSiteLon: Double? = mCurrentTaskWithOrder?.endSite?.gcjLon + val mapEndSiteLatWgs: Double? = arrivalNotification?.endLocation?.latitude + val mapEndSiteLonWgs: Double? = arrivalNotification?.endLocation?.longitude + if (endSiteLon != null && endSiteLat != null && mapEndSiteLonWgs != null && mapEndSiteLatWgs != null){ + + var latLngs = CoordinateUtils.transformWgsToGcj(mapEndSiteLatWgs,mapEndSiteLonWgs) + + val distance = CoordinateUtils.calculateLineDistance( + endSiteLon, endSiteLat, + latLngs[0], latLngs[1] + ).toDouble() + if (distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE){// 两坐标小于15米 + DebugView.printInfoMsg("[MAP到站通知] 到站坐标和任务终点15米内, 请求到站") + autopilotArriveAtStation() + }else{ + DebugView.printInfoMsg("[MAP到站通知] 到站坐标和任务终点不一致, 不请求到站") + } + }else{ + DebugView.printInfoMsg("[MAP到站通知] endSiteLat = $endSiteLat, endSiteLon = $endSiteLon, " + + "mapEndSiteLat = $mapEndSiteLatWgs, mapEndSiteLon = $mapEndSiteLonWgs") + } + + if (FunctionBuildConfig.isDemoMode) { // 当美化模式(演示模式)开启时: 到达目的地,置false // 2022.10.08 到达目的地时候取消自动起自驾, 服务完成取消引导线和自动驾驶按钮状态 @@ -550,8 +577,10 @@ object TaxiTaskModel { isArrivedNearestStation: Boolean = false ) { if (mIsArrivedSiteStartTag) { - DebugView.printInfoMsg("arriveSite接口正在调用中") - i(TAG, message = "arriveSite接口正在调用中 mIsArrivedSite = $mIsArrivedSiteStartTag") + DebugView.printInfoMsg("[上报ArriveSite] arriveSite接口正在调用中, 跳过本次请求" + + ", siteId=$siteId, isArriveAtEndSite=$isArriveAtEndSite") + i(TAG, message = "arriveSite接口正在调用中, 跳过本次请求 mIsArrivedSite = $mIsArrivedSiteStartTag" + + ", siteId=$siteId, isArriveAtEndSite=$isArriveAtEndSite") return } mIsArrivedSiteStartTag = true @@ -1234,7 +1263,7 @@ object TaxiTaskModel { } private fun judgeTaskEndSiteStation(currentLocation: MogoLocation) { - if (!checkCurrentTaskCondition()) { + if (!checkCurrentTaskCondition() || !QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder)) { return } val endSite = mCurrentTaskWithOrder!!.endSite ?: return @@ -1261,7 +1290,7 @@ object TaxiTaskModel { ) if (!checkCurrentTaskCondition() - || getCurTaskStatus() != TaskStatusEnum.StartTask.code + || !QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder) ) { i(TAG, "task null or TaskStatus = ${getCurTaskStatus()}") return From 91c895ad0f909fa1da69c29893273ca7080c5801 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Tue, 24 Oct 2023 14:30:21 +0800 Subject: [PATCH 08/17] [6.1.2] taxi fix bug of rain mode in mapview --- .../main/res/layout/taxi_base_fragment.xml | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml b/OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml index 502f11874d..2299ba82c5 100644 --- a/OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml +++ b/OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml @@ -9,16 +9,17 @@ + android:layout_height="match_parent" + app:isWeatherEnable="false" /> + app:layout_constraintStart_toStartOf="parent" + app:locationIcon3DRes="@raw/chuzuche" /> + android:background="@drawable/bad_case_selector_och" /> + app:roma_open_bg="@drawable/taxi_operation_status_select_bg" /> - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + +