diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/IOchAutopilotStatusListener.java b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/IOchAutopilotStatusListener.java index 719120e389..96a2161695 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/IOchAutopilotStatusListener.java +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/IOchAutopilotStatusListener.java @@ -96,4 +96,6 @@ public interface IOchAutopilotStatusListener { */ default void onAutopilotStatusResponseFromCan(int state) {} + default void onFsmCanStartAutopilot(boolean can){} + } diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt index c24a241088..2c74531658 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt @@ -5,36 +5,24 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.msgbox.AutopilotMsg import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.data.msgbox.MsgBoxType -import com.mogo.eagle.core.function.api.autopilot.IMoGoFsm2024Listener -import com.mogo.eagle.core.function.api.autopilot.IMoGoReceiveReceivedAckListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager -import com.mogo.eagle.core.function.call.autopilot.CallerFsm2024ListenerManager -import com.mogo.eagle.core.function.call.autopilot.CallerReceiveReceivedAckListenerManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.manager.autopilot.OCHAdasAbilityManager import com.mogo.och.common.module.manager.autopilot.autopilot.bean.SessionWithTime import com.mogo.och.common.module.manager.autopilot.line.LineManager import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager -import com.zhjt.mogo.adas.common.MessageType -import com.zhjt.mogo.adas.data.bean.ReceivedAck -import com.zhjt.mogo.adas.data.bean.ReceivedAck.Status -import fsm.Fsm2024 -import java.util.concurrent.atomic.AtomicLong import java.util.concurrent.atomic.AtomicReference -object OchAutoPilotManager : IMoGoReceiveReceivedAckListener, IMoGoFsm2024Listener { +object OchAutoPilotManager { const val TAG = "OchAutoPilotManager" private val globalSessionId = AtomicReference() - private val fsmBackSessionId = AtomicLong(-1L) init { - CallerReceiveReceivedAckListenerManager.addListener(TAG,this) - CallerFsm2024ListenerManager.addListener(TAG,this) + } @JvmStatic @@ -101,7 +89,7 @@ object OchAutoPilotManager : IMoGoReceiveReceivedAckListener, IMoGoFsm2024Listen } fun clearGlobalSessionId(log:String){ - OchChainLogManager.writeChainLogAutopilot("自驾流程","清理SessiongId${globalSessionId}_${fsmBackSessionId}_${log}") + OchChainLogManager.writeChainLogAutopilot("自驾流程","清理SessiongId${globalSessionId}_${OchAutoPilotStatusListenerManager.fsmBackSessionId}_${log}") globalSessionId.set(null) } @@ -109,36 +97,21 @@ object OchAutoPilotManager : IMoGoReceiveReceivedAckListener, IMoGoFsm2024Listen fun startAutoPilot(controlParameters: AutopilotControlParameters?): Long { val sessionId = CallerAutoPilotControlManager.startAutoPilot(controlParameters) globalSessionId.set(SessionWithTime(sessionId,System.currentTimeMillis())) - fsmBackSessionId.set(-1L) + OchAutoPilotStatusListenerManager.fsmBackSessionId.set(-1L) OchAutopilotAnalytics.triggerStartAutopilotParameters(controlParameters, sessionId) return sessionId } - // 启动自驾底盘反馈信息 - override fun onReceiveReceivedAck(receivedAck: ReceivedAck) { - if (receivedAck.messageType == MessageType.TYPE_SEND_SET_AUTOPILOT_MODE_REQ) { - OchAutopilotAnalytics.triggerStartAutopilotParametersAck(receivedAck.toString(),receivedAck.status == Status.NORMAL) - } - } - - /** - * - */ - override fun onFSM2024State(fsmState: Fsm2024.FSMStateMsg) { - fsmBackSessionId.set(fsmState.failToPilotSessionId) - CallerLogger.e(TAG,"收到FSM2024的SeesiongId:${fsmState.failToPilotSessionId}") - } - /** * 启动自驾失败切 FSM返回的Session和启动SessionId 不同 */ fun checkStartSessionAndFailSessionId(){ val sessionInfo = globalSessionId.get() if(sessionInfo!=null) { - if (sessionInfo.sessionId != fsmBackSessionId.get()) { + if (sessionInfo.sessionId != OchAutoPilotStatusListenerManager.fsmBackSessionId.get()) { OchAutopilotAnalytics.triggerStartAutopilotFailCheckSessionDiff( sessionInfo, - fsmBackSessionId.get() + OchAutoPilotStatusListenerManager.fsmBackSessionId.get() ) } } diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt index d6ff962296..18937f6391 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt @@ -3,9 +3,14 @@ package com.mogo.och.common.module.manager.autopilot.autopilot import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.api.autopilot.IMoGoFsm2024Listener +import com.mogo.eagle.core.function.api.autopilot.IMoGoReceiveReceivedAckListener 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.CallerFsm2024ListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerReceiveReceivedAckListenerManager import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.util.StringUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.R @@ -14,20 +19,27 @@ import com.mogo.och.common.module.manager.autopilot.line.LineManager import com.mogo.och.common.module.manager.autopilot.trajectory.TrajectoryManager import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.utils.CallerBase +import com.zhjt.mogo.adas.common.MessageType import com.zhjt.mogo.adas.data.AdasConstants import com.zhjt.mogo.adas.data.bean.MogoReport +import com.zhjt.mogo.adas.data.bean.ReceivedAck +import com.zhjt.mogo.adas.data.bean.ReceivedAck.Status +import fsm.Fsm2024 import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg import system_master.SsmInfo import system_master.SystemStatusInfo import java.lang.Exception +import java.util.concurrent.atomic.AtomicLong import kotlin.properties.Delegates object OchAutoPilotStatusListenerManager : CallerBase(),IMoGoAutopilotStatusListener, - (Boolean) -> Unit { + (Boolean) -> Unit, IMoGoFsm2024Listener, IMoGoReceiveReceivedAckListener { const val TAG = "OCHAutoPilotStatusListenerManager" + val fsmBackSessionId = AtomicLong(-1L) + private var canStartAutopilot:Boolean? by Delegates.observable(null) { _, oldValue, newValue -> if (oldValue != newValue) { M_LISTENERS.forEach { @@ -36,6 +48,18 @@ object OchAutoPilotStatusListenerManager : CallerBase + if (oldValue != newValue) { + M_LISTENERS.forEach { + val listener = it.value + listener.onFsmCanStartAutopilot(newValue) + } + } + } + + val canStartAutopilotFromFSM:Boolean + get() = _canStartAutopilotFromFSM + private var _autopilotState: Int by Delegates.observable(0) { _, oldValue, newValue -> if (oldValue != newValue) { if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { @@ -67,6 +91,8 @@ object OchAutoPilotStatusListenerManager : CallerBase { - if (!CallerAutoPilotControlManager.isCanStartAutopilot(false)) {// 不可用 + if (!CallerAutoPilotControlManager.isCanStartAutopilot(false) && !OchAutoPilotStatusListenerManager.canStartAutopilotFromFSM) {// 不可用 this.viewCallback?.autopilotDisable() } else {// 部分可用 this.viewCallback?.canStartAutopilot() diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt index 1f08e27aca..8bcfdb3a8f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt @@ -12,6 +12,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.och.common.module.manager.autopilot.line.LineManager +import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.common.module.manager.loop.LoopInfo import com.mogo.och.common.module.manager.socket.cloud.IOchOnMessageListener @@ -97,16 +98,17 @@ object TicketModel : IOchOnMessageListener{ } private fun selectWriteOffCount(){ - LineManager.getStations().second?.let { endStation-> + LineManager.getStations().first?.let { firstStation-> LineModel.currentTask?.let { currentTask-> ShuttleSaasServiceManager.queryBusTaskByLineId(AbsMogoApplication.getApp(), "${currentTask.taskId}", - "${endStation.siteId}", + "${firstStation.siteId}", object : OchCommonServiceCallback { override fun onSuccess(data: WriteOffCountResponse?) { data?.data?.let { emitterMain?.onNext(it) - d(SceneConstant.M_BUS + TAG, "${endStation.name}核销人数:${it}") + d(SceneConstant.M_BUS + TAG, "${firstStation.name}核销人数:${it}") + OchChainLogManager.writeChainLog("核销人数","任务:${currentTask.taskId} zhan'dian") } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt index 10ecd893d6..acc1a200ba 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt @@ -774,20 +774,17 @@ class OperatePanelLayout : LinearLayout { if (isChecked) { if (CallerHmiManager.isTaxiUnmanedDriverPerformTask()) { ToastUtils.showLong("请先结束当前任务") - preferenceScreen.findPreferenceReal(KEY_SELF_ROUTING_VERIFY_MODE)?.also { changeValue(it, false) } - return true + return false } if (CallerHmiManager.isTaxiUnmanedDriverTakingOrders()) { ToastUtils.showLong("请先结束接单状态") - preferenceScreen.findPreferenceReal(KEY_SELF_ROUTING_VERIFY_MODE)?.also { changeValue(it, false) } - return true + return false } CallerHmiManager.setTaxiUnmanedDriverLineRoutingVerifyMode(true) } else { if (CallerHmiManager.isTaxiUnmanedDriverLineRoutingPerformTask()) { ToastUtils.showLong("请先结束当前任务") - preferenceScreen.findPreferenceReal(KEY_SELF_ROUTING_VERIFY_MODE)?.also { changeValue(it, true) } - return true + return false } CallerHmiManager.setTaxiUnmanedDriverLineRoutingVerifyMode(false) }