diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiCurrentTaskViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiCurrentTaskViewModel.kt index 98cddb651d..5e8c681631 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiCurrentTaskViewModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiCurrentTaskViewModel.kt @@ -326,7 +326,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } }else{ //演练任务拉取 6.2.0使用配置的时间拉取, 默认45s TaxiTaskModel.startPrepareTaskDelay( - CallerUnmannedListenerManager.getVirtualTaskPullTaskInterval() * 1000L, result?.endSite!!.siteId) + CallerUnmannedListenerManager.getVirtualTaskPullTaskIntervalF() * 1000L, result?.endSite!!.siteId) } clearDemoModeAndACParameters() @@ -361,7 +361,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), //获取新的任务 val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() currentTaskWithOrder?.endSite?.also {//使用配置的时间拉取, 默认是45s - TaxiTaskModel.startPrepareTaskDelay(CallerUnmannedListenerManager.getVirtualTaskPullTaskInterval() * 1000L, + TaxiTaskModel.startPrepareTaskDelay(CallerUnmannedListenerManager.getVirtualTaskPullTaskIntervalF() * 1000L, it.siteId) } // 设置task执行相关状态,切换模式时判断使用 diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt index e09be69d5a..c1c63aefdf 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt @@ -270,6 +270,17 @@ object TaxiTaskModel { override fun onVirtualTaskPullTaskIntervalUpdate(time: Int) { DebugView.printInfoMsg("[演练任务拉取时间间隔变化] afterValue=${time}秒") } + + override fun onSwitch(isLoop: Boolean) { + if(isLoop){ //由非轮训改为轮训 重新启动轮训 + if (LoginStatusManager.isOpenOrderType()) { + endService(true) + } + }else{// 由轮训改为非轮训 + startPrepareTaskDelay(CallerUnmannedListenerManager.getVirtualTaskPullTaskIntervalF() * 1000L, + 0) + } + } } private val mMogoAutopilotStatusListener: IOchAutopilotStatusListener = @@ -1029,10 +1040,10 @@ object TaxiTaskModel { * ⑥ 拉取任务失败后5s后重试 */ fun startPrepareTaskDelay(delayTime: Long, siteId: Long) { + removePrepareTaskDelay() if(delayTime<0){ return } - removePrepareTaskDelay() mPrepareTaskDelayRunnable = Runnable { prepareNextTask(siteId) @@ -1111,74 +1122,85 @@ object TaxiTaskModel { return } if (LoginStatusManager.isOpenOrderType()) {//接单状态下,去结束 - DebugView.printInfoMsg("[暂停接单] 准备发送请求") - TaxiTaskWithOrderServiceManager.endService( - mContext, - object : OchCommonServiceCallback { - override fun onSuccess(data: BaseData?) { - DebugView.printInfoMsg("[暂停接单] 请求success") - LoginStatusManager.queryLoginStatusByNet() - //需要将虚拟任务停掉, 虚拟任务会再开始接单后获取新的 - mDriveToNearestStationTask = null - mTaxiCarServiceCallback?.onCarEndServiceSuccess( - mDriveToNearestStationTask, - mCurrentTaskWithOrder - ) - } - - override fun onError() { - mTaxiCarServiceCallback?.onCarEndServiceError() - DebugView.printErrorMsg("[暂停接单] 请求error") - } - - override fun onFail(code: Int, msg: String) { - DebugView.printErrorMsg("[暂停接单] 请求fail, code=$code, msg=$msg") - mTaxiCarServiceCallback?.onCarEndServiceFailed(code, msg) - } - }) + endService(false) } else { - //暂停接单状态下,去接单 - DebugView.printInfoMsg("[开始接单] 准备发送请求") - val gcJ02Location = OchLocationManager.getGCJ02Location() - TaxiTaskWithOrderServiceManager.startService(mContext, - gcJ02Location.latitude, gcJ02Location.longitude, - object : OchCommonServiceCallback { - override fun onSuccess(data: StartServiceRespBean?) { - if (data == null) return - DebugView.printInfoMsg("[开始接单] 请求success") - d(TAG, "data.data=" + GsonUtil.jsonFromObject(data.data)) - LoginStatusManager.queryLoginStatusByNet() - mCurrentTaskWithOrder?.apply { - if (endSite != null) { - when { - currentStatus == TaskStatusEnum.CompleteTask.code && order != null -> return - currentStatus < TaskStatusEnum.CompleteTask.code -> return - } - } - if (currentStatus == TaskStatusEnum.None.code && order != null){ - //订单送驾到站, 但是还没点服务完成的情况, 此时endSite == null currentStatus == 0 - return + startService() + } + } + + private fun endService(needStart: Boolean) { + DebugView.printInfoMsg("[暂停接单] 准备发送请求") + TaxiTaskWithOrderServiceManager.endService( + mContext, + object : OchCommonServiceCallback { + override fun onSuccess(data: BaseData?) { + DebugView.printInfoMsg("[暂停接单] 请求success") + LoginStatusManager.queryLoginStatusByNet() + //需要将虚拟任务停掉, 虚拟任务会再开始接单后获取新的 + mDriveToNearestStationTask = null + mTaxiCarServiceCallback?.onCarEndServiceSuccess( + mDriveToNearestStationTask, + mCurrentTaskWithOrder + ) + if(needStart){ + startService() + } + } + + override fun onError() { + mTaxiCarServiceCallback?.onCarEndServiceError() + DebugView.printErrorMsg("[暂停接单] 请求error") + } + + override fun onFail(code: Int, msg: String) { + DebugView.printErrorMsg("[暂停接单] 请求fail, code=$code, msg=$msg") + mTaxiCarServiceCallback?.onCarEndServiceFailed(code, msg) + } + }) + } + + private fun startService(){ + //暂停接单状态下,去接单 + DebugView.printInfoMsg("[开始接单] 准备发送请求") + val gcJ02Location = OchLocationManager.getGCJ02Location() + TaxiTaskWithOrderServiceManager.startService(mContext, + gcJ02Location.latitude, gcJ02Location.longitude, + object : OchCommonServiceCallback { + override fun onSuccess(data: StartServiceRespBean?) { + if (data == null) return + DebugView.printInfoMsg("[开始接单] 请求success") + d(TAG, "data.data=" + GsonUtil.jsonFromObject(data.data)) + LoginStatusManager.queryLoginStatusByNet() + mCurrentTaskWithOrder?.apply { + if (endSite != null) { + when { + currentStatus == TaskStatusEnum.CompleteTask.code && order != null -> return + currentStatus < TaskStatusEnum.CompleteTask.code -> return } } - mDriveToNearestStationTask = data.data - mLastArrivedSiteId = -1L //开始标定站点任务时, 到达站点标志位需复位 - mTaxiCarServiceCallback?.onCarStartServiceSuccess( - mDriveToNearestStationTask, - mCurrentTaskWithOrder - ) + if (currentStatus == TaskStatusEnum.None.code && order != null){ + //订单送驾到站, 但是还没点服务完成的情况, 此时endSite == null currentStatus == 0 + return + } } + mDriveToNearestStationTask = data.data + mLastArrivedSiteId = -1L //开始标定站点任务时, 到达站点标志位需复位 + mTaxiCarServiceCallback?.onCarStartServiceSuccess( + mDriveToNearestStationTask, + mCurrentTaskWithOrder + ) + } - override fun onFail(code: Int, msg: String) { - DebugView.printErrorMsg("[开始接单] 请求fail, code=$code, msg=$msg") - mTaxiCarServiceCallback?.onCarStartServiceFailed(code, msg) - } + override fun onFail(code: Int, msg: String) { + DebugView.printErrorMsg("[开始接单] 请求fail, code=$code, msg=$msg") + mTaxiCarServiceCallback?.onCarStartServiceFailed(code, msg) + } - override fun onError() { - DebugView.printErrorMsg("[开始接单] 请求error") - mTaxiCarServiceCallback?.onCarStartServiceError() - } - }) - } + override fun onError() { + DebugView.printErrorMsg("[开始接单] 请求error") + mTaxiCarServiceCallback?.onCarStartServiceError() + } + }) } /** diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index fe22693028..c5acc363ee 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -894,7 +894,7 @@ internal class SOPSettingView @JvmOverloads constructor( } } - val virtualTaskPullTaskInterval = CallerUnmannedListenerManager.getVirtualTaskPullTaskInterval() + val virtualTaskPullTaskInterval = CallerUnmannedListenerManager.getVirtualTaskPullTaskIntervalF() rbFive.isChecked = virtualTaskPullTaskInterval == 5 rbFifteen.isChecked = virtualTaskPullTaskInterval == 15 rbThirty.isChecked = virtualTaskPullTaskInterval == 30 diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/unmanned/IUnmannedListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/unmanned/IUnmannedListener.kt index f44f2e5565..25086289b6 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/unmanned/IUnmannedListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/unmanned/IUnmannedListener.kt @@ -5,4 +5,5 @@ interface IUnmannedListener { * 单位: 秒(s) */ fun onVirtualTaskPullTaskIntervalUpdate(time: Int) + fun onSwitch(isLoop:Boolean){} } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/unmanned/CallerUnmannedListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/unmanned/CallerUnmannedListenerManager.kt index bace10ba04..05a43d8285 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/unmanned/CallerUnmannedListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/unmanned/CallerUnmannedListenerManager.kt @@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.call.unmanned import android.util.Log import com.mogo.eagle.core.function.api.unmanned.IUnmannedListener import com.mogo.eagle.core.function.call.base.CallerBase +import kotlin.properties.Delegates /** * 无人化功能状态监听、回调管理者 @@ -10,7 +11,28 @@ import com.mogo.eagle.core.function.call.base.CallerBase object CallerUnmannedListenerManager : CallerBase() { private const val TAG = "CallerUnmannedListenerManager" - private var virtualTaskPullTaskInterval: Int = 45 //单位:秒 + //单位:秒 + private var virtualTaskPullTaskInterval: Int by Delegates.observable(45) { _, oldValue, newValue -> + if(oldValue<0&&newValue>0){ + M_LISTENERS.forEach { + val listener = it.value + try { + listener.onSwitch(true)// 由非轮训改为轮训 + } catch (e: Exception) { + Log.e(TAG, "转发消息出现异常:${e.message}") + } + } + }else if(oldValue>0&&newValue<0){ + M_LISTENERS.forEach { + val listener = it.value + try { + listener.onSwitch(false)// 由轮训改为非轮训 + } catch (e: Exception) { + Log.e(TAG, "转发消息出现异常:${e.message}") + } + } + } + } override fun doSomeAfterAddListener(tag: String, listener: IUnmannedListener) { super.doSomeAfterAddListener(tag, listener) @@ -32,7 +54,7 @@ object CallerUnmannedListenerManager : CallerBase() { /** * 获取无人化演练拉取的时间间隔(单位: 秒) */ - fun getVirtualTaskPullTaskInterval(): Int { + fun getVirtualTaskPullTaskIntervalF(): Int { return virtualTaskPullTaskInterval } } \ No newline at end of file