diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java index a3d85fbfd8..0c8b505082 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java @@ -54,7 +54,20 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo } public String getAutopilotUnAbilityReason(){ - return unableAutopilotReasons == null ? "" : unableAutopilotReasons.toString();//TODO 临时toString 需要拼接数据 + try { + if(unableAutopilotReasons==null||unableAutopilotReasons.isEmpty()){ + return "未知异常"; + }else { + StringBuilder stringBuilder = new StringBuilder(); + for (UnableAutopilotReason unableAutopilotReason : unableAutopilotReasons) { + stringBuilder.append(unableAutopilotReason.toString()).append("\n"); + } + return stringBuilder.toString(); + } + }catch (Exception e){ + e.printStackTrace(); + return "未知异常"; + } } public String getStartFailedCode() { diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/DriverConnectStatusView.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/DriverConnectStatusView.kt new file mode 100644 index 0000000000..dcfd21e62c --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/DriverConnectStatusView.kt @@ -0,0 +1,47 @@ +package com.mogo.och.common.module.wigets + +import android.content.Context +import android.util.AttributeSet +import android.view.View +import androidx.appcompat.widget.AppCompatImageView +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import com.mogo.och.common.module.R +import com.mogo.och.common.module.manager.loopmanager.BizLoopManager +import com.mogo.och.common.module.manager.loopmanager.LoopInfo + +class DriverConnectStatusView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : AppCompatImageView(context, attrs, defStyleAttr) { + companion object { + const val TAG = "StatusBarView" + } + + init { + setImageResource(R.drawable.driver_connect_statis) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + BizLoopManager.setLoopFunction(TAG, LoopInfo(3, ::showConnectStatusWithDriver)) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + BizLoopManager.removeLoopFunction(TAG) + } + + private fun showConnectStatusWithDriver(){ + UiThreadHandler.post { + CallerLogger.d(TAG,"司机屏连接状态:${CallerTelematicManager.getClientConnStatus()}") + visibility = if(CallerTelematicManager.getClientConnStatus()){ + View.GONE + }else{ + View.VISIBLE + } + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/res/drawable/driver_connect_statis.xml b/OCH/mogo-och-common-module/src/main/res/drawable/driver_connect_statis.xml new file mode 100644 index 0000000000..3dde439fdb --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/res/drawable/driver_connect_statis.xml @@ -0,0 +1,5 @@ + + + diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt index 15cc6dad4f..078645cb83 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt @@ -38,6 +38,7 @@ class TaxiPassengerConst { const val EVENT_PARAM_START_NAME = "start_name" const val EVENT_PARAM_END_NAME = "end_name" const val EVENT_PARAM_ORDER_NUMBER = "order_num" + const val EVENT_PARAM_LINE_ID = "line_id" const val EVENT_PARAM_START_RESULT = "start_autopilot" // true/false const val EVENT_PARAM_START_FAILURE_CODE = "start_autopilot_failure_code" // 启动自驾失败code const val EVENT_PARAM_START_FAILURE_MSG = "start_autopilot_failure_msg" // 启动自驾失败原因 diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt index 2451c64151..acf69ba1c8 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt @@ -80,7 +80,9 @@ object AutopilotManager : IMoGoAutopilotStatusListener { + " ,startSiteName=" + TaxiPassengerModel.currentOCHOrder!!.startSiteAddr + " ,endSiteName=" + TaxiPassengerModel.currentOCHOrder!!.endSiteAddr ) - TaxiPassengerAnalyticsManager.triggerStartAutopilotEvent(false, false, TaxiPassengerModel.currentOCHOrder!!.startSiteAddr, TaxiPassengerModel.currentOCHOrder!!.endSiteAddr, TaxiPassengerModel.currentOCHOrder!!.orderNo) + TaxiPassengerAnalyticsManager.triggerStartAutopilotEvent(false, false, TaxiPassengerModel.currentOCHOrder!!.startSiteAddr, + TaxiPassengerModel.currentOCHOrder!!.endSiteAddr, TaxiPassengerModel.currentOCHOrder!!.orderNo, + TaxiPassengerModel.currentOCHOrder!!.lineId) } private fun initAutopilotControlParameters(): AutopilotControlParameters? { @@ -162,7 +164,8 @@ object AutopilotManager : IMoGoAutopilotStatusListener { true, TaxiPassengerModel.currentOCHOrder!!.startSiteAddr, TaxiPassengerModel.currentOCHOrder!!.endSiteAddr, - TaxiPassengerModel.currentOCHOrder!!.orderNo + TaxiPassengerModel.currentOCHOrder!!.orderNo, + TaxiPassengerModel.currentOCHOrder!!.lineId ) //startServicePilotDone() } diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.kt index 5b4f60df6b..6116cf7383 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.kt @@ -64,7 +64,8 @@ object TaxiPassengerAnalyticsManager { * @param restart false(点击'开始服务'启动)/true(接管后点击'自动驾驶'按钮启动) * @param send 是否直接发送埋点(15s内开启成功则直接发送成功埋点) */ - fun triggerStartAutopilotEvent(restart: Boolean, send: Boolean, startName: String, endName: String, orderNo: String) { + fun triggerStartAutopilotEvent(restart: Boolean, send: Boolean, startName: String, endName: String, + orderNo: String, lineId: Long) { mStartAutopilotKey = if (restart) TaxiPassengerConst.EVENT_KEY_RESTART_AUTOPILOT else TaxiPassengerConst.EVENT_KEY_START_SERVICE if (send) { @@ -86,6 +87,7 @@ object TaxiPassengerAnalyticsManager { mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_START_NAME] = startName mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_END_NAME] = endName mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_ORDER_NUMBER] = orderNo + mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_LINE_ID] = lineId startAutopiloTimeOut = RxUtils.createSubscribeOnOwnThread(TaxiPassengerConst.LOOP_PERIOD_15S) { // 15s内未开启,上报失败埋点 triggerStartAutopilotFailureEvent("", "15s后app等待超时") diff --git a/OCH/taxi/passenger/src/main/res/layout/taxi_p_statusview.xml b/OCH/taxi/passenger/src/main/res/layout/taxi_p_statusview.xml index ecd2990ddc..5b75be9662 100644 --- a/OCH/taxi/passenger/src/main/res/layout/taxi_p_statusview.xml +++ b/OCH/taxi/passenger/src/main/res/layout/taxi_p_statusview.xml @@ -8,6 +8,15 @@ tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout" tools:ignore="MissingDefaultResource"> + + + (), private fun cancelOrder(cancelType: Int) { val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() currentTaskWithOrder?.order?.also { - cancelOrder(AbsMogoApplication.getApp().applicationContext, - it.orderNo, - cancelType, - object : OchCommonServiceCallback { - override fun onSuccess(data: BaseData?) { - d(TAG, "handleCancelOrder() = onSuccess") - } - - override fun onFail(code: Int, msg: String?) { - d(TAG, "handleCancelOrder() $code $msg") - } - }) + TaxiTaskModel.cancelOrder(it.orderNo,cancelType) } } @@ -220,7 +209,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), override fun onOrderCancel() { VoiceNotice.showNotice("订单已经取消") - updateTaskAndOrderUi(null) +// updateTaskAndOrderUi(null) } override fun onOrderArriveAtEnd(orderNo: String) { @@ -244,7 +233,6 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), override fun onStartAutopilot() { UiThreadHandler.postDelayed({ startTask() //状态流转 - TaxiTaskModel.startAutoPilot() //自驾开启 VoiceNotice.showNotice("车辆正在自动开启自动驾驶") }, TaxiUnmannedConst.START_AUTOPILOT_COUNTDOWN_INTERVAL) // 10s后开启自驾, 状态流转 } @@ -253,12 +241,17 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), driveToNearestStationTask: StartServiceRespBean.Result?, currentTaskWithOrder: QueryCurrentTaskRespBean.Result? ) { - if (currentTaskWithOrder?.endSite != null && currentTaskWithOrder.startSite != null && currentTaskWithOrder.currentStatus < TaskStatusEnum.CompleteTask.code) { + if (currentTaskWithOrder?.endSite != null && currentTaskWithOrder.startSite != null + && currentTaskWithOrder.currentStatus < TaskStatusEnum.CompleteTask.code) { VoiceNotice.showNotice("暂停接单啦!要完成当前订单哦") } else { VoiceNotice.showNotice("暂停接单啦") } // TODO 如果当前有订单就不要刷新 + if (currentTaskWithOrder?.startSite != null && + currentTaskWithOrder.endSite != null){ + return + } updateDriveToNearestStationTaskUI(driveToNearestStationTask) } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiNextTaskFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiNextTaskFragment.kt index f81f02638c..1951dbf795 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiNextTaskFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiNextTaskFragment.kt @@ -7,6 +7,7 @@ import android.view.View import androidx.core.content.ContextCompat import com.mogo.commons.mvp.BaseFragment import com.mogo.eagle.core.function.main.MainMoGoApplication +import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.och.taxi.R import com.mogo.och.taxi.bean.OrderDetail @@ -14,6 +15,7 @@ import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean import com.mogo.och.taxi.constant.TaskStatusEnum import com.mogo.och.taxi.constant.TaskTypeEnum import com.mogo.och.taxi.utils.TaskUtils +import kotlinx.android.synthetic.main.task_fragment_current.cancelOrder import kotlinx.android.synthetic.main.task_fragment_current.endStationName import kotlinx.android.synthetic.main.task_fragment_current.mCurrentTaskLayout import kotlinx.android.synthetic.main.task_fragment_current.naviToEnd @@ -49,6 +51,17 @@ class TaxiNextTaskFragment : BaseFragment() { } override fun initViews() { + cancelOrder.onClick { //取消待服务订单 + val currentWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() + if (currentWithOrder?.order != null) { + val order = currentWithOrder.order + activity?.also { + TaxiOrderCancelDialog(it, order!!.orderStatus) { type -> + TaxiTaskModel.cancelOrder(order.orderNo,type) + }.show() + } + } + } showNoNextTaskView() } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiOrderCancelDialog.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiOrderCancelDialog.java index 64e8a5a649..58d8a05621 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiOrderCancelDialog.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiOrderCancelDialog.java @@ -53,6 +53,11 @@ public class TaxiOrderCancelDialog extends AlertDialog implements View.OnClickLi private void initReasonArray() { TaxiOrderStatusEnum ochStatus = TaxiOrderStatusEnum.valueOf(mOrderStatus); switch (ochStatus) { + case None: + mContentArrays = new String[]{TaxiOrderCancelReasons.BookPassengerCancel.getMsg(), + TaxiOrderCancelReasons.CarBroken.getMsg(), TaxiOrderCancelReasons.BookJourneyConflict.getMsg(), + TaxiOrderCancelReasons.BatteryLow.getMsg(), TaxiOrderCancelReasons.BookOther.getMsg()}; + return; case OnTheWayToStart: mContentArrays = new String[]{TaxiOrderCancelReasons.CarBroken.getMsg(), TaxiOrderCancelReasons.DeviceBroken.getMsg(), TaxiOrderCancelReasons.BatteryLow.getMsg(), TaxiOrderCancelReasons.DriverIsIll.getMsg(), 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 f57b295596..7b85c8023e 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 @@ -675,21 +675,26 @@ object TaxiTaskModel { // 任务为空 if (result.endSite == null && result.order == null) { d(TAG, "queryCurrentTaskOnce: 任务为空") - mCurrentTaskWithOrder = null - - mTaxiTaskWithOrderCallbackMap.forEach { - val listener = it.value - listener.onTaskWithOrderDataChanged(null) +// mCurrentTaskWithOrder = null + if (mDriveToNearestStationTask == null) { + mTaxiTaskWithOrderCallbackMap.forEach { + val listener = it.value + listener.onTaskWithOrderDataChanged(null) + } } return } - //当前任务完成且订单状态到达乘客上车点, 则立马去拉取任务 不再等30s,否则送驾任务要等30s后才能去执行 - if (result?.currentStatus == TaskStatusEnum.CompleteTask.code) { + //当前任务完成且订单状态到达乘客上车点, 则立马去拉取任务 不再等120s,否则送驾任务要等120s后才能去执行(8.29废) + //8.29更新: 当前任务完成且订单状态为乘客已上车, 则立马去拉取任务 不再等120s,否则送驾任务要等120s后才能去执行 + // 主要是解决A-B演练任务同时接到A-B订单状态流转的问题 + //注意: 需要去除到达乘客上车点的节点, 这个节点不拉取任务 + if (result?.currentStatus == TaskStatusEnum.CompleteTask.code + && !QueryCurrentTaskRespBean.isOrderArriveAtStart(result)) { mTaxiTaskWithOrderCallbackMap.forEach { val listener = it.value listener.onTaskCompleted( - QueryCurrentTaskRespBean.isOrderArriveAtStart( + QueryCurrentTaskRespBean.isUserArriveAtStart( result ), result.endSite!!.siteId @@ -747,6 +752,23 @@ object TaxiTaskModel { }) } + /** + * 取消订单 进行中/待服务 + */ + fun cancelOrder(orderNo: String,cancelType: Int){ + TaxiTaskWithOrderServiceManager.cancelOrder(AbsMogoApplication.getApp().applicationContext, + orderNo, cancelType, + object : OchCommonServiceCallback { + override fun onSuccess(data: BaseData?) { + d(TAG, "handleCancelOrder() = onSuccess") + } + + override fun onFail(code: Int, msg: String?) { + d(TAG, "handleCancelOrder() $code $msg") + } + }) + } + fun updateLocalCalculateStation() { if (mCurrentTaskWithOrder == null) return if (mCurrentTaskWithOrder!!.startSite != null && mCurrentTaskWithOrder!!.endSite != null @@ -776,7 +798,7 @@ object TaxiTaskModel { when (data.data.orderStatus) { TaxiOrderStatusEnum.Cancel.code -> { //更新本地标志位 - mCurrentTaskWithOrder?.order = null + mCurrentTaskWithOrder = null mTaxiTaskWithOrderCallbackMap.forEach { val listener = it.value listener.onOrderCancel() @@ -795,7 +817,7 @@ object TaxiTaskModel { TaxiOrderStatusEnum.JourneyCompleted.code -> { //更新本地标志位 - mCurrentTaskWithOrder?.order = null + mCurrentTaskWithOrder = null mTaxiTaskWithOrderCallbackMap.forEach { val listener = it.value listener.onOrderJourneyCompleted() @@ -819,6 +841,7 @@ object TaxiTaskModel { lineId, object : OchCommonServiceCallback { override fun onSuccess(data: BaseData?) { + startAutoPilot() //自驾开启 d(TAG, "startTask onSuccess: data=${GsonUtil.jsonFromObject(data)}") } @@ -1109,8 +1132,8 @@ object TaxiTaskModel { "judgeEndStation() stationAngle = $stationAngle" ) - if ((!checkCurrentTaskCondition() - || (getCurTaskStatus() == TaskStatusEnum.StartTask.code)) + if (!checkCurrentTaskCondition() + || getCurTaskStatus() != TaskStatusEnum.StartTask.code ) { i(TAG, "task null or TaskStatus = ${getCurTaskStatus()}") return diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt index 18dafa30be..4a12e389ae 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt @@ -27,6 +27,7 @@ class TaxiPassengerConst { const val EVENT_PARAM_START_NAME = "start_name" const val EVENT_PARAM_END_NAME = "end_name" const val EVENT_PARAM_ORDER_NUMBER = "order_num" + const val EVENT_PARAM_LINE_ID = "line_id" const val EVENT_PARAM_START_RESULT = "start_autopilot" // true/false const val EVENT_PARAM_START_FAILURE_CODE = "start_autopilot_failure_code" // 启动自驾失败code const val EVENT_PARAM_START_FAILURE_MSG = "start_autopilot_failure_msg" // 启动自驾失败原因 @@ -38,6 +39,7 @@ class TaxiPassengerConst { const val EVENT_PARAM_UNABLE_START_REASON = "unable_start_reason" //任务类型 + const val TaskType_NONE = 0 // 无任务 const val TaskType_VIRTUAL = 1 // 虚拟任务 const val TaskType_DRIVE_TO_START = 2 // 接驾任务 const val TaskType_DRIVE_TO_END = 3 //送驾任务 diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt index d719e36932..15655bb16e 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt @@ -86,7 +86,8 @@ object AutopilotManager : IMoGoAutopilotStatusListener { false, TaxiPassengerModel.currentOCHOrder!!.orderStartSite.siteName, TaxiPassengerModel.currentOCHOrder!!.orderEndSite.siteName, - TaxiPassengerModel.currentOCHOrder!!.orderNo + TaxiPassengerModel.currentOCHOrder!!.orderNo, + TaxiPassengerModel.currentLineId ) } @@ -173,7 +174,8 @@ object AutopilotManager : IMoGoAutopilotStatusListener { true, TaxiPassengerModel.currentOCHOrder!!.orderStartSite.siteName, TaxiPassengerModel.currentOCHOrder!!.orderEndSite.siteName, - TaxiPassengerModel.currentOCHOrder!!.orderNo + TaxiPassengerModel.currentOCHOrder!!.orderNo, + TaxiPassengerModel.currentLineId ) //startServicePilotDone() } diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt index c34839a75f..31c9433bf2 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt @@ -35,6 +35,8 @@ import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBea import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst.Companion.TaskType_DRIVE_TO_END +import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst.Companion.TaskType_NONE +import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst.Companion.TaskType_VIRTUAL import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum.Companion.valueOf import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceManager @@ -154,13 +156,25 @@ object TaxiPassengerModel { TaxiPassengerServiceManager.queryOrdersInAndWaitService( object : OchCommonServiceCallback { override fun onSuccess(data: TaxiPassengerOrdersInServiceQueryRespBean) { - d(M_TAXI_P + TAG, "queryInAndWaitOrders data.data=${GsonUtils.toJson(data.data)}") - //目前后端将一个订单拆分成了多个任务,乘客屏只关心 送驾 类型的任务,这里过滤其他任务避免干扰 - if (data.data.taskType != TaskType_DRIVE_TO_END) { - d(M_TAXI_P + TAG, "queryInAndWaitOrders data.taskType=${data.data.taskType}, discard data") + d( + M_TAXI_P + TAG, + "queryInAndWaitOrders data.data=${GsonUtils.toJson(data.data)}" + ) + //目前后端将一个订单拆分成了多个任务,乘客屏只关心 送驾 类型的任务 + //20230829 后端修改了逻辑,在乘客屏startTask后taskType才会变成3 + if (data.data.taskType == TaskType_NONE || + data.data.taskType == TaskType_VIRTUAL + ) { + d( + M_TAXI_P + TAG, + "queryInAndWaitOrders data.taskType=${data.data.taskType}, discard data" + ) // 如果上一个是 接驾或送驾任务 下一个是演练任务,需要reset页面状态 - currentOCHOrder = null - orderStatusChange() + if (currentOCHOrder != null) { + currentOCHOrder?.orderStatus = TaxiPassengerOrderStatusEnum.None.code + orderStatusChange() + currentOCHOrder = null + } return } if (data.data?.order == null) { @@ -176,11 +190,19 @@ object TaxiPassengerModel { val currentOrder = data.data.order currentLineId = data.data.lineId currentTrajectoryInfo = data.data.trajectoryInfoByQuery - if (currentOCHOrder == null - || currentOCHOrder?.orderStatus != currentOrder.orderStatus - ) { + if (currentOCHOrder == null) { currentOCHOrder = currentOrder orderStatusChange() + } else if (currentOCHOrder?.orderStatus != currentOrder.orderStatus) { + if (currentOCHOrder?.orderStatus == TaxiPassengerOrderStatusEnum.UserArriveAtStart.code + && currentOrder.orderStatus < TaxiPassengerOrderStatusEnum.UserArriveAtStart.code + ) { + // 0830 UserArriveAtStart 状态是乘客屏本地在用户验证后本地设置,而且因为后端查询数据有延迟 + // 这里过下过滤,如果当前是UserArriveAtStart 且后端返回是之前状态,不更新数据 + } else { + currentOCHOrder = currentOrder + orderStatusChange() + } } else { currentOCHOrder = currentOrder } @@ -205,14 +227,20 @@ object TaxiPassengerModel { * 仅用于轮询时查到本地有mCurrentOCHOrder但请求结果无进行中单or orderId不一致是复查本地currentOrder */ private fun queryCurrentOrderStatus() { - d(M_TAXI_P + TAG, "queryCurrentOrderStatus: currentOCHOrder.orderNo=${currentOCHOrder?.orderNo}") + d( + M_TAXI_P + TAG, + "queryCurrentOrderStatus: currentOCHOrder.orderNo=${currentOCHOrder?.orderNo}" + ) currentOCHOrder?.orderNo?.let { TaxiPassengerServiceManager.queryOrderById( mContext!!, it, object : OchCommonServiceCallback { override fun onSuccess(data: TaxiPassengerOrderQueryRespBean) { - d(M_TAXI_P + TAG, "queryCurrentOrderStatus: onSuccess data=${GsonUtils.toJson(data)}") + d( + M_TAXI_P + TAG, + "queryCurrentOrderStatus: onSuccess data=${GsonUtils.toJson(data)}" + ) if (data.data != null && currentOCHOrder != null && currentOCHOrder!!.orderNo == data.data.orderNo diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt index 8afb17216f..185ba822d9 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt @@ -66,11 +66,20 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) : order?.let { setItineraryVisibility() when (TaxiPassengerModel.curOrderStatus) { + TaxiPassengerOrderStatusEnum.OnTheWayToStart -> { + // 10 接驾中 + mView?.showOrHideStartAutopilotView(isShow = false) + mView?.showOrHidePressengerCheckPager(isShow = false) + mView?.showOrHideArrivedEndLayout(isShow = false) + overMapViewClear() + } + TaxiPassengerOrderStatusEnum.ArriveAtStart -> { // 20 司机到达上车点 mView?.showOrHideArrivedEndLayout(isShow = false) mView?.showOrHidePressengerCheckPager(true) mView?.showOrHideStartAutopilotView(isShow = false) + overMapViewClear() } TaxiPassengerOrderStatusEnum.UserArriveAtStart -> { @@ -78,6 +87,7 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) : mView?.showOrHideArrivedEndLayout(isShow = false) mView?.showOrHidePressengerCheckPager(isShow = false) mView?.showOrHideStartAutopilotView(isShow = true) + overMapViewClear() } TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> { @@ -102,6 +112,7 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) : mView?.showOrHideArrivedEndLayout(false) overMapViewClear() } + TaxiPassengerOrderStatusEnum.Cancel -> { // 70 取消订单 mView?.showOrHideStartAutopilotView(isShow = false) @@ -109,6 +120,7 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) : mView?.showOrHideArrivedEndLayout(isShow = false) overMapViewClear() } + TaxiPassengerOrderStatusEnum.None -> { // 00 默认状态,在不同任务之间切换时使用 mView?.showOrHideStartAutopilotView(isShow = false) diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.kt index 5b4f60df6b..54a0848119 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.kt @@ -64,7 +64,8 @@ object TaxiPassengerAnalyticsManager { * @param restart false(点击'开始服务'启动)/true(接管后点击'自动驾驶'按钮启动) * @param send 是否直接发送埋点(15s内开启成功则直接发送成功埋点) */ - fun triggerStartAutopilotEvent(restart: Boolean, send: Boolean, startName: String, endName: String, orderNo: String) { + fun triggerStartAutopilotEvent(restart: Boolean, send: Boolean, startName: String, endName: String, + orderNo: String, lineId: Long?) { mStartAutopilotKey = if (restart) TaxiPassengerConst.EVENT_KEY_RESTART_AUTOPILOT else TaxiPassengerConst.EVENT_KEY_START_SERVICE if (send) { @@ -86,6 +87,7 @@ object TaxiPassengerAnalyticsManager { mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_START_NAME] = startName mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_END_NAME] = endName mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_ORDER_NUMBER] = orderNo + mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_LINE_ID] = lineId ?: 0 startAutopiloTimeOut = RxUtils.createSubscribeOnOwnThread(TaxiPassengerConst.LOOP_PERIOD_15S) { // 15s内未开启,上报失败埋点 triggerStartAutopilotFailureEvent("", "15s后app等待超时") diff --git a/OCH/taxi/unmanned-passenger/src/main/res/layout/taxi_p_statusview.xml b/OCH/taxi/unmanned-passenger/src/main/res/layout/taxi_p_statusview.xml index ecd2990ddc..5b75be9662 100644 --- a/OCH/taxi/unmanned-passenger/src/main/res/layout/taxi_p_statusview.xml +++ b/OCH/taxi/unmanned-passenger/src/main/res/layout/taxi_p_statusview.xml @@ -8,6 +8,15 @@ tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout" tools:ignore="MissingDefaultResource"> + + + , Handl config.isShowDebugLog = true config.isShowNetDebugLog = true } + CallerMapUIServiceManager.getMapUIController()?.setDebugMode(true) CallerAutoPilotControlManager.setEnableLog(true) } @@ -236,6 +238,7 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl config.isShowDebugLog = false config.isShowNetDebugLog = false } + CallerMapUIServiceManager.getMapUIController()?.setDebugMode(false) CallerAutoPilotControlManager.setEnableLog(false) } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt index 307e14b55e..664e86855a 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt @@ -10,6 +10,7 @@ import android.widget.LinearLayout import com.mogo.eagle.core.function.api.devatools.mofang.* import com.mogo.eagle.core.function.call.devatools.* import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.util.ToastUtils import kotlinx.android.synthetic.main.view_blue_tooth.view.* /** @@ -26,6 +27,9 @@ open class BlueToothView: LinearLayout, IMoGoMoFangProvider.OnMoFangStatusListen LayoutInflater.from(context).inflate(R.layout.view_blue_tooth , this, true) visibility = View.GONE + + clipChildren = false + clipToPadding = false } companion object{ @@ -58,6 +62,21 @@ open class BlueToothView: LinearLayout, IMoGoMoFangProvider.OnMoFangStatusListen if (it.visibility != View.VISIBLE) { it.visibility = View.VISIBLE } + val oldTextColor = it.currentTextColor + if (battery <= 30) { + if (oldTextColor != Color.RED) { + it.setTextColor(Color.RED) + ivMoFangStatus?.drawable?.setTint(Color.RED) + postDelayed({ + ToastUtils.showShort("当前蘑方处理低电状态, 请及时充电") + }, 5000) + } + } else { + if (oldTextColor != Color.WHITE) { + it.setTextColor(Color.WHITE) + ivMoFangStatus?.drawable?.setTint(Color.WHITE) + } + } it.text = "${battery}%" } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml index 1080063127..24e8679ed0 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml @@ -19,10 +19,13 @@ android:id="@+id/ivMoFangBattery" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textSize="12dip" + android:textSize="25dip" + android:textStyle="bold" android:textColor="@color/white" android:layout_gravity="bottom" android:visibility="gone" + android:layout_marginStart="-8dip" + android:layout_marginBottom="1dip" tools:text="18%"/> \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/ai/AiCloudIdentifyDataManager.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/ai/AiCloudIdentifyDataManager.kt index 524ec313b2..8a63e45178 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/ai/AiCloudIdentifyDataManager.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/ai/AiCloudIdentifyDataManager.kt @@ -17,6 +17,7 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_RO import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_MAP_CHANGE_END import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_MAP_END import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_MAP_ERROR +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_MAP_READY_START import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_MAP_START import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_REQUEST import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_REQUEST_DELAY @@ -246,9 +247,17 @@ class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener, 0 -> { MapBizTrace.log( CHAIN_CODE_ROMA_REQUEST_OK, + CHAIN_CODE_ROMA_MAP_READY_START, + TAG, + mutableMapOf("romaStart" to "地图准备漫游动画") + ) + } + 4 -> { + MapBizTrace.log( + CHAIN_CODE_ROMA_MAP_READY_START, CHAIN_CODE_ROMA_MAP_START, TAG, - mutableMapOf("romaStart" to "地图开始漫游") + mutableMapOf("romaStart" to "地图漫游动画结束,开始漫游") ) showAiCloud.set(true) FunctionBuildConfig.isDrawIdentifyData = false diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/biz/trafficlight/TrafficLightStatus.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/biz/trafficlight/TrafficLightStatus.kt index 8b4fd7ede3..7587fcf105 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/biz/trafficlight/TrafficLightStatus.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/biz/trafficlight/TrafficLightStatus.kt @@ -31,7 +31,7 @@ fun TrafficLightStatus.turnRedAtOnce(): Boolean { data class TrafficLightStatus( val phaseNo: String, //相位编号 val color: String, //灯态: 红灯-R,绿灯-G,绿闪-FG,黄-Y,B-黑 - val remain: Int //倒计时-秒 + val remain: Int //倒计时-秒 todo 云端string类型 如果返回 -- 解析异常 ) { } \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt index 17cc9cf1c1..f243da70ef 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt @@ -118,6 +118,7 @@ class ChainConstant { const val CHAIN_CODE_ROMA_REQUEST_ERROR = "CHAIN_CODE_ROMA_REQUEST_ERROR" const val CHAIN_CODE_ROMA_REQUEST_DELAY = "CHAIN_CODE_ROMA_REQUEST_DELAY" const val CHAIN_CODE_ROMA_MODE_INVOKE = "CHAIN_CODE_ROMA_MODE_INVOKE" + const val CHAIN_CODE_ROMA_MAP_READY_START = "CHAIN_CODE_ROMA_MAP_READY_START" const val CHAIN_CODE_ROMA_MAP_START = "CHAIN_CODE_ROMA_MAP_START" const val CHAIN_CODE_ROMA_MAP_END = "CHAIN_CODE_ROMA_MAP_END" const val CHAIN_CODE_ROMA_MAP_CHANGE_END = "CHAIN_CODE_ROMA_MAP_CHANGE_END" diff --git a/foudations/mogo-commons/build.gradle b/foudations/mogo-commons/build.gradle index c3353c9883..f39dbedbe7 100644 --- a/foudations/mogo-commons/build.gradle +++ b/foudations/mogo-commons/build.gradle @@ -57,7 +57,8 @@ dependencies { api 'org.greenrobot:eventbus:3.1.1' api rootProject.ext.dependencies.androidautoSize - + implementation rootProject.ext.dependencies.koomnative + implementation rootProject.ext.dependencies.koomxhook if (Boolean.valueOf(USE_MAVEN_PACKAGE)) { api rootProject.ext.dependencies.mogoaicloudservicesdk api rootProject.ext.dependencies.ttsbase diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java index 9d4d5fdb61..b66d7a3b87 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java @@ -10,6 +10,8 @@ import android.widget.ImageView; import android.widget.TextView; import com.mogo.commons.crash.FinalizeCrashFixer; +import com.mogo.commons.debug.DebugConfig; +import com.mogo.commons.koom.KoomInitTask; import com.mogo.commons.screen.ScreenHelper; import com.mogo.commons.module.MogoServices; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; @@ -43,6 +45,10 @@ public abstract class AbsMogoApplication extends Application { super.onCreate(); AutoSize.checkAndInit(this); ScreenHelper.setScreenConfig(this); + // 非主进程也需要初始化 + if (DebugConfig.isDebug()) { + KoomInitTask.INSTANCE.init(AbsMogoApplication.getApp()); + } if (!shouldInit()) { return; } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/koom/KoomInitTask.kt b/foudations/mogo-commons/src/main/java/com/mogo/commons/koom/KoomInitTask.kt similarity index 94% rename from core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/koom/KoomInitTask.kt rename to foudations/mogo-commons/src/main/java/com/mogo/commons/koom/KoomInitTask.kt index 6fca530bea..f442e7e573 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/koom/KoomInitTask.kt +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/koom/KoomInitTask.kt @@ -1,4 +1,4 @@ -package com.zhjt.mogo_core_function_devatools.koom +package com.mogo.commons.koom import android.app.Application import android.os.Build @@ -7,6 +7,7 @@ import com.kwai.koom.base.InitTask import com.kwai.koom.base.MonitorManager object KoomInitTask : InitTask { + override fun init(application: Application) { val config = CommonConfig.Builder() .setApplication(application) // Set application diff --git a/gradle.properties b/gradle.properties index cab15485b6..98a46eff2b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -58,7 +58,7 @@ bytex.ASM_API=ASM7 ################ 外部依赖引用 ################ # loglib -LOGLIB_VERSION=1.9.5-SNAPSHOT +LOGLIB_VERSION=1.9.6 ######## MogoAiCloudSDK Version ######## # 网络请求LOGLIB_VERSION MOGO_NETWORK_VERSION=1.4.7.16 @@ -80,7 +80,7 @@ MOGO_LOCATION_VERSION=1.4.7.16 MOGO_TELEMATIC_VERSION=1.4.7.16 ######## MogoAiCloudSDK Version ######## # 自研地图 -MAP_SDK_VERSION=2.14.3.4 +MAP_SDK_VERSION=2.14.3.7 MAP_SDK_OPERATION_VERSION=1.1.4.1 # websocket WEBSOCKET_VERSION=1.1.7 diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java index 35e36a15be..925c9f1a6b 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java @@ -720,6 +720,12 @@ public class AMapViewWrapper implements IMogoMapView, public void onMapLoaded() { CallerLogger.i(M_MAP + TAG, "autoop--onMapLoaded: "); if (checkAMapView()) { + MapAutoViewHelper options = mMapView.getMapAutoViewHelper(); + if (options != null) { + options.setScaleVRMode(true); + }else{ + CallerLogger.i(M_MAP + TAG, "autoop--getMapAutoViewHelper is null"); + } CameraPosition cameraPosition = mMapView.getMapAutoViewHelper().getCameraPosition(); MogoMapListenerHandler.Companion.getMogoMapListenerHandler().onMapChanged(ObjectUtils.fromAMap(cameraPosition.getTarget()), cameraPosition.getZoom(),