diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/StartAutopilotAnimationView.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/StartAutopilotAnimationView.kt new file mode 100644 index 0000000000..4eee9670ee --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/StartAutopilotAnimationView.kt @@ -0,0 +1,126 @@ +package com.mogo.och.common.module.wigets; + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.View +import android.view.animation.AlphaAnimation +import android.view.animation.Animation +import android.view.animation.LinearInterpolator +import android.widget.RelativeLayout +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI +import com.mogo.och.common.module.R +import kotlinx.android.synthetic.main.start_autopilot_animation_view.view.startAutopilotTip +import kotlinx.android.synthetic.main.start_autopilot_animation_view.view.startAutopilotTipImg +import java.util.concurrent.atomic.AtomicReference + + +class StartAutopilotAnimationView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : RelativeLayout(context, attrs, defStyleAttr){ + + companion object { + private const val ALL_CLOSE_TIMER = 5000L + private const val TAG = "V2XWarningView" + } + + private val closeWarningTask: Runnable = Runnable { + showWarning(DirectionEnum.ALERT_WARNING_NON) + } + + private val oldDirection = AtomicReference() + + init { + LayoutInflater.from(context).inflate(R.layout.start_autopilot_animation_view, this, true) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + } + + fun show(direction: DirectionEnum, time: Long) { + showWarning(direction, time) + } + + fun dismiss(direction: DirectionEnum) { + dismissWarning(direction) + } + + /** + * 展示指定方位上的红框预警 + * @param direction + * @see WarningDirectionEnum + */ + private fun showWarning(direction: DirectionEnum, time: Long = ALL_CLOSE_TIMER) { + + startAutopilotTip.text = direction.desc + + // 如果传入的不是关闭显示,则设置倒计时,定时关闭红框警示 + if (oldDirection.get() == direction) { + removeCallbacks(closeWarningTask) + postDelayed(closeWarningTask, time) + return + } + if (direction != DirectionEnum.ALERT_WARNING_NON) { + oldDirection.set(direction) + removeCallbacks(closeWarningTask) + postDelayed(closeWarningTask, time) + } + post { + if (direction == DirectionEnum.ALERT_WARNING_TOP){ + startAutopilotTipImg.visibility = View.VISIBLE + } + + if (direction == DirectionEnum.ALERT_WARNING_NON) { + dismissWarning(DirectionEnum.ALERT_WARNING_TOP) + } else { + val alphaAnimation = AlphaAnimation(0f, 0.88f) + alphaAnimation.duration = 600 + alphaAnimation.interpolator = LinearInterpolator() + alphaAnimation.repeatCount = Animation.INFINITE + alphaAnimation.repeatMode = Animation.REVERSE + startAnimation(alphaAnimation) + } + } + } + + private fun dismissWarning(direction: DirectionEnum) { + if (direction == DirectionEnum.ALERT_WARNING_NON) { + return + } + removeCallbacks(closeWarningTask) + post { + when (direction) { + DirectionEnum.ALERT_WARNING_TOP -> { + startAutopilotTipImg.visibility = View.GONE + } + else -> { + CallerLogger.d("$M_HMI$TAG", "Not Support Direction") + } + } + clearAnimation() + this.oldDirection.set(null) + } + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + } + + enum class DirectionEnum( + var direction: Int, + var desc: String, + ) { + ALERT_WARNING_NON( + 0, + "关闭红色边框预警" + ), + ALERT_WARNING_TOP( + 1, + "正上方" + ), + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/res/drawable/start_autopilot_animation_bkg_top.xml b/OCH/mogo-och-common-module/src/main/res/drawable/start_autopilot_animation_bkg_top.xml new file mode 100644 index 0000000000..bdea1df71c --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/res/drawable/start_autopilot_animation_bkg_top.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/res/layout/start_autopilot_animation_view.xml b/OCH/mogo-och-common-module/src/main/res/layout/start_autopilot_animation_view.xml new file mode 100644 index 0000000000..ffc928340f --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/res/layout/start_autopilot_animation_view.xml @@ -0,0 +1,22 @@ + + + + + + \ No newline at end of file diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt index 37af25b4f2..7b2249e13f 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt @@ -12,7 +12,7 @@ data class OrderDetail( var orderStatus: Int, var orderStartSite: Site?, var orderEndSite: Site?, - var planningLines: Array, + var planningLines: Array, //返回的是接驾任务的id集合 var bookingUserPhone: String, var passengerSize: Int, var fullMinutes: Int, //到站后返回的总里程 /公里 diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt index ef799c29f4..de3a42fdd8 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt @@ -107,6 +107,10 @@ object TaxiModel { private var mCurrentTaskAndOrder: QueryCurrentTaskRespBean.Result? = null //当前任务和订单 + /** + * 标定站点的任务, 在没有到站之前, 轮询接口是没有的. + * 到站后, 轮询的任务会显示到站站点为这个虚拟站点,任务状态为到站 + */ private var mUntruthTask: StartServiceRespBean.Result? = null // 前往出车点的伪任务, 后台并不算做真正的任务 private var mOrderContrails: MutableList? = diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt index 12545081b4..db880b22dc 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt @@ -49,15 +49,12 @@ import java.util.concurrent.TimeUnit class TaxiUnmannedViewModel : BaseViewModel(){ private var mInAndWaitServiceDisposable: Disposable? = null //进行中、待服务订单列表轮询 + private var mCurrentTaskAndOrder: QueryCurrentTaskRespBean.Result? = null private val TAG = "TaxiUnmannedViewModel" @SuppressLint("StaticFieldLeak") private var mContext : Context = AbsMogoApplication.getApp().applicationContext - init { - startOrStopOrderLoop(true) - } - override fun initUiState(): UnmannedState { return UnmannedState(TaskAndOrderUiState.INIT) } @@ -65,6 +62,10 @@ class TaxiUnmannedViewModel : BaseViewModel(){ override fun handleIntent(intent: IUiIntent) { when(intent) { + is UnmannedIntent.StartTaskOrOrderLooper -> { //开始轮询 + startOrStopOrderLoop(true) + } + is UnmannedIntent.StartOrPauseReceivingOrder -> {//开始、暂停接单 updateCarStatus() } @@ -124,9 +125,12 @@ class TaxiUnmannedViewModel : BaseViewModel(){ override fun onSuccess(data: BaseData?) { TaxiModel.loginService!!.queryLoginStatusByNet() //需要将虚拟任务停掉, 虚拟任务会再开始接单后获取新的 + d(TAG, "set mUntruthSiteTask null") + updateUntruthTaskUI(null) updateUntruthTask(null) - if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.endSite != null){ + if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.endSite != null + && mCurrentTaskAndOrder!!.startSite != null){ VoiceNotice.showNotice("暂停接单啦!要完成当前订单哦") }else{ VoiceNotice.showNotice("暂停接单啦") @@ -157,10 +161,19 @@ class TaxiUnmannedViewModel : BaseViewModel(){ if (data == null || data.code != 0) return TaxiModel.loginService!!.queryLoginStatusByNet() VoiceNotice.showNotice("开始接单啦") - //虚拟任务要开启到站围栏 - if (mCurrentTaskAndOrder == null || mCurrentTaskAndOrder!!.endSite == null){ - updateUntruthTask(data.data) + d(TAG, "data.data="+GsonUtil.jsonFromObject(data.data)) + if (mCurrentTaskAndOrder == null) return + if (mCurrentTaskAndOrder!!.endSite != null){ + if (mCurrentTaskAndOrder!!.currentStatus == TaskStatusEnum.CompleteTask.code + && mCurrentTaskAndOrder!!.order != null){ //有任务, 状态为3, 且有订单 + return + }else if (mCurrentTaskAndOrder!!.currentStatus < TaskStatusEnum.CompleteTask.code){ + //有任务, 并且未执行完成 + return + } } + updateUntruthTaskUI(data.data) + updateUntruthTask(data.data) } override fun onFail(code: Int, msg: String?) { @@ -216,6 +229,8 @@ class TaxiUnmannedViewModel : BaseViewModel(){ } private fun updateTaskAndOrderUi() { + d(TAG, "queryCurrentTaskOnce = updateTaskAndOrderUi") + sendUiState { copy( taskAndOrderUiState = TaskAndOrderUiState.TASKANDORDER(mCurrentTaskAndOrder, @@ -224,8 +239,18 @@ class TaxiUnmannedViewModel : BaseViewModel(){ } } - private fun updateNoTaskAndOrderUi() { + private fun updateUntruthTaskUI(untruthTask: StartServiceRespBean.Result?) { + d(TAG, "queryCurrentTaskOnce = updateTaskAndOrderUi") + sendUiState { + copy( + taskAndOrderUiState = TaskAndOrderUiState.TASKANDORDER(mCurrentTaskAndOrder, + untruthTask) + ) + } + } + + private fun updateNoTaskAndOrderUi() { sendUiState { copy( taskAndOrderUiState = TaskAndOrderUiState.TASKANDORDER(null, @@ -234,7 +259,7 @@ class TaxiUnmannedViewModel : BaseViewModel(){ } } - private fun startOrStopOrderLoop(start: Boolean) { + fun startOrStopOrderLoop(start: Boolean) { d(SceneConstant.M_TAXI + TAG, "startOrStopOrderLoop() $start") if (start) { startInAndWaitCurrentTaskLoop() @@ -253,9 +278,10 @@ class TaxiUnmannedViewModel : BaseViewModel(){ val result = data.data - d(TAG, "queryCurrentTaskOnce = result = ," + GsonUtil.jsonFromObject(result)) + d(TAG, "queryCurrentTaskOnce = result = " + GsonUtil.jsonFromObject(result)) + + d(TAG, "queryCurrentTaskOnce = mCurrentTaskAndOrder = " + GsonUtil.jsonFromObject(mCurrentTaskAndOrder)) - if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.equals(result)) return if (result!!.endSite == null && mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order!= null) { //本地根据订单 orderNo 去查询下(乘客取消订单) @@ -263,29 +289,32 @@ class TaxiUnmannedViewModel : BaseViewModel(){ return } - if (result.endSite == null && result.order == null){ - mCurrentTaskAndOrder = null - updateNoTaskAndOrderUi() - TaxiModel.updateCurrentTaskAndOrder(null) + //订单或者伪任务更新, 都去刷新下界面 + if (mCurrentTaskAndOrder == null || !mCurrentTaskAndOrder!!.equals(result)){ + + if (result.endSite == null && result.order == null){ + mCurrentTaskAndOrder = null + updateNoTaskAndOrderUi() + TaxiModel.updateCurrentTaskAndOrder(null) + } + + if (result.currentStatus == TaskStatusEnum.CompleteTask.code){ + startPrepareTask(result.endSite!!.siteId) + } + + mCurrentTaskAndOrder = result + + //根据lineId集合去查轨迹集合 + if (result.order != null && result.taskType == TaskTypeEnum.ToOrderStartTask.code){ + queryOrderPickUpConertrail(result.order!!.planningLines) + } + + TaxiModel.updateCurrentTaskAndOrder(result) + + TaxiModel.updateStation() + + updateTaskAndOrderUi() } - - if (result.currentStatus == TaskStatusEnum.CompleteTask.code - && result.endSite != null){ - startPrepareTask(result.endSite!!.siteId) - } - - mCurrentTaskAndOrder = result - - //根据lineId集合去查轨迹集合 - if (result.order != null){ - queryOrderContrails(result.order!!.planningLines) - } - - TaxiModel.updateCurrentTaskAndOrder(result) - - TaxiModel.updateStation() - - updateTaskAndOrderUi() } override fun onFail(code: Int, msg: String?) { @@ -296,10 +325,10 @@ class TaxiUnmannedViewModel : BaseViewModel(){ } /** - * 查询接驾/送驾任务轨迹集合 + * 查询送驾任务轨迹集合 * 注: 运营单刚来的时候, 有可能还在运行一个演练任务, 要先跑完演练任务才跑运营单 */ - private fun queryOrderContrails(planningLines: Array?) { + private fun queryOrderPickUpConertrail(planningLines: Array?) { if (planningLines == null) return contrailList(mContext,planningLines, object : OchCommonServiceCallback{ @@ -326,18 +355,20 @@ class TaxiUnmannedViewModel : BaseViewModel(){ if (data != null && data.code != 0) return if (data!!.orderStatus == TaxiOrderStatusEnum.Cancel.code){ VoiceNotice.showNotice("乘客已经取消") - mCurrentTaskAndOrder?.order?.orderStatus = TaxiOrderStatusEnum.Cancel.code - updateTaskAndOrderUi() +// mCurrentTaskAndOrder?.order?.orderStatus = TaxiOrderStatusEnum.Cancel.code mCurrentTaskAndOrder = null + updateTaskAndOrderUi() return } if (data.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code){//到站 - mCurrentTaskAndOrder?.order?.fullMileage = data.mileage - mCurrentTaskAndOrder?.order?.fullMinutes = data.duration - updateTaskAndOrderUi() + updateOrderMileAndDur(data.mileage,data.duration) return } - if (data.orderStatus == TaxiOrderStatusEnum.JourneyCompleted.code){//到站 + if (data.orderStatus == TaxiOrderStatusEnum.JourneyCompleted.code){//完成 + //获取新的任务 + if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.endSite != null){ + startPrepareTask(mCurrentTaskAndOrder!!.endSite!!.siteId) + } mCurrentTaskAndOrder = null updateNoTaskAndOrderUi() return @@ -351,7 +382,18 @@ class TaxiUnmannedViewModel : BaseViewModel(){ }) } - fun startPrepareTask(siteId: Long) { + private fun updateOrderMileAndDur(mileage: Float, duration: Int) { + d(TAG, "queryCurrentTaskOnce = updateTaskAndOrderUi") + + sendUiState { + copy( + taskAndOrderUiState = TaskAndOrderUiState.UPDATEORDERMILEANDDUR(mileage, + duration) + ) + } + } + + private fun startPrepareTask(siteId: Long) { UiThreadHandler.postDelayed({ CarServiceManager.prepareTask( mContext, @@ -361,7 +403,7 @@ class TaxiUnmannedViewModel : BaseViewModel(){ d(SceneConstant.M_TAXI + TAG, GsonUtil.jsonFromObject(data)) if (data == null || data.code != 0) return //去下载轨迹, 下发给工控机下载 - queryOrderContrails(Array(1) { data.lineId }) + queryOrderPickUpConertrail(Array(1) { data.lineId }) } override fun onFail(code: Int, msg: String?) { diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt index 52dc367ecf..53ce1ed42f 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt @@ -107,6 +107,8 @@ class TaxiBeingTaskFragment : BaseFragment(), @RequiresApi(Build.VERSION_CODES.N) private fun initData() { + mViewModel.sendUiIntent(UnmannedIntent.StartTaskOrOrderLooper) + //监听返回的数据状态 lifecycleScope.launchWhenStarted { mViewModel.uiStateFlow.map {it.taskAndOrderUiState}.collect {taskAndOrderUiState -> @@ -130,14 +132,37 @@ class TaxiBeingTaskFragment : BaseFragment(), if (taskAndOrderUiState.untruthTask != null){ updateUntruthTask(taskAndOrderUiState.untruthTask) }else{ + updateReserveOrderChanged(taskAndOrderUiState.taskAndOrder) updateCurrentOrderStatusChanged(taskAndOrderUiState.taskAndOrder) } } + + is TaskAndOrderUiState.UPDATEORDERMILEANDDUR -> { + updateOrderTotalMilAndDur(taskAndOrderUiState.mileage,taskAndOrderUiState.duration) + } } } } } + @RequiresApi(Build.VERSION_CODES.N) + private fun updateOrderTotalMilAndDur(mileage: Float, duration: Int) { + val strHtml2 = + ("里程 " + " $mileage " + " 公里 " + + ",剩余 " + " $duration " + " 分钟") + taskOtherInfo.text = Html.fromHtml(strHtml2,Html.FROM_HTML_MODE_LEGACY) + } + + private fun updateReserveOrderChanged(taskAndOrder: QueryCurrentTaskRespBean.Result?) { + mTaxiFragment?.let { + it.updateReserveOrderChanged(taskAndOrder) + } + } + + fun onChangeOperationStatus(){ + mViewModel.sendUiIntent(UnmannedIntent.StartOrPauseReceivingOrder) + } + private fun updateUntruthTask(untruthTask: StartServiceRespBean.Result?) { if (untruthTask == null) return isHaveBeingOrder(true) @@ -214,8 +239,8 @@ class TaxiBeingTaskFragment : BaseFragment(), return } - if (taskAndOrder.currentStatus == TaskStatusEnum.CompleteTask.code && - taskAndOrder.startSite == null){ + if (taskAndOrder.currentStatus == TaskStatusEnum.CompleteTask.code + && taskAndOrder.order == null && taskAndOrder.endSite == null){ isHaveBeingOrder(false) return } @@ -285,11 +310,6 @@ class TaxiBeingTaskFragment : BaseFragment(), TaxiOrderStatusEnum.ArriveAtEnd.code -> { //到达目的地 taskStatus.text = resources.getString(R.string.task_start_end_site) - val strHtml2 = - ("里程 " + " ${order.fullMileage} " + " 公里 " - + ",剩余 " + " ${order.fullMinutes} " + " 分钟") - taskOtherInfo.text = Html.fromHtml(strHtml2,Html.FROM_HTML_MODE_LEGACY) - updateOrderBottomBtn( getString(R.string.module_och_taxi_order_server_end), Color.parseColor("#FFFFFF"), @@ -818,6 +838,11 @@ class TaxiBeingTaskFragment : BaseFragment(), taskClickBtn.isClickable = isClickable } + override fun onDestroy() { + mViewModel.startOrStopOrderLoop(false) + super.onDestroy() + } + /** * END */ diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.kt index a9d7af3822..1f8982f9f5 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.kt @@ -10,7 +10,6 @@ import android.view.ViewGroup import android.widget.TextView import androidx.annotation.RequiresApi import androidx.fragment.app.FragmentTransaction -import androidx.lifecycle.ViewModelProvider import com.alibaba.android.arouter.launcher.ARouter import com.mogo.commons.module.status.MogoStatusManager import com.mogo.eagle.core.data.temp.EventLogout @@ -21,11 +20,10 @@ import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.provider.LoginService import com.mogo.och.taxi.R import com.mogo.och.taxi.base.BaseTaxiTabFragment +import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean import com.mogo.och.taxi.model.TaxiModel -import com.mogo.och.taxi.model.TaxiUnmannedViewModel import com.mogo.och.taxi.network.LoginBusImpl import com.mogo.och.taxi.presenter.TaxiPresenter -import com.mogo.och.taxi.ui.unmanned.UnmannedIntent import com.mogo.och.taxi.utils.TPRouteDataTestUtils import kotlinx.android.synthetic.main.taxi_base_fragment.module_mogo_och_operation_status import kotlinx.android.synthetic.main.taxi_base_fragment.taxi_driver_role_tv @@ -43,7 +41,6 @@ class TaxiFragment : BaseTaxiTabFragment(), private var serverOrdersFragmentWR: WeakReference? = null private var personalDialogFragment: WeakReference? = null private var loginService: LoginService? = null - private lateinit var mViewModel : TaxiUnmannedViewModel override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) @@ -54,11 +51,6 @@ class TaxiFragment : BaseTaxiTabFragment(), } } - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - mViewModel = ViewModelProvider(this, ViewModelProvider.NewInstanceFactory()).get(TaxiUnmannedViewModel::class.java) - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -115,7 +107,13 @@ class TaxiFragment : BaseTaxiTabFragment(), override fun onChangeOperationStatus() { super.onChangeOperationStatus() - mViewModel.sendUiIntent(UnmannedIntent.StartOrPauseReceivingOrder) + if (null == serverOrdersFragmentWR || serverOrdersFragmentWR!!.get() == null) return + serverOrdersFragmentWR!!.get()!!.onChangeOperationStatus() + } + + fun updateReserveOrderChanged(taskAndOrder: QueryCurrentTaskRespBean.Result?){ + if (null == serverOrdersFragmentWR || serverOrdersFragmentWR!!.get() == null) return + serverOrdersFragmentWR!!.get()!!.updateOrderChanged(taskAndOrder) } fun switchVRFlatMode(isVRMode: Boolean) { diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiReserveOrderFragment.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiReserveOrderFragment.kt index 9580398b8c..e18ee72723 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiReserveOrderFragment.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiReserveOrderFragment.kt @@ -7,16 +7,11 @@ import android.graphics.Color import android.graphics.drawable.GradientDrawable import android.os.Bundle import android.view.View -import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope import com.mogo.commons.mvp.BaseFragment -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.och.taxi.R import com.mogo.och.taxi.bean.OrderDetail import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean import com.mogo.och.taxi.constant.TaskTypeEnum -import com.mogo.och.taxi.model.TaxiUnmannedViewModel -import com.mogo.och.taxi.ui.unmanned.TaskAndOrderUiState import kotlinx.android.synthetic.main.unmanned_being_order.endStationName import kotlinx.android.synthetic.main.unmanned_being_order.mBeingOrderLayout import kotlinx.android.synthetic.main.unmanned_being_order.naviToEnd @@ -28,7 +23,6 @@ import kotlinx.android.synthetic.main.unmanned_being_order.taskClickBtn import kotlinx.android.synthetic.main.unmanned_being_order.taskOtherInfo import kotlinx.android.synthetic.main.unmanned_being_order.taskStatus import kotlinx.android.synthetic.main.unmanned_being_order.taskTypeTv -import kotlinx.coroutines.flow.map /** * @author: wangmingjun @@ -36,11 +30,9 @@ import kotlinx.coroutines.flow.map */ class TaxiReserveOrderFragment : BaseFragment() { private val mData: MutableList = ArrayList() - private lateinit var mViewModel : TaxiUnmannedViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mViewModel = ViewModelProvider(this, ViewModelProvider.NewInstanceFactory()).get(TaxiUnmannedViewModel::class.java) } override fun getLayoutId(): Int { @@ -51,33 +43,10 @@ class TaxiReserveOrderFragment : BaseFragment() { return "TaxiReserveOrderFragment" } - override fun onAttach(context: Context) { - super.onAttach(context) - } - override fun initViews() { - initData() } - private fun initData() { - //监听返回的数据状态 - lifecycleScope.launchWhenStarted { - mViewModel.uiStateFlow.map {it.taskAndOrderUiState}.collect {state -> - CallerLogger.d(TAG, "uiStateFlow: $state") - when(state){ - is TaskAndOrderUiState.INIT -> { - - } - - is TaskAndOrderUiState.TASKANDORDER -> { - updateOrderChanged(state.taskAndOrder) - } - } - } - } - } - - private fun updateOrderChanged(model: QueryCurrentTaskRespBean.Result?) { + fun updateOrderChanged(model: QueryCurrentTaskRespBean.Result?) { if (model == null) return if (model.order == null || model.taskType != TaskTypeEnum.ToOrderStartTask.code){ showNoOrderView() diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.kt index f81e0cee14..8ecad1cfe0 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.kt @@ -18,6 +18,7 @@ import com.mogo.commons.mvp.BaseFragment import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.och.taxi.R +import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean import kotlinx.android.synthetic.main.taxi_server_orders_panel.module_och_taxi_tab import kotlinx.android.synthetic.main.taxi_server_orders_panel.module_och_taxi_view_pager import me.jessyan.autosize.utils.AutoSizeUtils @@ -163,6 +164,16 @@ class TaxiServerOrdersFragment : BaseFragment(){ beingTaskFragment!!.updateDistanceAndTime(meters, timeInSecond) } + fun onChangeOperationStatus(){ + if (null == beingTaskFragment) return + beingTaskFragment!!.onChangeOperationStatus() + } + + fun updateOrderChanged(model: QueryCurrentTaskRespBean.Result?){ + if (null == reserveOrdersFragment) return + reserveOrdersFragment!!.updateOrderChanged(model) + } + companion object { const val TAG = "TaxiServerOrdersFragment" fun newInstance(): TaxiServerOrdersFragment { diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedIntent.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedIntent.kt index 2b12c6b8c1..43211d5bfb 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedIntent.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedIntent.kt @@ -11,6 +11,8 @@ sealed class UnmannedIntent: IUiIntent{ //开始接单 、 暂停接单 object StartOrPauseReceivingOrder : UnmannedIntent() + object StartTaskOrOrderLooper : UnmannedIntent() + //取消订单 class CancelOrder(type: Int, reason: String) : UnmannedIntent() diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedState.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedState.kt index 8dbb9d2b07..e07d435ab5 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedState.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedState.kt @@ -10,4 +10,6 @@ data class UnmannedState(val taskAndOrderUiState: TaskAndOrderUiState) : IUiStat sealed class TaskAndOrderUiState { object INIT : TaskAndOrderUiState() data class TASKANDORDER(val taskAndOrder: QueryCurrentTaskRespBean.Result?, val untruthTask: StartServiceRespBean.Result?) : TaskAndOrderUiState()//演练任务、接驾、送驾任务 + + data class UPDATEORDERMILEANDDUR(val mileage: Float, val duration: Int): TaskAndOrderUiState() }