From 50c0d1f36f9938a2d51b9510b07d731bd69d82f1 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 5 Jul 2023 14:31:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=AE=E8=AF=A2=E4=BF=AE=E6=94=B9=E5=88=B0?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E8=BD=AE=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../passenger/model/TaxiPassengerModel.kt | 76 ++++++------ .../model/TaxiPassengerModelLoopManager.java | 114 ------------------ 2 files changed, 38 insertions(+), 152 deletions(-) delete mode 100644 OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModelLoopManager.java diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt index acdfd49851..e3d4d2d926 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt @@ -26,11 +26,11 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02Lis import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxEventListenerManager import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isPassenger +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI_P import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr -import com.mogo.eagle.core.utilcode.util.CoordinateUtils import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.biz.network.OchCommonServiceCallback @@ -44,11 +44,11 @@ import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceM import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager.addTrajectoryListener import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager.removeListener import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager.setStationPoint +import com.mogo.och.common.module.manager.loopmanager.BizLoopManager +import com.mogo.och.common.module.manager.loopmanager.LoopInfo import com.mogo.och.common.module.map.AmapNaviToDestinationModel import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil.calculateRouteSumLength -import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil.coordinateConverterLatlngToLocation import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil.coordinateConverterWgsToGcjListCommon -import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil.coordinateConverterWgsToGcjLocations import com.mogo.och.common.module.utils.PinYinUtil import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean @@ -75,13 +75,10 @@ import io.reactivex.disposables.Disposable import io.reactivex.exceptions.UndeliverableException import io.reactivex.functions.Consumer import io.reactivex.plugins.RxJavaPlugins -import mogo.telematics.pad.MessagePad import mogo.telematics.pad.MessagePad.ArrivalNotification import mogo.telematics.pad.MessagePad.GlobalPathResp -import system_master.SystemStatusInfo import java.io.IOException import java.util.concurrent.ConcurrentHashMap -import java.util.concurrent.TimeUnit /** * Created by pangfan on 2021/8/19 @@ -95,6 +92,10 @@ object TaxiPassengerModel : IOCHTaxiPassengerNaviChangedCallback { private val TAG = TaxiPassengerModel::class.java.simpleName + private val STARTREADYTOAUTOPILOT = "startReadyToAutopilot" + private val MINANDWAITSERVICE = "mInAndWaitService" + private val MQUERYORDERREMAINING = "mQueryOrderRemaining" + // 获取当前订单 @Volatile var currentOCHOrder: TaxiPassengerOrderQueryRespBean.Result? = null//当前订单 @@ -132,32 +133,32 @@ object TaxiPassengerModel : IOCHTaxiPassengerNaviChangedCallback { // The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the excTeption has nowhere to go to begin with RxJavaPlugins.setErrorHandler(Consumer { e -> if (e is UndeliverableException) { - d(SceneConstant.M_TAXI_P + TAG, "UndeliverableException") + d(M_TAXI_P + TAG, "UndeliverableException") return@Consumer } if (e is IOException) { // // fine, irrelevant network problem or API that throws on cancellation - d(SceneConstant.M_TAXI_P + TAG, "IOException") + d(M_TAXI_P + TAG, "IOException") return@Consumer } if (e is InterruptedException) { // fine, some blocking code was interrupted by a dispose call - d(SceneConstant.M_TAXI_P + TAG, "InterruptedException") + d(M_TAXI_P + TAG, "InterruptedException") return@Consumer } if (e is NullPointerException || e is IllegalArgumentException) { // that's likely a bug in the application - d(SceneConstant.M_TAXI_P + TAG, "NullPointerException or IllegalArgumentException") + d(M_TAXI_P + TAG, "NullPointerException or IllegalArgumentException") Thread.currentThread().uncaughtExceptionHandler?.uncaughtException(Thread.currentThread(), e) return@Consumer } if (e is IllegalStateException) { // that's a bug in RxJava or in a custom operator - d(SceneConstant.M_TAXI_P + TAG, "IllegalStateException") + d(M_TAXI_P + TAG, "IllegalStateException") Thread.currentThread().uncaughtExceptionHandler?.uncaughtException(Thread.currentThread(), e) return@Consumer } - d(SceneConstant.M_TAXI_P + TAG, "Undeliverable exception") + d(M_TAXI_P + TAG, "Undeliverable exception") }) startOrStopOrderLoop() } @@ -216,11 +217,11 @@ object TaxiPassengerModel : IOCHTaxiPassengerNaviChangedCallback { * false 关闭订单轮训 */ private fun startOrStopOrderLoop(start: Boolean) { - d(SceneConstant.M_TAXI_P + TAG, "startOrStopOrderLoop() $start") + d(M_TAXI_P + TAG, "startOrStopOrderLoop() $start") if (start) { - TaxiPassengerModelLoopManager.getInstance().startInAndWaitOrdersLoop() + BizLoopManager.setLoopFunction(MINANDWAITSERVICE,LoopInfo(2, TaxiPassengerModel::queryInAndWaitOrders)) } else { - TaxiPassengerModelLoopManager.getInstance().stopInAndWaitOrdersLoop() + BizLoopManager.removeLoopFunction(MINANDWAITSERVICE) } } @@ -278,7 +279,7 @@ object TaxiPassengerModel : IOCHTaxiPassengerNaviChangedCallback { override fun onError() {} override fun onFail(code: Int, msg: String) { - e(SceneConstant.M_TAXI_P + TAG, "queryInAndWaitOrders$code$msg") + e(M_TAXI_P + TAG, "queryInAndWaitOrders$code$msg") } }) } @@ -383,7 +384,7 @@ object TaxiPassengerModel : IOCHTaxiPassengerNaviChangedCallback { } } private val mNetWorkIntentListener = IMogoIntentListener { intentStr, intent -> - d(SceneConstant.M_TAXI_P + TAG, "onIntentReceived = %s", intentStr) + d(M_TAXI_P + TAG, "onIntentReceived = %s", intentStr) if (ConnectivityManager.CONNECTIVITY_ACTION == intentStr) { if (NetworkUtils.isConnected(mContext)) { startOrStopOrderLoop(true) @@ -544,9 +545,9 @@ object TaxiPassengerModel : IOCHTaxiPassengerNaviChangedCallback { fun startOrStopQueryOrderRemaining(isStart: Boolean) { if (isStart) { - TaxiPassengerModelLoopManager.getInstance().startQueryOrderRemainingLoop() + BizLoopManager.setLoopFunction(MQUERYORDERREMAINING,LoopInfo(2, TaxiPassengerModel::queryOrderRemaining)) } else { - TaxiPassengerModelLoopManager.getInstance().stopQueryOrderRemainingLoop() + BizLoopManager.removeLoopFunction(MQUERYORDERREMAINING) } } @@ -561,10 +562,7 @@ object TaxiPassengerModel : IOCHTaxiPassengerNaviChangedCallback { object : OchCommonServiceCallback { override fun onSuccess(data: TaxiPassengerOrderQueryRemainingResp) { if (data.data != null) { - e( - SceneConstant.M_TAXI_P + TAG, - "distance = " + data.data.distance + " ,duration = " + data.data.duration - ) + e(M_TAXI_P + TAG, "distance = " + data.data.distance + " ,duration = " + data.data.duration) for (callback in mOrderStatusCallbackMap.values) { callback.onCurrentOrderDistToEndChanged( data.data.distance, @@ -580,13 +578,13 @@ object TaxiPassengerModel : IOCHTaxiPassengerNaviChangedCallback { fun queryOrderRouteList() { if (currentOCHOrder == null) return - d(SceneConstant.M_TAXI_P + TAG, "--route--- queryOrderRouteList") + d(M_TAXI_P + TAG, "--route--- queryOrderRouteList") TaxiPassengerServiceManager.queryOrderRouteList( mContext!!, currentOCHOrder!!.orderNo, object : OchCommonServiceCallback { override fun onSuccess(data: TaxiPassengerQueryOrderRouteResp) { - d(SceneConstant.M_TAXI_P + TAG, "--route---" + GsonUtil.jsonFromObject(data)) + d(M_TAXI_P + TAG, "--route---" + GsonUtil.jsonFromObject(data)) if (data.data != null && data.data != null && data.data.size > 0) { if (mAutopilotPlanningCallback != null) { calculateRouteLineSum(data.data) @@ -656,7 +654,7 @@ object TaxiPassengerModel : IOCHTaxiPassengerNaviChangedCallback { override fun onFail(code: Int, msg: String) { ToastUtils.showLong("当前网络异常,请重新验证;若始终异常,请您在手机端取消行程,给您带来不便,十分抱歉!") e( - SceneConstant.M_TAXI_P + TAG, + M_TAXI_P + TAG, "提交用户输入的手机后4位、并进行状态扭转 后台结果错误$code$msg" ) } @@ -677,12 +675,12 @@ object TaxiPassengerModel : IOCHTaxiPassengerNaviChangedCallback { override fun onError() { ToastUtils.showLong("网络错误请稍后再试") - e(SceneConstant.M_TAXI_P + TAG, "对订单进行打分 1-5分 网络错误") + e(M_TAXI_P + TAG, "对订单进行打分 1-5分 网络错误") commonCallback?.onCommonCallback(false) } override fun onFail(code: Int, msg: String) { - e(SceneConstant.M_TAXI_P + TAG, "对订单进行打分 1-5分 后台结果错误$code$msg") + e(M_TAXI_P + TAG, "对订单进行打分 1-5分 后台结果错误$code$msg") commonCallback?.onCommonCallback(false) } }) @@ -722,9 +720,11 @@ object TaxiPassengerModel : IOCHTaxiPassengerNaviChangedCallback { fun startOrStopReadyToAutopilotLoop(isStart: Boolean) { if (isStart) { - TaxiPassengerModelLoopManager.getInstance().startReadyToAutopilot() + BizLoopManager.setLoopFunction(STARTREADYTOAUTOPILOT, LoopInfo(1, TaxiPassengerModel::loopQueryPilotStatus)) + CallerLogger.i(M_TAXI_P + TAG, "startReadyToAutopilot()") } else { - TaxiPassengerModelLoopManager.getInstance().stopReadyToAutopilot() + BizLoopManager.removeLoopFunction(STARTREADYTOAUTOPILOT) + CallerLogger.i(M_TAXI_P + TAG, "stopReadyToAutopilot()") } } @@ -747,7 +747,7 @@ object TaxiPassengerModel : IOCHTaxiPassengerNaviChangedCallback { fun startAutopilot() { if (!checkCurrentOCHOrder()) { - e(SceneConstant.M_TAXI_P + TAG, "no order or order is empty.") + e(M_TAXI_P + TAG, "no order or order is empty.") ToastUtils.showShort("当前订单不存在或异常!") return } @@ -769,12 +769,12 @@ object TaxiPassengerModel : IOCHTaxiPassengerNaviChangedCallback { } val parameters = initAutopilotControlParameters() if (parameters == null) { - d(SceneConstant.M_TAXI_P + TAG, "AutopilotControlParameters is empty.") + d(M_TAXI_P + TAG, "AutopilotControlParameters is empty.") return } startAutoPilot(parameters) d( - SceneConstant.M_TAXI_P + TAG, + M_TAXI_P + TAG, "start autopilot with parameter: %s", GsonUtil.jsonFromObject(parameters) + " ,startSiteName=" + currentOCHOrder!!.startSiteAddr @@ -791,7 +791,7 @@ object TaxiPassengerModel : IOCHTaxiPassengerNaviChangedCallback { private fun initAutopilotControlParameters(): AutopilotControlParameters? { if (!checkCurrentOCHOrder()) { - e(SceneConstant.M_TAXI_P + TAG, "no order or order is empty.") + e(M_TAXI_P + TAG, "no order or order is empty.") ToastUtils.showShort("当前订单不存在或异常!") return null } @@ -827,15 +827,15 @@ object TaxiPassengerModel : IOCHTaxiPassengerNaviChangedCallback { fun updateAutopilotControlParameters() { val parameters = initAutopilotControlParameters() if (null == parameters) { - e(SceneConstant.M_TAXI_P + TAG, "AutopilotControlParameters is empty.") + e(M_TAXI_P + TAG, "AutopilotControlParameters is empty.") return } - d(SceneConstant.M_TAXI_P + TAG, "AutopilotControlParameters is update.") + d(M_TAXI_P + TAG, "AutopilotControlParameters is update.") updateAutopilotControlParameters(parameters) } fun clearAutopilotControlParameters() { - d(SceneConstant.M_TAXI_P + TAG, "AutopilotControlParameters is clear.") + d(M_TAXI_P + TAG, "AutopilotControlParameters is clear.") updateAutopilotControlParameters(null) } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModelLoopManager.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModelLoopManager.java deleted file mode 100644 index 2fdc5a9d10..0000000000 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModelLoopManager.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.mogo.och.taxi.passenger.model; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P; - -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; - -import java.util.concurrent.TimeUnit; - -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.CompositeDisposable; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.Consumer; -import io.reactivex.schedulers.Schedulers; - -/** - * Created on 2021/9/10 - * - * 管理轮询逻辑(订单轮询、新单轮询、新单抢单结果轮询等等) - */ -public class TaxiPassengerModelLoopManager { - - private static final String TAG = TaxiPassengerModelLoopManager.class.getSimpleName(); - - private static final class SingletonHolder { - private static final TaxiPassengerModelLoopManager INSTANCE = new TaxiPassengerModelLoopManager(); - } - - public static TaxiPassengerModelLoopManager getInstance() { - return SingletonHolder.INSTANCE; - } - - private Disposable mInAndWaitServiceDisposable; //进行中、待服务订单列表轮询 - private Disposable mQueryOrderRemainingDisposable; //心跳轮询 - private CompositeDisposable mRouteWipeDisposable; //轨迹擦除 - private Disposable mReadyToAutopilotDisposable; //轮询是否可开启自动驾驶 - - public void startReadyToAutopilot() { - if (mReadyToAutopilotDisposable != null && !mReadyToAutopilotDisposable.isDisposed()) { - return; - } - CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "startReadyToAutopilot()"); - mReadyToAutopilotDisposable = Observable.interval(TaxiPassengerConst.LOOP_DELAY, - TaxiPassengerConst.LOOP_PERIOD_1S, TimeUnit.MILLISECONDS) - .map((aLong -> aLong + 1)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(aLong -> TaxiPassengerModel.INSTANCE.loopQueryPilotStatus()); - } - - public void stopReadyToAutopilot() { - if (mReadyToAutopilotDisposable != null) { - CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "stopReadyToAutopilot()"); - mReadyToAutopilotDisposable.dispose(); - mReadyToAutopilotDisposable = null; - } - } - - public void stopRouteAndWipe() { - if (mRouteWipeDisposable != null) { - CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "stopRouteAndWipe()"); - mRouteWipeDisposable.dispose(); - mRouteWipeDisposable = null; - } - } - - public void startInAndWaitOrdersLoop() { - if (mInAndWaitServiceDisposable != null && !mInAndWaitServiceDisposable.isDisposed()) { - return; - } - CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "startInAndWaitOrdersLoop()"); - mInAndWaitServiceDisposable = Observable.interval(TaxiPassengerConst.LOOP_DELAY, - TaxiPassengerConst.LOOP_PERIOD_2S, TimeUnit.MILLISECONDS) - .map((aLong -> aLong + 1)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(aLong -> TaxiPassengerModel.INSTANCE.queryInAndWaitOrders()); - } - - public void stopInAndWaitOrdersLoop() { - if (mInAndWaitServiceDisposable != null) { - CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "stopInAndWaitOrdersLoop()"); - mInAndWaitServiceDisposable.dispose(); - mInAndWaitServiceDisposable = null; - } - } - - /** - * 轮训查下 查询订单剩余里程和时间 - */ - public void startQueryOrderRemainingLoop() { - if (mQueryOrderRemainingDisposable != null && !mQueryOrderRemainingDisposable.isDisposed()) { - return; - } - CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "startQueryOrderRemainingLoop()"); - mQueryOrderRemainingDisposable = Observable.interval(TaxiPassengerConst.LOOP_DELAY, - TaxiPassengerConst.LOOP_CALCULATEROUTE_2S, TimeUnit.MILLISECONDS) - .map((aLong -> aLong + 1)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(aLong -> TaxiPassengerModel.INSTANCE.queryOrderRemaining()); - } - - public void stopQueryOrderRemainingLoop() { - if (mQueryOrderRemainingDisposable != null) { - CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "stopQueryOrderRemainingLoop()"); - mQueryOrderRemainingDisposable.dispose(); - mQueryOrderRemainingDisposable = null; - } - } -}