diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ShuttleDriverProvider.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ShuttleDriverProvider.kt index e6446e10db..8f62cb2fca 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ShuttleDriverProvider.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ShuttleDriverProvider.kt @@ -22,6 +22,7 @@ import com.mogo.och.weaknet.model.LineModel import com.mogo.och.weaknet.repository.RepositoryManager import com.mogo.och.weaknet.repository.db.repository.WriteOffDb import com.mogo.och.weaknet.ui.bizswitch.SwitchBizView +import com.mogo.och.weaknet.ui.modeswitch.TopSwitchBizView import com.mogo.och.weaknet.ui.qr.QrOpenView import com.mogo.och.weaknet.util.BusAnalyticsManager import com.mogo.och.weaknet.util.BusTrajectoryManager @@ -73,7 +74,7 @@ class ShuttleDriverProvider : CommonServiceImpl() { override fun createOchBusinessView(context: Context?): View? { d(TAG, "createOchBusinessView") return context?.let { - SwitchBizView(it) + TopSwitchBizView(it) } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt index eee80c62d5..864621ab6f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt @@ -3,6 +3,7 @@ package com.mogo.och.weaknet.model import android.annotation.SuppressLint import android.content.Context import com.mogo.commons.AbsMogoApplication +import com.mogo.commons.module.status.MogoStatusManager import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager @@ -189,9 +190,11 @@ object OrderModel { override fun onNext(data: Boolean) { if(data){ + MogoStatusManager.getInstance().setShuttleDriverPerformTask(TAG, true) LineModel.haveRunningTask() updateBusStatus() }else{ + MogoStatusManager.getInstance().setShuttleDriverPerformTask(TAG, false) LineModel.haveNoRunningTask() d(TAG, "queryBusRoutes 获取到小巴路线数据:空 ") LineManager.setLineInfo(null) @@ -517,6 +520,7 @@ object OrderModel { }catch (e:Exception){ OchChainLogManager.writeChainLog("错误","${e.message}") } + MogoStatusManager.getInstance().setShuttleDriverPerformTask(TAG, false) MapMakerManager.removeAllMapMarkerByOwner(TAG) BusTrajectoryManager.stopTrajReqLoop() LoginStatusManager.loginOut() diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/bizswitch/SwitchBizView.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/bizswitch/SwitchBizView.kt index b0d32ee51a..4441b498ce 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/bizswitch/SwitchBizView.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/bizswitch/SwitchBizView.kt @@ -3,6 +3,7 @@ package com.mogo.och.weaknet.ui.bizswitch import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.findViewTreeViewModelStoreOwner import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -20,16 +21,16 @@ import kotlinx.android.synthetic.main.shuttle_weak_switch_biz.view.swtichLine import kotlinx.android.synthetic.main.shuttle_weak_switch_biz.view.swtichTask import kotlinx.android.synthetic.main.shuttle_weak_switch_biz.view.taskRunning -class SwitchBizView: WindowRelativeLayout, SwtichBizModel.SwtichLineViewCallback { +class SwitchBizView: ConstraintLayout, SwtichBizModel.SwtichLineViewCallback { - constructor(context: Context?) : super(context) + constructor(context: Context) : super(context) - constructor(context: Context?, attributeSet: AttributeSet) : super(context, attributeSet) + constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet) - constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr) + constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr) - constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes) + constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes) companion object { diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/modeswitch/SwtichBizeModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/modeswitch/SwtichBizeModel.kt new file mode 100644 index 0000000000..1b650b2961 --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/modeswitch/SwtichBizeModel.kt @@ -0,0 +1,54 @@ +package com.mogo.och.weaknet.ui.modeswitch + +import androidx.lifecycle.ViewModel +import com.mogo.commons.module.status.IMogoStatusChangedListener +import com.mogo.commons.module.status.MogoStatusManager +import com.mogo.commons.module.status.StatusDescriptor +import com.mogo.eagle.core.utilcode.util.UiThreadHandler + +/** + * @author XuXinChao + * @description BadCase录包管理页面 + * @since: 2022/12/15 + */ +class SwtichBizeModel : ViewModel() { + + private val TAG = SwtichBizeModel::class.java.simpleName + + private var viewCallback: SwtichLineViewCallback? = null + + + override fun onCleared() { + + } + + fun setDistanceCallback(viewCallback: SwtichLineViewCallback) { + this.viewCallback = viewCallback + this.viewCallback?.showTaskView() + MogoStatusManager.getInstance() + .registerStatusChangedListener( + TAG, StatusDescriptor.TAXI_UNMANED_DRIVER_LINE_ROUTING_VERIFY_MODE, moFanglistener + ) + } + + private var moFanglistener: IMogoStatusChangedListener? = object : IMogoStatusChangedListener { + override fun onStatusChanged(descriptor: StatusDescriptor?, isTrue: Boolean) { + if (StatusDescriptor.TAXI_UNMANED_DRIVER_LINE_ROUTING_VERIFY_MODE == descriptor) { + UiThreadHandler.post { + if (isTrue) {// 展示算路 + viewCallback?.showRoutingView() + } else {// 展示任务 + viewCallback?.showTaskView() + } + } + } + } + + } + + interface SwtichLineViewCallback { + fun showTaskView() + fun showRoutingView() + } +} + diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/modeswitch/TopSwitchBizView.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/modeswitch/TopSwitchBizView.kt new file mode 100644 index 0000000000..f1c2cd07e8 --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/modeswitch/TopSwitchBizView.kt @@ -0,0 +1,62 @@ +package com.mogo.och.weaknet.ui.modeswitch + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.findViewTreeViewModelStoreOwner +import com.mogo.och.common.module.biz.routing.RoutingManager +import com.mogo.och.common.module.wigets.WindowRelativeLayout +import com.mogo.och.shuttle.weaknet.R +import kotlinx.android.synthetic.main.shuttle_weak_biz.view.routingSwitchView +import kotlinx.android.synthetic.main.shuttle_weak_biz.view.switchOchBiz + +class TopSwitchBizView: WindowRelativeLayout, SwtichBizeModel.SwtichLineViewCallback { + + + constructor(context: Context?) : super(context) + + constructor(context: Context?, attributeSet: AttributeSet) : super(context, attributeSet) + + constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr) + + constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes) + + + companion object { + const val TAG = "SwitchBizView" + } + + private var viewModel: SwtichBizeModel?=null + + + + init { + LayoutInflater.from(context).inflate(R.layout.shuttle_weak_biz, this, true) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + viewModel = findViewTreeViewModelStoreOwner()?.let { + ViewModelProvider(it).get(SwtichBizeModel::class.java) + } + viewModel?.setDistanceCallback(this) + } + + override fun showTaskView() { + switchOchBiz.visibility = VISIBLE + routingSwitchView.visibility = GONE + RoutingManager.getRoutingView()?.let { + routingSwitchView.removeView(it) + } + } + + override fun showRoutingView() { + switchOchBiz.visibility = GONE + routingSwitchView.visibility = VISIBLE + RoutingManager.getRoutingView()?.let { + routingSwitchView.addView(it) + } + } + +} diff --git a/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_weak_biz.xml b/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_weak_biz.xml new file mode 100644 index 0000000000..68d921d9a9 --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_weak_biz.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_weak_switch_biz.xml b/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_weak_switch_biz.xml index f5b1760fd2..f3b78920e9 100644 --- a/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_weak_switch_biz.xml +++ b/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_weak_switch_biz.xml @@ -1,37 +1,18 @@ - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt index ba66a8430a..9adc751b36 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt @@ -37,7 +37,6 @@ import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener import com.mogo.eagle.core.function.api.hmi.xiaozhi.event.Event import com.mogo.eagle.core.function.api.hmi.xiaozhi.listener.OnXiaoZhiStateChangeListener import com.mogo.eagle.core.function.api.hmi.xiaozhi.state.State -import com.mogo.eagle.core.function.api.map.angle.Scene import com.mogo.eagle.core.function.api.och.toolkit.IToolKitItemClickListener import com.mogo.eagle.core.function.api.och.toolkit.ToolKitCustomItemAddParam import com.mogo.eagle.core.function.api.och.toolkit.ToolKitDefaultItemAddParam @@ -429,6 +428,10 @@ class MoGoHmiProvider : IMoGoHmiProvider { CallerTurnLightListenerManager.invokeHideTurnLightView() } + override fun isShuttleDriverPerformTask(): Boolean { + return MogoStatusManager.getInstance().isShuttleDriverPerformTask + } + override fun isTaxiUnmanedDriverPerformTask(): Boolean { return MogoStatusManager.getInstance().isTaxiUnmanedDriverPerformTask } 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 4a0af9ae10..e067259afa 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 @@ -752,6 +752,9 @@ class OperatePanelLayout : LinearLayout { return when (pref.key) { KEY_SELF_ROUTING_VERIFY_MODE -> { AppIdentityModeUtils.isTaxiDriver(FunctionBuildConfig.appIdentityMode) + ||AppIdentityModeUtils.isBusDriver(FunctionBuildConfig.appIdentityMode) + ||AppIdentityModeUtils.isShuttleDriver(FunctionBuildConfig.appIdentityMode) + ||AppIdentityModeUtils.isScheduled(FunctionBuildConfig.appIdentityMode) } KEY_LOOK_AROUND_360 -> { AppIdentityModeUtils.isM1(FunctionBuildConfig.appIdentityMode) @@ -864,7 +867,9 @@ class OperatePanelLayout : LinearLayout { KEY_SELF_ROUTING_VERIFY_MODE -> { val isChecked = newValue as? Boolean ?: false if (isChecked) { - if (CallerHmiManager.isTaxiUnmanedDriverPerformTask()) { + if (CallerHmiManager.isTaxiUnmanedDriverPerformTask()|| + CallerHmiManager.isShuttleDriverPerformTask() + ) { ToastUtils.showLong("请先结束当前任务") return false } diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt index 1a2a59ded4..60e564edc7 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt @@ -196,6 +196,12 @@ interface IMoGoHmiProvider :IProvider{ */ fun hideTurnLightView() + /** + * 小巴、接驳、包车 是否在执行任务中 + */ + fun isShuttleDriverPerformTask(): Boolean + + /** * taxi无人化 是否在执行任务中(无人化模式和算路验证模式 都复用此变量) */ diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt index 15376239ce..da365bfba0 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt @@ -299,6 +299,13 @@ object CallerHmiManager { hmiProviderApi?.hideTurnLightView() } + /** + * taxi无人化司机端 是否在执行任务中(无人化模式和算路验证模式 都复用此变量) + */ + fun isShuttleDriverPerformTask(): Boolean { + return hmiProviderApi?.isShuttleDriverPerformTask() ?: false + } + /** * taxi无人化司机端 是否在执行任务中(无人化模式和算路验证模式 都复用此变量) */ diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/status/IMogoStatusManager.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/status/IMogoStatusManager.java index 5e9fac930b..78b23fba3e 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/status/IMogoStatusManager.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/status/IMogoStatusManager.java @@ -110,6 +110,16 @@ public interface IMogoStatusManager extends IProvider { */ void setSeekHelping( String tag, boolean seekHelping ); + /** + * 小巴、接驳、包车 是否在执行任务中 + * + * @param tag + * @param isPerformingTask + */ + void setShuttleDriverPerformTask( String tag, boolean isPerformingTask ); + + boolean isShuttleDriverPerformTask(); + /** * taxi无人化司机端 是否在执行任务中 * diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/status/MogoStatusManager.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/status/MogoStatusManager.java index ec2922542f..2119fced98 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/status/MogoStatusManager.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/status/MogoStatusManager.java @@ -117,6 +117,16 @@ public class MogoStatusManager implements IMogoStatusManager { doSetStatus(tag, StatusDescriptor.SEEK_HELPING, seekHelping); } + @Override + public void setShuttleDriverPerformTask(String tag, boolean isPerformingTask) { + doSetStatus(tag, StatusDescriptor.Shuttle_DRIVER_PERFORM_TASK, isPerformingTask); + } + + @Override + public boolean isShuttleDriverPerformTask() { + return get_bool_val(StatusDescriptor.Shuttle_DRIVER_PERFORM_TASK); + } + @Override public void setTaxiUnmanedDriverPerformTask(String tag, boolean isPerformingTask) { doSetStatus(tag, StatusDescriptor.TAXI_UNMANED_DRIVER_PERFORM_TASK, isPerformingTask); diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/status/StatusDescriptor.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/status/StatusDescriptor.java index 8d3d52cf61..4ece2d7e36 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/status/StatusDescriptor.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/status/StatusDescriptor.java @@ -48,6 +48,12 @@ public enum StatusDescriptor { */ SCREEN_COVER, + /** + * 小巴、接驳、班车 是否执行任务中 + */ + Shuttle_DRIVER_PERFORM_TASK, + + /** * taxi无人化 是否执行任务中 */