diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerControllerStatusCallback.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerControllerStatusCallback.java deleted file mode 100644 index dd4b3336fd..0000000000 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerControllerStatusCallback.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.mogo.och.taxi.passenger.callback; - -import com.mogo.eagle.core.data.map.MogoLocation; - -/** - * Created on 2021/9/10 - * - * Model->Presenter回调:状态控制器监听(accOn、adas ui show、voice ui show、push ui show、v2x ui show等等) - */ -public interface IOCHTaxiPassengerControllerStatusCallback { - // 是否vr map模式 - void onVRModeChanged(boolean isVRMode); - // 自车定位 - void onCarLocationChanged(MogoLocation location); -} diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerOrderStatusEnum.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerOrderStatusEnum.kt index 1e3ec5ccd0..19dfedc935 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerOrderStatusEnum.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerOrderStatusEnum.kt @@ -35,7 +35,7 @@ enum class TaxiPassengerOrderStatusEnum(val code: Int) { companion object { @JvmStatic - fun valueOf(code: Int): TaxiPassengerOrderStatusEnum? { + fun valueOf(code: Int): TaxiPassengerOrderStatusEnum { for (value in values()) { if (value.code == code) { return value 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 f95bba5744..b707158df8 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 @@ -1,300 +1,231 @@ -package com.mogo.och.taxi.passenger.model; +package com.mogo.och.taxi.passenger.model -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P; - -import android.content.Context; -import android.content.Intent; -import android.net.ConnectivityManager; -import android.os.Looper; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.amap.api.maps.model.LatLng; -import com.amap.api.navi.model.NaviLatLng; -import com.elegant.network.utils.GsonUtil; -import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager; -import com.mogo.commons.module.intent.IMogoIntentListener; -import com.mogo.commons.module.intent.IntentManager; -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.data.autopilot.AutopilotControlParameters; -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo; -import com.mogo.eagle.core.data.config.FunctionBuildConfig; -import com.mogo.eagle.core.data.enums.DataSourceType; -import com.mogo.eagle.core.data.map.MogoLocation; -import com.mogo.eagle.core.data.msgbox.MsgBoxBean; -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; -import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener; -import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener; -import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxEventListener; -import com.mogo.eagle.core.function.api.datacenter.union.ILimitingVelocityListener; -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.CallerChassisLocationGCJ02ListenerManager; -import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager; -import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxEventListenerManager; -import com.mogo.eagle.core.function.call.v2x.CallerLimitingVelocityListenerManager; -import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -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.eagle.core.utilcode.util.UiThreadHandler; -import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; -import com.mogo.och.common.module.callback.OchAdasStartFailureCallback; -import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager; -import com.mogo.och.common.module.manager.OCHAdasAbilityManager; -import com.mogo.och.common.module.manager.distancemamager.IDistanceListener; -import com.mogo.och.common.module.manager.distancemamager.ITrajectoryListener; -import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager; -import com.mogo.och.common.module.map.AmapNaviToDestinationModel; -import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; -import com.mogo.och.common.module.utils.PinYinUtil; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerQueryOrderRouteResp; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerStartReqBean; -import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerADASStatusCallback; -import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerAutopilotPlanningCallback; -import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCallback; -import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerNaviChangedCallback; -import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback; -import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonCallback; -import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonValueCallback; -import com.mogo.och.taxi.passenger.callback.ITaxiPassengerVeloctityCallback; -import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; -import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum; -import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceManager; -import com.mogo.och.taxi.passenger.ui.leftmenu.OverlayLeftViewUtils; -import com.mogo.och.taxi.passenger.utils.TaxiPassengerAnalyticsManager; - -import org.jetbrains.annotations.NotNull; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; - -import io.reactivex.Observable; -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_msg.MogoReportMsg; -import system_master.SystemStatusInfo; +import android.annotation.SuppressLint +import android.content.Context +import android.net.ConnectivityManager +import com.amap.api.maps.model.LatLng +import com.amap.api.navi.model.NaviLatLng +import com.elegant.network.utils.GsonUtil +import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager +import com.mogo.commons.module.intent.IMogoIntentListener +import com.mogo.commons.module.intent.IntentManager +import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters +import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLine +import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLonLat +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.data.map.MogoLocation +import com.mogo.eagle.core.data.msgbox.MsgBoxBean +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener +import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener +import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxEventListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.startAutoPilot +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager +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.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.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 +import com.mogo.och.common.module.callback.OchAdasStartFailureCallback +import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager.startLoopAbnormalFactors +import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager.stopLoopAbnormalFactors +import com.mogo.och.common.module.manager.OCHAdasAbilityManager +import com.mogo.och.common.module.manager.distancemamager.IDistanceListener +import com.mogo.och.common.module.manager.distancemamager.ITrajectoryListener +import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager.addDistanceListener +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.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 +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerQueryOrderRouteResp +import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerStartReqBean +import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerADASStatusCallback +import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerAutopilotPlanningCallback +import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerNaviChangedCallback +import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback +import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonCallback +import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonValueCallback +import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst +import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum +import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum.Companion.valueOf +import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceManager +import com.mogo.och.taxi.passenger.ui.leftmenu.OverlayLeftViewUtils +import com.mogo.och.taxi.passenger.ui.leftmenu.OverlayLeftViewUtils.transmissionIndexGet +import com.mogo.och.taxi.passenger.utils.TaxiPassengerAnalyticsManager +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 * * 网约车 - 出租车业务逻辑处理 */ -public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback { +@SuppressLint("StaticFieldLeak") +object TaxiPassengerModel : IOCHTaxiPassengerNaviChangedCallback { - private static final String TAG = TaxiPassengerModel.class.getSimpleName(); + private var mContext: Context? = null - private static final class SingletonHolder { - private static final TaxiPassengerModel INSTANCE = new TaxiPassengerModel(); + private val TAG = TaxiPassengerModel::class.java.simpleName + + // 获取当前订单 + @Volatile + var currentOCHOrder: TaxiPassengerOrderQueryRespBean.Result? = null//当前订单 + + @Volatile + private var mInServiceList = emptyList() //进行中订单 + + private var mADASStatusCallback: IOCHTaxiPassengerADASStatusCallback? = null//Model->Presenter:自动驾驶状态相关 + private var mAutopilotPlanningCallback: IOCHTaxiPassengerAutopilotPlanningCallback? = null//Model->Presenter:自动驾驶线路规划 + private val mOrderStatusCallbackMap: MutableMap = ConcurrentHashMap() + private var subscribe: Disposable? = null + private val mLocationsModels: MutableList = ArrayList() + + fun setMoGoAutopilotPlanningListener(moGoAutopilotPlanningCallback: IOCHTaxiPassengerAutopilotPlanningCallback?) { + mAutopilotPlanningCallback = moGoAutopilotPlanningCallback } - public static TaxiPassengerModel getInstance() { - return SingletonHolder.INSTANCE; + fun setADASStatusCallback(callback: IOCHTaxiPassengerADASStatusCallback?) { + mADASStatusCallback = callback } - private Context mContext; - private volatile TaxiPassengerOrderQueryRespBean.Result mCurrentOCHOrder; //当前订单 - private volatile List mInServiceList = Collections.emptyList(); //进行中订单 - private volatile List mWaitServiceList = Collections.emptyList(); //待服务订单 - - private IOCHTaxiPassengerADASStatusCallback mADASStatusCallback; //Model->Presenter:自动驾驶状态相关 - private IOCHTaxiPassengerAutopilotPlanningCallback mAutopilotPlanningCallback; //Model->Presenter:自动驾驶线路规划 - - private final Map mOrderStatusCallbackMap = new ConcurrentHashMap<>(); - private final Map mControllerStatusCallbackMap = new ConcurrentHashMap<>(); - - private ITaxiPassengerVeloctityCallback mVeloctityCallback;//道路限速返回 - - private int mPreRouteIndex = 0; - - private Disposable subscribe; - private int delayTime = 2; - - private double mLongitude, mLatitude; - private MogoLocation mLocation = null; - - private final List mLocationsModels = new ArrayList<>(); - - private TaxiPassengerModel() { - } - - public void setMoGoAutopilotPlanningListener(IOCHTaxiPassengerAutopilotPlanningCallback - moGoAutopilotPlanningCallback) { - this.mAutopilotPlanningCallback = moGoAutopilotPlanningCallback; - } - - public void setADASStatusCallback(IOCHTaxiPassengerADASStatusCallback callback) { - this.mADASStatusCallback = callback; - } - - public void setControllerStatusCallback(String tag,IOCHTaxiPassengerControllerStatusCallback callback) { - if (tag == null || "".equals(tag)) return; - + fun setOrderStatusCallback(tag: String?, callback: IOCHTaxiPassengerOrderStatusCallback?) { + if (tag == null || "" == tag) return if (callback == null) { - mControllerStatusCallbackMap.remove(tag); - return; + mOrderStatusCallbackMap.remove(tag) + return } - - mControllerStatusCallbackMap.put(tag,callback); - + mOrderStatusCallbackMap[tag] = callback } - public void setOrderStatusCallback(String tag ,IOCHTaxiPassengerOrderStatusCallback callback) { - if (tag == null || "".equals(tag)) return; - - if (callback == null) { - mOrderStatusCallbackMap.remove(tag); - return; - } - - mOrderStatusCallbackMap.put(tag,callback); - } - - public void setVeloctityCallback(ITaxiPassengerVeloctityCallback callback){ - this.mVeloctityCallback = callback; - } - - public void init( Context context ) { - mContext = context.getApplicationContext(); - initListeners(); + fun init(context: Context) { + mContext = context.applicationContext + initListeners() // 调用Disposable.dispose() 时候会出现InterruptedException 导致出现崩溃 // 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(new Consumer() { - @Override - public void accept(Throwable e) { - if (e instanceof UndeliverableException) { - e = e.getCause(); - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "UndeliverableException"); - } - if ((e instanceof IOException)) {// - // fine, irrelevant network problem or API that throws on cancellation - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "IOException"); - return; - } - if (e instanceof InterruptedException) { - // fine, some blocking code was interrupted by a dispose call - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "InterruptedException"); - return; - } - if ((e instanceof NullPointerException) || (e instanceof IllegalArgumentException)) { - // that's likely a bug in the application - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "NullPointerException or IllegalArgumentException"); - Thread.currentThread().getUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), e); - return; - } - if (e instanceof IllegalStateException) { - // that's a bug in RxJava or in a custom operator - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "IllegalStateException"); - Thread.currentThread().getUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), e); - return; - } - CallerLogger.INSTANCE.d(M_TAXI_P + TAG,"Undeliverable exception"); + RxJavaPlugins.setErrorHandler(Consumer { e -> + if (e is UndeliverableException) { + d(SceneConstant.M_TAXI_P + TAG, "UndeliverableException") + return@Consumer } - }); - - startOrStopOrderLoop(); + if (e is IOException) { // + // fine, irrelevant network problem or API that throws on cancellation + d(SceneConstant.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") + 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") + 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") + Thread.currentThread().uncaughtExceptionHandler?.uncaughtException(Thread.currentThread(), e) + return@Consumer + } + d(SceneConstant.M_TAXI_P + TAG, "Undeliverable exception") + }) + startOrStopOrderLoop() } /** * 订单轮询 初始化主Fragment的Presenter init 调用 */ - public void startOrStopOrderLoop(){ + fun startOrStopOrderLoop() { if (NetworkUtils.isConnected(mContext)) { - startOrStopOrderLoop(true); + startOrStopOrderLoop(true) } } /** * 关闭订单轮训 页面摧毁时 */ - public void release() { - startOrStopOrderLoop(false); - startOrStopQueryOrderRemaining(false); - releaseListeners(); - if(subscribe!=null&&!subscribe.isDisposed()){ - subscribe.dispose(); - } + fun release() { + startOrStopOrderLoop(false) + startOrStopQueryOrderRemaining(false) + releaseListeners() + RxUtils.disposeSubscribe(subscribe) } - private void initListeners() { + private fun initListeners() { // 2021.11.1重构自动驾驶 实现接口 IMoGoAutopilotStatusListener 注册监听 替换IMogoAdasOCHCallback接口 - CallerAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, mGoAutopilotStatusListener); - IntentManager.getInstance().registerIntentListener( ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener ); - MogoStatusManager.getInstance().registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener); + CallerAutoPilotStatusListenerManager.addListener(TAG, mGoAutopilotStatusListener) + IntentManager.getInstance().registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener) // 定位监听 - CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,10,mMapLocationListener); + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10, mMapLocationListener) //2021.11.1 自动驾驶路线规划接口 - CallerPlanningRottingListenerManager.INSTANCE.addListener(TAG,moGoAutopilotPlanningListener); + CallerPlanningRottingListenerManager.addListener(TAG, moGoAutopilotPlanningListener) - //增加限速监听 - CallerLimitingVelocityListenerManager.INSTANCE.addListener(TAG,limitingVelocityListener); - - AbnormalFactorsLoopManager.INSTANCE.startLoopAbnormalFactors(mContext); + startLoopAbnormalFactors(mContext!!) //开启自驾后 异常信息返回 - OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(mAdasStartFailureListener); - - CallerMsgBoxEventListenerManager.INSTANCE.addListener(TAG,iMsgBoxEventListener); - - TrajectoryAndDistanceManager.INSTANCE.addDistanceListener(TAG,distanceListener); - - TrajectoryAndDistanceManager.INSTANCE.addTrajectoryListener(TAG,trajectoryListener); + OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(mAdasStartFailureListener) + CallerMsgBoxEventListenerManager.addListener(TAG, iMsgBoxEventListener) + addDistanceListener(TAG, distanceListener) + addTrajectoryListener(TAG, trajectoryListener) } - private void releaseListeners() { - MogoStatusManager.getInstance().unregisterStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener); - + private fun releaseListeners() { // 注销定位监听 - CallerChassisLocationGCJ02ListenerManager.INSTANCE.removeListener(TAG); - + CallerChassisLocationGCJ02ListenerManager.removeListener(TAG) MogoAiCloudSocketManager.getInstance(mContext) - .unregisterLifecycleListener(10010); - - CallerAutoPilotStatusListenerManager.INSTANCE.removeListener(mGoAutopilotStatusListener); - CallerPlanningRottingListenerManager.INSTANCE.removeListener(moGoAutopilotPlanningListener); - CallerLimitingVelocityListenerManager.INSTANCE.removeListener(limitingVelocityListener); - - AbnormalFactorsLoopManager.INSTANCE.stopLoopAbnormalFactors(); - - OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(null); - - CallerMsgBoxEventListenerManager.INSTANCE.removeListener(iMsgBoxEventListener); - - TrajectoryAndDistanceManager.INSTANCE.removeListener(TAG); + .unregisterLifecycleListener(10010) + CallerAutoPilotStatusListenerManager.removeListener(mGoAutopilotStatusListener) + CallerPlanningRottingListenerManager.removeListener(moGoAutopilotPlanningListener) + stopLoopAbnormalFactors() + OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(null) + CallerMsgBoxEventListenerManager.removeListener(iMsgBoxEventListener) + removeListener(TAG) } /** * 订单轮训 * @param start true 开启订单轮训 - * false 关闭订单轮训 + * false 关闭订单轮训 */ - private void startOrStopOrderLoop(boolean start) { - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "startOrStopOrderLoop() " + start); + private fun startOrStopOrderLoop(start: Boolean) { + d(SceneConstant.M_TAXI_P + TAG, "startOrStopOrderLoop() $start") if (start) { - TaxiPassengerModelLoopManager.getInstance().startInAndWaitOrdersLoop(); + TaxiPassengerModelLoopManager.getInstance().startInAndWaitOrdersLoop() } else { - TaxiPassengerModelLoopManager.getInstance().stopInAndWaitOrdersLoop(); + TaxiPassengerModelLoopManager.getInstance().stopInAndWaitOrdersLoop() } } @@ -304,775 +235,667 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback * 注:只有在本地缓存mCurrentOCHOrder为null时(已完成or已取消有明确结果)或id相同且status不同时, * 才更新最新进行中单到本地 */ - public void queryInAndWaitOrders() { - TaxiPassengerServiceManager.queryOrdersInAndWaitService(mContext, - new OchCommonServiceCallback() { - @Override - public void onSuccess(TaxiPassengerOrdersInServiceQueryRespBean data) { - if (data == null || data.data == null) { - return; - } + fun queryInAndWaitOrders() { + TaxiPassengerServiceManager.queryOrdersInAndWaitService( + mContext!!, + object : OchCommonServiceCallback { + override fun onSuccess(data: TaxiPassengerOrdersInServiceQueryRespBean) { + if (data.data == null) { + return + } - //1. 处理进行中订单 - mInServiceList = data.data.servicing; - if (data.data.servicing != null && !data.data.servicing.isEmpty()) { - // 1.1. 当存在进行中单时:对本地currentOrder进行更新 - if (mCurrentOCHOrder == null) { - //1.1.1. 当本地无currentOrder(已经完成or取消),则更新currentOrder,并通知ui更新 - updateNativeCurrentOrder(data.data.servicing.get(0)); - if (mOrderStatusCallbackMap.size() > 0) { - for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){ - callback.onCurrentOrderStatusChanged(mCurrentOCHOrder); - } - } - } else { - //1.1.2. 当本地有currentOrder: - //orderId不一致时:通过currentOrder.orderId查询订单状态,并通知ui更新 - //orderId一致且orderStatus不一致时:则更新currentOrder,并通知ui更新 - if (!mCurrentOCHOrder.orderNo.equals(data.data.servicing.get(0).orderNo)) { - queryCurOrderStatus(); -// } else if (mCurrentOCHOrder.orderStatus != data.data.servicing.get(0).orderStatus) { - } else { //todo 订单拦截放到各自实现去做 - updateNativeCurrentOrder(data.data.servicing.get(0)); - if (mOrderStatusCallbackMap.size() > 0) { - for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){ - callback.onCurrentOrderStatusChanged(mCurrentOCHOrder); - } - } + //1. 处理进行中订单 + mInServiceList = data.data.servicing + if (data.data.servicing != null && !data.data.servicing.isEmpty()) { + // 1.1. 当存在进行中单时:对本地currentOrder进行更新 + if (currentOCHOrder == null) { + //1.1.1. 当本地无currentOrder(已经完成or取消),则更新currentOrder,并通知ui更新 + updateNativeCurrentOrder(data.data.servicing[0]) + if (mOrderStatusCallbackMap.isNotEmpty()) { + for (callback in mOrderStatusCallbackMap.values) { + callback.onCurrentOrderStatusChanged(currentOCHOrder) } } } else { - // 1.2. 当无进行中订单时:如果本地也无则跳过;如果本地仍存在currentOrder,查询此单(完成or取消)并通知ui更 - if (mCurrentOCHOrder != null) { - queryCurOrderStatus(); + //1.1.2. 当本地有currentOrder: + //orderId不一致时:通过currentOrder.orderId查询订单状态,并通知ui更新 + //orderId一致且orderStatus不一致时:则更新currentOrder,并通知ui更新 + if (currentOCHOrder!!.orderNo != data.data.servicing[0].orderNo) { + queryCurOrderStatus() + // } else if (mCurrentOCHOrder.orderStatus != data.data.servicing.get(0).orderStatus) { + } else { //todo 订单拦截放到各自实现去做 + updateNativeCurrentOrder(data.data.servicing[0]) + if (mOrderStatusCallbackMap.isNotEmpty()) { + for (callback in mOrderStatusCallbackMap.values) { + callback.onCurrentOrderStatusChanged(currentOCHOrder) + } + } } - recoverNaviInfo(); } + } else { + // 1.2. 当无进行中订单时:如果本地也无则跳过;如果本地仍存在currentOrder,查询此单(完成or取消)并通知ui更 + if (currentOCHOrder != null) { + queryCurOrderStatus() + } + recoverNaviInfo() } + } - @Override - public void onError() { - - } - - @Override - public void onFail(int code, String msg) { - CallerLogger.INSTANCE.e(M_TAXI_P + TAG,"queryInAndWaitOrders"+code+msg); - } - }); + override fun onError() {} + override fun onFail(code: Int, msg: String) { + e(SceneConstant.M_TAXI_P + TAG, "queryInAndWaitOrders$code$msg") + } + }) } //仅用于轮询时查到本地有mCurrentOCHOrder但请求结果无进行中单or orderId不一致是复查本地currentOrder - private void queryCurOrderStatus() { - if (mCurrentOCHOrder == null) { - return; + private fun queryCurOrderStatus() { + if (currentOCHOrder == null) { + return } - final String orderNo = mCurrentOCHOrder.orderNo; - TaxiPassengerServiceManager.queryOrderById(mContext, orderNo, - new OchCommonServiceCallback() { - @Override - public void onSuccess(TaxiPassengerOrderQueryRespBean data) { - if (data != null && data.data != null - && mCurrentOCHOrder != null && mCurrentOCHOrder.orderNo.equals(data.data.orderNo)) { - if (data.data.orderStatus == TaxiPassengerOrderStatusEnum.Cancel.getCode() - || data.data.orderStatus == TaxiPassengerOrderStatusEnum.JourneyCompleted.getCode() - || data.data.orderStatus == TaxiPassengerOrderStatusEnum.None.getCode()) { - if (mOrderStatusCallbackMap.size() > 0) { - for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){ - callback.onCurrentOrderStatusChanged(data.data); - } + val orderNo = currentOCHOrder!!.orderNo + TaxiPassengerServiceManager.queryOrderById( + mContext!!, orderNo, + object : OchCommonServiceCallback { + override fun onSuccess(data: TaxiPassengerOrderQueryRespBean) { + if (data.data != null && currentOCHOrder != null && currentOCHOrder!!.orderNo == data.data.orderNo) { + if (data.data.orderStatus == TaxiPassengerOrderStatusEnum.Cancel.code || data.data.orderStatus == TaxiPassengerOrderStatusEnum.JourneyCompleted.code || data.data.orderStatus == TaxiPassengerOrderStatusEnum.None.code) { + if (mOrderStatusCallbackMap.isNotEmpty()) { + for (callback in mOrderStatusCallbackMap.values) { + callback.onCurrentOrderStatusChanged(data.data) } - clearCurrentOCHOrder(); - } else { - updateNativeCurrentOrder(data.data); - if (mOrderStatusCallbackMap.size() > 0) { - for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){ - callback.onCurrentOrderStatusChanged(mCurrentOCHOrder); - } + } + clearCurrentOCHOrder() + } else { + updateNativeCurrentOrder(data.data) + if (mOrderStatusCallbackMap.size > 0) { + for (callback in mOrderStatusCallbackMap.values) { + callback.onCurrentOrderStatusChanged(currentOCHOrder) } } } } + } - @Override - public void onFail(int code, String msg) { - - } - }); - } - - // 获取当前订单 - public TaxiPassengerOrderQueryRespBean.Result getCurrentOCHOrder() { - return mCurrentOCHOrder; + override fun onFail(code: Int, msg: String) {} + }) } // 获取当前订单状态 - public TaxiPassengerOrderStatusEnum getCurOrderStatus() { - TaxiPassengerOrderQueryRespBean.Result order = TaxiPassengerModel.getInstance().getCurrentOCHOrder(); - if (order == null) { - return TaxiPassengerOrderStatusEnum.None; + val curOrderStatus: TaxiPassengerOrderStatusEnum + get() { + val order: TaxiPassengerOrderQueryRespBean.Result = + currentOCHOrder + ?: return TaxiPassengerOrderStatusEnum.None + return valueOf(order.orderStatus) } - return TaxiPassengerOrderStatusEnum.valueOf(order.orderStatus); - } //更新本地currentOrder信息,并保存订单到本地避免车机重启丢失数据 - private void updateNativeCurrentOrder(TaxiPassengerOrderQueryRespBean.Result data) { + private fun updateNativeCurrentOrder(data: TaxiPassengerOrderQueryRespBean.Result?) { if (data == null) { - return; + return } - mCurrentOCHOrder = data; - SharedPrefsMgr.getInstance(mContext).putString(TaxiPassengerConst.SP_KEY_OCH_TAXI_ORDER, - GsonUtil.jsonFromObject(data)); + currentOCHOrder = data + SharedPrefsMgr.getInstance(mContext!!).putString( + TaxiPassengerConst.SP_KEY_OCH_TAXI_ORDER, + GsonUtil.jsonFromObject(data) + ) } //清除订单信息 - public void clearCurrentOCHOrder() { - mCurrentOCHOrder = null; - clearAutopilotControlParameters(); - SharedPrefsMgr.getInstance(mContext).remove(TaxiPassengerConst.SP_KEY_OCH_TAXI_ORDER); + fun clearCurrentOCHOrder() { + currentOCHOrder = null + clearAutopilotControlParameters() + SharedPrefsMgr.getInstance(mContext!!).remove(TaxiPassengerConst.SP_KEY_OCH_TAXI_ORDER) } //检测当前订单 - public boolean checkCurrentOCHOrder() { - if ( mCurrentOCHOrder != null - && mCurrentOCHOrder.startSiteGcjPoint != null - && mCurrentOCHOrder.endSiteGcjPoint != null) { - return true; - } - return false; + fun checkCurrentOCHOrder(): Boolean { + return currentOCHOrder != null && currentOCHOrder!!.startSiteGcjPoint != null && currentOCHOrder!!.endSiteGcjPoint != null } // TODO: 2021/9/12 - public void calculateTravelDistance(MogoLocation carLocation){ - if (checkCurrentOCHOrder() && mCurrentOCHOrder.endSiteGcjPoint.size()>0) { - double endLon = mCurrentOCHOrder.endSiteGcjPoint.get(0); - double endLat = mCurrentOCHOrder.endSiteGcjPoint.get(1); - double distance = CoordinateUtils.calculateLineDistance( - endLon, endLat, - carLocation.getLongitude(), carLocation.getLatitude()); - mCurrentOCHOrder.decreaseTravelDistance(distance); + fun calculateTravelDistance(carLocation: MogoLocation) { + if (checkCurrentOCHOrder() && currentOCHOrder!!.endSiteGcjPoint.size > 0) { + val endLon = currentOCHOrder!!.endSiteGcjPoint[0] + val endLat = currentOCHOrder!!.endSiteGcjPoint[1] + val distance = CoordinateUtils.calculateLineDistance( + endLon, endLat, + carLocation.longitude, carLocation.latitude + ).toDouble() + currentOCHOrder!!.decreaseTravelDistance(distance) } } - //监听网络变化,避免启动机器时无网导致无法更新订单信息 - private final IDistanceListener distanceListener = distance -> { + private val distanceListener: IDistanceListener = object : IDistanceListener { + override fun distanceCallback(distance: Float) { - }; - - private final ITrajectoryListener trajectoryListener = (routeArrivied, routeArriving, location) -> { - List routeArriviedTemp = new ArrayList<>(); - List routeArrivingTemp = new ArrayList<>(); - LatLng temp; - for (MogoLocation mogoLocation : routeArrivied) { - temp = new LatLng(mogoLocation.getLatitude(),mogoLocation.getLongitude()); - routeArriviedTemp.add(temp); } - for (MogoLocation mogoLocation : routeArriving) { - temp = new LatLng(mogoLocation.getLatitude(),mogoLocation.getLongitude()); - routeArrivingTemp.add(temp); - } - mAutopilotPlanningCallback.routeResultByServer(routeArriviedTemp,routeArrivingTemp,location); - setRouteLineMarker(); - }; - private final IMogoIntentListener mNetWorkIntentListener = new IMogoIntentListener() { - @Override - public void onIntentReceived( String intentStr, Intent intent ) { - CallerLogger.INSTANCE.d( M_TAXI_P + TAG, "onIntentReceived = %s", intentStr ); - if ( ConnectivityManager.CONNECTIVITY_ACTION.equals( intentStr ) ) { - if ( NetworkUtils.isConnected( mContext ) ) { - startOrStopOrderLoop(true); + } + private val trajectoryListener: ITrajectoryListener = + object : ITrajectoryListener { + override fun trajectoryCallback( + routeArrivied: MutableList, + routeArriving: MutableList, + location: MogoLocation + ) { + val routeArriviedTemp: MutableList = ArrayList() + val routeArrivingTemp: MutableList = ArrayList() + var temp: LatLng + for (mogoLocation in routeArrivied) { + temp = LatLng(mogoLocation.latitude, mogoLocation.longitude) + routeArriviedTemp.add(temp) } + for (mogoLocation in routeArriving) { + temp = LatLng(mogoLocation.latitude, mogoLocation.longitude) + routeArrivingTemp.add(temp) + } + mAutopilotPlanningCallback!!.routeResultByServer( + routeArriviedTemp, + routeArrivingTemp, + location + ) + setRouteLineMarker() } } - }; - - private final IMogoStatusChangedListener mMogoStatusChangedListener = new IMogoStatusChangedListener() { - // VR mode变更回调 - @Override - public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { - if (StatusDescriptor.VR_MODE == descriptor) { - if (mControllerStatusCallbackMap.size() > 0) { - for (IOCHTaxiPassengerControllerStatusCallback callback :mControllerStatusCallbackMap.values()){ - callback.onVRModeChanged(isTrue); - } - } + private val mNetWorkIntentListener = IMogoIntentListener { intentStr, intent -> + d(SceneConstant.M_TAXI_P + TAG, "onIntentReceived = %s", intentStr) + if (ConnectivityManager.CONNECTIVITY_ACTION == intentStr) { + if (NetworkUtils.isConnected(mContext)) { + startOrStopOrderLoop(true) } } - }; + } // 自车定位 - private final IMoGoChassisLocationGCJ02Listener mMapLocationListener = new IMoGoChassisLocationGCJ02Listener() { - @Override - public void onChassisLocationGCJ02(@Nullable MogoLocation gnssInfo) { - //位置变化时,通过围栏判断是否到达x点 - if (null == gnssInfo) return; - if (checkCurrentOCHOrder()) { - if (getCurOrderStatus() == TaxiPassengerOrderStatusEnum.OnTheWayToEnd) { - calculateTravelDistance(gnssInfo); + private val mMapLocationListener: IMoGoChassisLocationGCJ02Listener = + object : IMoGoChassisLocationGCJ02Listener { + override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { + //位置变化时,通过围栏判断是否到达x点 + if (null == mogoLocation) return + if (checkCurrentOCHOrder()) { + if (curOrderStatus === TaxiPassengerOrderStatusEnum.OnTheWayToEnd) { + calculateTravelDistance(mogoLocation) + } } } - mLongitude = gnssInfo.getLongitude(); - mLatitude = gnssInfo.getLatitude(); - - mLocation = gnssInfo; - // CallerLogger.INSTANCE.e(M_TAXI_P + TAG,"mLongitude = "+mLongitude+", mLatitude = "+mLatitude); - for (IOCHTaxiPassengerControllerStatusCallback callback :mControllerStatusCallbackMap.values()){ - callback.onCarLocationChanged(gnssInfo); - } } - - }; - - private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener(){ - - @Override - public void onAutopilotDockerInfo(@NonNull String dockerVersion) { - } - - @Override - public void onAutopilotRouteLineId(long lineId) { - } - - @Override - public void onAutopilotIpcConnectStatusChanged(int status, @Nullable String reason) { - } - - @Override - public void onAutopilotGuardian(@Nullable MogoReportMsg.MogoReportMessage guardianInfo) { - } - - @Override - public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { - } - - private boolean arriveAtEnd = false; //乘客app专用字段 - - @Override - public void onAutopilotStatusResponse(int state) { + private val mGoAutopilotStatusListener: IMoGoAutopilotStatusListener = + object : IMoGoAutopilotStatusListener { + private var arriveAtEnd = false //乘客app专用字段 + override fun onAutopilotStatusResponse(state: Int) { // CallerLogger.INSTANCE.d( M_TAXI_P + TAG, "state = %s", state ); - if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { - if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotRunning(); - if (mCurrentOCHOrder != null - && getCurOrderStatus() == TaxiPassengerOrderStatusEnum.UserArriveAtStart) { - TaxiPassengerAnalyticsManager.getInstance().triggerStartAutopilotEvent(false, true, - mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo); - startServicePilotDone(); - } - } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { - if (FunctionBuildConfig.isDemoMode - && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { - // 当美化模式(演示模式)开启时:且是乘客app、且未到终点时,维持自动驾驶icon开启状态 - if (!arriveAtEnd) { - return; - } else { - arriveAtEnd = false; + if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { + if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotRunning() + if (currentOCHOrder != null + && curOrderStatus === TaxiPassengerOrderStatusEnum.UserArriveAtStart + ) { + TaxiPassengerAnalyticsManager.getInstance().triggerStartAutopilotEvent( + false, + true, + currentOCHOrder!!.startSiteAddr, + currentOCHOrder!!.endSiteAddr, + currentOCHOrder!!.orderNo + ) + startServicePilotDone() } - } - if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotEnable(); - } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { - if (FunctionBuildConfig.isDemoMode - && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { - // 当美化模式(演示模式)开启时:且是乘客app、且未到终点时,维持自动驾驶icon开启状态 - if (!arriveAtEnd) { - return; - } else { - arriveAtEnd = false; + } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { + if (FunctionBuildConfig.isDemoMode + && isPassenger(FunctionBuildConfig.appIdentityMode) + ) { + // 当美化模式(演示模式)开启时:且是乘客app、且未到终点时,维持自动驾驶icon开启状态 + arriveAtEnd = if (!arriveAtEnd) { + return + } else { + false + } } + if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotEnable() + } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { + if (FunctionBuildConfig.isDemoMode + && isPassenger(FunctionBuildConfig.appIdentityMode) + ) { + // 当美化模式(演示模式)开启时:且是乘客app、且未到终点时,维持自动驾驶icon开启状态 + arriveAtEnd = if (!arriveAtEnd) { + return + } else { + false + } + } + if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotDisable() } - if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotDisable(); - } - } - - @Override - public void onAutopilotSNRequest() { - } - - @Override - public void onAutopilotArriveAtStation(@Nullable MessagePad.ArrivalNotification arrivalNotification) { - if (FunctionBuildConfig.isDemoMode - && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { - arriveAtEnd = true; } - if (arrivalNotification == null || !checkCurrentOCHOrder() - || (getCurOrderStatus() == TaxiPassengerOrderStatusEnum.ArriveAtEnd)) { - return; + override fun onAutopilotSNRequest() {} + override fun onAutopilotArriveAtStation(arrivalNotification: ArrivalNotification?) { + if (FunctionBuildConfig.isDemoMode + && isPassenger(FunctionBuildConfig.appIdentityMode) + ) { + arriveAtEnd = true + } + if (arrivalNotification == null || !checkCurrentOCHOrder() || curOrderStatus === TaxiPassengerOrderStatusEnum.ArriveAtEnd) { + return + } + } + + override fun onAutopilotStatusRespByQuery(status: SystemStatusInfo.StatusInfo) {} + } + private val moGoAutopilotPlanningListener: IMoGoPlanningRottingListener = + object : IMoGoPlanningRottingListener { + override fun onAutopilotRotting(globalPathResp: GlobalPathResp?) { + if (null != globalPathResp && globalPathResp.wayPointsList.size > 0) { + calculateRouteLineSum( + coordinateConverterWgsToGcjListCommon( + mContext, + globalPathResp.wayPointsList + ) + ) + startToRouteAndWipe(globalPathResp.wayPointsList) + } } } - - @Override - public void onAutopilotStatusRespByQuery(@NonNull SystemStatusInfo.StatusInfo status) { - } - }; - - private final IMoGoPlanningRottingListener moGoAutopilotPlanningListener = new IMoGoPlanningRottingListener(){ - - @Override - public void onAutopilotRotting(@Nullable MessagePad.GlobalPathResp routeList) { - if (null != routeList && routeList.getWayPointsList().size() > 0){ - calculateRouteLineSum(CoordinateCalculateRouteUtil.coordinateConverterWgsToGcjListCommon(mContext,routeList.getWayPointsList())); - startToRouteAndWipe(routeList.getWayPointsList()); + private val mAdasStartFailureListener: OchAdasStartFailureCallback = object : OchAdasStartFailureCallback { + override fun onStartAutopilotFailure(startFailedCode: String, startFailedMessage: String) { + TaxiPassengerAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage) } } - - }; - - private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() { - @Override - public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) { - TaxiPassengerAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage); - } - }; - - private final IMsgBoxEventListener iMsgBoxEventListener = new IMsgBoxEventListener() { - @Override - public void onBubbleReportClickEvent(@NonNull MsgBoxBean msgBoxBean) { - - } - - @Override - public void onBubbleV2XClickEvent(@NonNull MsgBoxBean msgBoxBean) { - - } - - @Override - public void onBubbleOperationClickEvent(@NonNull MsgBoxBean msgBoxBean) { - - } - - @Override - public void onUpdateTipEvent(boolean isShow) { - - } - - @Override - public void onSummaryClickEvent() { - if (mCurrentOCHOrder == null){ - ToastUtils.showLong("行程已结束"); - }else { - OverlayLeftViewUtils.INSTANCE.transmissionIndexGet(OverlayLeftViewUtils.OVERVIEW); + private val iMsgBoxEventListener: IMsgBoxEventListener = object : IMsgBoxEventListener { + override fun onBubbleReportClickEvent(msgBoxBean: MsgBoxBean) {} + override fun onBubbleV2XClickEvent(msgBoxBean: MsgBoxBean) {} + override fun onBubbleOperationClickEvent(msgBoxBean: MsgBoxBean) {} + override fun onUpdateTipEvent(isShow: Boolean) {} + override fun onSummaryClickEvent() { + if (currentOCHOrder == null) { + ToastUtils.showLong("行程已结束") + } else { + transmissionIndexGet(OverlayLeftViewUtils.OVERVIEW) } } - }; - - public void startToRouteAndWipe(List models) { - List locationsModels = CoordinateCalculateRouteUtil - .coordinateConverterWgsToGcjLocations(mContext,models); - mLocationsModels.clear(); - mLocationsModels.addAll(locationsModels); - startOrStopRouteAndWipe(true); - showRottingMapView(); - } - - public void showRottingMapView(){ - AmapNaviToDestinationModel.getInstance(mContext).destroyAmaNavi(); - if (mAutopilotPlanningCallback != null){ - mAutopilotPlanningCallback.showRottingMapView(); - } } - public void startNaviByAmap() { - if (mCurrentOCHOrder != null && - mCurrentOCHOrder.orderStatus == TaxiPassengerOrderStatusEnum.OnTheWayToEnd.getCode()){ - AmapNaviToDestinationModel.getInstance(mContext).destroyAmaNavi(); + fun startToRouteAndWipe(models: List) { + val locationsModels: List = coordinateConverterWgsToGcjLocations(mContext, models) + mLocationsModels.clear() + mLocationsModels.addAll(locationsModels) + showRottingMapView() + } - double orderEndStationLat = mCurrentOCHOrder.endSiteGcjPoint.get(1); - double orderEndStationLng = mCurrentOCHOrder.endSiteGcjPoint.get(0); - NaviLatLng startNaviLatLng = new NaviLatLng(mLatitude, mLongitude); - NaviLatLng endNaviLatLng = new NaviLatLng(orderEndStationLat,orderEndStationLng); - AmapNaviToDestinationModel.getInstance(mContext).initAMapNavi(startNaviLatLng, endNaviLatLng); - AmapNaviToDestinationModel.getInstance(mContext).setVoiceIsMute(false); + private fun showRottingMapView() { + AmapNaviToDestinationModel.getInstance(mContext).destroyAmaNavi() + if (mAutopilotPlanningCallback != null) { + mAutopilotPlanningCallback!!.showRottingMapView() } } - /** - * 实时轨迹擦除 - * @param isStart - */ - public void startOrStopRouteAndWipe(boolean isStart){ - + fun startNaviByAmap() { + if (currentOCHOrder != null && + currentOCHOrder!!.orderStatus == TaxiPassengerOrderStatusEnum.OnTheWayToEnd.code + ) { + AmapNaviToDestinationModel.getInstance(mContext).destroyAmaNavi() + val orderEndStationLat = currentOCHOrder!!.endSiteGcjPoint[1] + val orderEndStationLng = currentOCHOrder!!.endSiteGcjPoint[0] + val currentLocation = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02() + val startNaviLatLng = NaviLatLng(currentLocation.latitude, currentLocation.longitude) + val endNaviLatLng = NaviLatLng(orderEndStationLat, orderEndStationLng) + AmapNaviToDestinationModel.getInstance(mContext) + .initAMapNavi(startNaviLatLng, endNaviLatLng) + AmapNaviToDestinationModel.getInstance(mContext).setVoiceIsMute(false) + } } /** * 设置小地图路径的起终点marker */ - public void setRouteLineMarker(){ - if (mCurrentOCHOrder.startSiteGcjPoint == null || mCurrentOCHOrder.startSiteGcjPoint.isEmpty() || mCurrentOCHOrder.startSiteGcjPoint.size() < 2|| - mCurrentOCHOrder.endSiteGcjPoint == null || mCurrentOCHOrder.endSiteGcjPoint.isEmpty() || mCurrentOCHOrder.endSiteGcjPoint.size() < 2) { - setMarker(null,null); - return; + fun setRouteLineMarker() { + if (currentOCHOrder!!.startSiteGcjPoint == null || currentOCHOrder!!.startSiteGcjPoint.isEmpty() || currentOCHOrder!!.startSiteGcjPoint.size < 2 || currentOCHOrder!!.endSiteGcjPoint == null || currentOCHOrder!!.endSiteGcjPoint.isEmpty() || currentOCHOrder!!.endSiteGcjPoint.size < 2) { + setMarker(null, null) + return } - LatLng startStation = new LatLng(mCurrentOCHOrder.startSiteGcjPoint.get(1),mCurrentOCHOrder.startSiteGcjPoint.get(0)); - LatLng endStation = new LatLng(mCurrentOCHOrder.endSiteGcjPoint.get(1),mCurrentOCHOrder.endSiteGcjPoint.get(0)); - setMarker(startStation,endStation); + val startStation = LatLng( + currentOCHOrder!!.startSiteGcjPoint[1], currentOCHOrder!!.startSiteGcjPoint[0] + ) + val endStation = LatLng( + currentOCHOrder!!.endSiteGcjPoint[1], currentOCHOrder!!.endSiteGcjPoint[0] + ) + setMarker(startStation, endStation) } - private void setMarker(LatLng startStation,LatLng endStation){ + private fun setMarker(startStation: LatLng?, endStation: LatLng?) { if (mAutopilotPlanningCallback != null) { - mAutopilotPlanningCallback.setLineMarker(startStation,endStation); + mAutopilotPlanningCallback!!.setLineMarker(startStation, endStation) } } - /** - * 限速监听 - */ - private final ILimitingVelocityListener limitingVelocityListener = new ILimitingVelocityListener(){ - - @Override - public void onUnion(int limitingVelocity, @NonNull DataSourceType sourceType) { - - } - - @Override - public void onLimitingVelocityChange(int limitingVelocity, DataSourceType dataSourceType) { - if (mVeloctityCallback != null){ - mVeloctityCallback.onLimitingVelocityChange(limitingVelocity); - } - } - }; - /** * 导航订单起点到终点 获得剩余时间,里程,预计到达时间 */ - public void initGeocodeSearch() { - if (mCurrentOCHOrder != null){ - TaxiPassengerGeocodeSearchModel.getInstance(mContext).initGeocodeSearch(); - TaxiPassengerGeocodeSearchModel.getInstance(mContext).setOCHTaciNaviChangedCallback(this); + fun initGeocodeSearch() { + if (currentOCHOrder != null) { + TaxiPassengerGeocodeSearchModel.getInstance(mContext).initGeocodeSearch() + TaxiPassengerGeocodeSearchModel.getInstance(mContext) + .setOCHTaciNaviChangedCallback(this) } } - public void destoryGeocodeSearch(){ - TaxiPassengerGeocodeSearchModel.getInstance(mContext).destroyGeocodeSearch(); + fun destoryGeocodeSearch() { + TaxiPassengerGeocodeSearchModel.getInstance(mContext).destroyGeocodeSearch() } - public void startOrStopQueryOrderRemaining(boolean isStart){ - if (isStart){ - TaxiPassengerModelLoopManager.getInstance().startQueryOrderRemainingLoop(); - }else { - TaxiPassengerModelLoopManager.getInstance().stopQueryOrderRemainingLoop(); + fun startOrStopQueryOrderRemaining(isStart: Boolean) { + if (isStart) { + TaxiPassengerModelLoopManager.getInstance().startQueryOrderRemainingLoop() + } else { + TaxiPassengerModelLoopManager.getInstance().stopQueryOrderRemainingLoop() } } /** * 查询订单剩余里程和时间 */ - public void queryOrderRemaining(){ - if (mCurrentOCHOrder == null) return; - TaxiPassengerServiceManager.queryOrderRemaining(mContext, mCurrentOCHOrder.orderNo, new OchCommonServiceCallback() { - @Override - public void onSuccess(TaxiPassengerOrderQueryRemainingResp data) { - if (data != null && data.data!=null){ - CallerLogger.INSTANCE.e(M_TAXI_P + TAG,"distance = "+data.data.distance+" ,duration = "+data.data.duration); - for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){ - callback.onCurrentOrderDistToEndChanged(data.data.distance,data.data.duration); + fun queryOrderRemaining() { + if (currentOCHOrder == null) return + TaxiPassengerServiceManager.queryOrderRemaining( + mContext!!, + currentOCHOrder!!.orderNo, + 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 + ) + for (callback in mOrderStatusCallbackMap.values) { + callback.onCurrentOrderDistToEndChanged( + data.data.distance, + data.data.duration + ) + } } } - } - @Override - public void onFail(int code, String msg) { - - } - }); + override fun onFail(code: Int, msg: String) {} + }) } - public void queryOrderRouteList() { - if (mCurrentOCHOrder == null) return; - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "--route--- queryOrderRouteList"); - TaxiPassengerServiceManager.queryOrderRouteList(mContext, mCurrentOCHOrder.orderNo, new OchCommonServiceCallback() { - @Override - public void onSuccess(TaxiPassengerQueryOrderRouteResp data) { - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "--route---"+GsonUtil.jsonFromObject(data)); - if (data != null && data.data != null && data.data != null && data.data.size() > 0){ - if (mAutopilotPlanningCallback != null){ - calculateRouteLineSum(data.data); -// if (mAutopilotPlanningCallback != null){ -// mAutopilotPlanningCallback.setLineMarker(data.data); -// } - mLocationsModels.clear(); - List locationsModels = CoordinateCalculateRouteUtil. - coordinateConverterLatlngToLocation(data.data); - mLocationsModels.addAll(locationsModels); - startOrStopRouteAndWipe(true); - } - }else { - subscribe = Observable.timer(delayTime, TimeUnit.SECONDS).subscribe(aLong -> { - queryOrderRouteList(); - }); - } - } + fun queryOrderRouteList() { + if (currentOCHOrder == null) return + d(SceneConstant.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)) + if (data.data != null && data.data != null && data.data.size > 0) { + if (mAutopilotPlanningCallback != null) { + calculateRouteLineSum(data.data) + mLocationsModels.clear() + val locationsModels = coordinateConverterLatlngToLocation(data.data) + mLocationsModels.addAll(locationsModels) + } + } else { + RxUtils.disposeSubscribe(subscribe) + subscribe = RxUtils.createSubscribe { + queryOrderRouteList() + } + } + } - @Override - public void onFail(int code, String msg) { - subscribe = Observable.timer(delayTime, TimeUnit.SECONDS).subscribe(aLong -> { - queryOrderRouteList(); - }); - } - }); + override fun onFail(code: Int, msg: String) { + RxUtils.disposeSubscribe(subscribe) + subscribe = RxUtils.createSubscribe { + queryOrderRouteList() + } + } + }) } - @Override - public void onCurrentRoadName(String currentRoadName) { - for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){ - callback.onCurrentRoadName(currentRoadName); + override fun onCurrentRoadName(currentRoadName: String) { + for (callback in mOrderStatusCallbackMap.values) { + callback.onCurrentRoadName(currentRoadName) } } /** * 订单结束或者取消的时候, 刷新导航标识位以及缓存的数据 */ - public void recoverNaviInfo(){ - SharedPrefsMgr.getInstance(mContext).remove(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS); + fun recoverNaviInfo() { + SharedPrefsMgr.getInstance(mContext!!).remove(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS) } - public void calculateRouteLineSum(List points){ - float sumLength = CoordinateCalculateRouteUtil.calculateRouteSumLength(points); - SharedPrefsMgr.getInstance(mContext).putInt(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS,(int) sumLength); + fun calculateRouteLineSum(points: List?) { + val sumLength = calculateRouteSumLength(points) + SharedPrefsMgr.getInstance(mContext!!) + .putInt(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS, sumLength.toInt()) } - public void checkPhoneAndUpdateStatus(String phoneTail,ITaxiPassengerCommonCallback commonCallback) { - if (mCurrentOCHOrder == null) return; - TaxiPassengerServiceManager.checkPhoneAndUpdateOrderStatus(mContext, mCurrentOCHOrder.orderNo, - phoneTail, new OchCommonServiceCallback() { - @Override - public void onSuccess(TaxiPassengerBaseRespBean data) { - if (data != null && data.code == 0 && mCurrentOCHOrder != null){ - //乘客验证成功,更新订单状态为 "乘客已上车", 立马弹出乘客开始行程页面,不再等待轮询 - mCurrentOCHOrder.orderStatus = TaxiPassengerOrderStatusEnum.UserArriveAtStart.getCode(); - if (mOrderStatusCallbackMap.size() > 0) { - for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){ - callback.onCurrentOrderStatusChanged(mCurrentOCHOrder); - } + fun checkPhoneAndUpdateStatus( + phoneTail: String?, + commonCallback: ITaxiPassengerCommonCallback? + ) { + if (currentOCHOrder == null) return + TaxiPassengerServiceManager.checkPhoneAndUpdateOrderStatus( + mContext!!, currentOCHOrder!!.orderNo, + phoneTail, object : OchCommonServiceCallback { + override fun onSuccess(data: TaxiPassengerBaseRespBean) { + if (data.code == 0 && currentOCHOrder != null) { + //乘客验证成功,更新订单状态为 "乘客已上车", 立马弹出乘客开始行程页面,不再等待轮询 + currentOCHOrder!!.orderStatus = + TaxiPassengerOrderStatusEnum.UserArriveAtStart.code + if (mOrderStatusCallbackMap.isNotEmpty()) { + for (callback in mOrderStatusCallbackMap.values) { + callback.onCurrentOrderStatusChanged(currentOCHOrder) } } - if(commonCallback!=null) { - commonCallback.onCommonCallback(); - } - } + commonCallback?.onCommonCallback() + } - @Override - public void onError() { - ToastUtils.showLong("当前网络异常,请重新验证;若始终异常,请您在手机端取消行程,给您带来不便,十分抱歉!"); - } + override fun onError() { + ToastUtils.showLong("当前网络异常,请重新验证;若始终异常,请您在手机端取消行程,给您带来不便,十分抱歉!") + } - @Override - public void onFail(int code, String msg) { - ToastUtils.showLong("当前网络异常,请重新验证;若始终异常,请您在手机端取消行程,给您带来不便,十分抱歉!"); - CallerLogger.INSTANCE.e(M_TAXI_P + TAG,"提交用户输入的手机后4位、并进行状态扭转 后台结果错误"+code+msg); - } - }); + override fun onFail(code: Int, msg: String) { + ToastUtils.showLong("当前网络异常,请重新验证;若始终异常,请您在手机端取消行程,给您带来不便,十分抱歉!") + e( + SceneConstant.M_TAXI_P + TAG, + "提交用户输入的手机后4位、并进行状态扭转 后台结果错误$code$msg" + ) + } + }) } - public void arrivedAndScore(TaxiPassengerScoreUpdateOrderReqBean taxiPassengerScoreUpdateOrderReqBean , ITaxiPassengerCommonValueCallback commonCallback) { - if (taxiPassengerScoreUpdateOrderReqBean.orderNo == null) return; - TaxiPassengerServiceManager.arrivedAndScore(mContext,taxiPassengerScoreUpdateOrderReqBean, - new OchCommonServiceCallback() { - @Override - public void onSuccess(TaxiPassengerBaseRespBean data) { - if(commonCallback!=null) { - commonCallback.onCommonCallback(true); - } - } + fun arrivedAndScore( + taxiPassengerScoreUpdateOrderReqBean: TaxiPassengerScoreUpdateOrderReqBean, + commonCallback: ITaxiPassengerCommonValueCallback? + ) { + if (taxiPassengerScoreUpdateOrderReqBean.orderNo == null) return + TaxiPassengerServiceManager.arrivedAndScore( + mContext!!, taxiPassengerScoreUpdateOrderReqBean, + object : OchCommonServiceCallback { + override fun onSuccess(data: TaxiPassengerBaseRespBean) { + commonCallback?.onCommonCallback(true) + } - @Override - public void onError() { - ToastUtils.showLong("网络错误请稍后再试"); - CallerLogger.INSTANCE.e(M_TAXI_P + TAG,"对订单进行打分 1-5分 网络错误"); - if(commonCallback!=null) { - commonCallback.onCommonCallback(false); - } - } + override fun onError() { + ToastUtils.showLong("网络错误请稍后再试") + e(SceneConstant.M_TAXI_P + TAG, "对订单进行打分 1-5分 网络错误") + commonCallback?.onCommonCallback(false) + } - @Override - public void onFail(int code, String msg) { - CallerLogger.INSTANCE.e(M_TAXI_P + TAG,"对订单进行打分 1-5分 后台结果错误"+code+msg); - if(commonCallback!=null) { - commonCallback.onCommonCallback(false); - } - } - }); + override fun onFail(code: Int, msg: String) { + e(SceneConstant.M_TAXI_P + TAG, "对订单进行打分 1-5分 后台结果错误$code$msg") + commonCallback?.onCommonCallback(false) + } + }) } - public void loopQueryPilotStatus(){ - if (mCurrentOCHOrder == null) return; - TaxiPassengerServiceManager.queryPilotStatus(mContext, mCurrentOCHOrder.orderNo, - new OchCommonServiceCallback() { - @Override - public void onSuccess(TaxiPassengerBaseRespBean data) { - if (data != null && data.code == 0 && data.data.equals(true)) { - updateAutopilotStatus(true); - startOrStopReadyToAutopilotLoop(false); - } + fun loopQueryPilotStatus() { + if (currentOCHOrder == null) return + TaxiPassengerServiceManager.queryPilotStatus( + mContext!!, currentOCHOrder!!.orderNo, + object : OchCommonServiceCallback { + override fun onSuccess(data: TaxiPassengerBaseRespBean) { + if (data.code == 0 && data.data == true) { + updateAutopilotStatus(true) + startOrStopReadyToAutopilotLoop(false) } + } - @Override - public void onFail(int code, String msg) { - updateAutopilotStatus(false); - } - }); + override fun onFail(code: Int, msg: String) { + updateAutopilotStatus(false) + } + }) } - public void updateAutopilotStatus(boolean isBoarded){ - if (mOrderStatusCallbackMap.size() > 0) { - for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){ - callback.onDriverHasCheckedPilotCondition(isBoarded); + fun updateAutopilotStatus(isBoarded: Boolean) { + if (mOrderStatusCallbackMap.isNotEmpty()) { + for (callback in mOrderStatusCallbackMap.values) { + callback.onDriverHasCheckedPilotCondition(isBoarded) } } } - public void startDriverReadyToAutopilotLoop(){ + fun startDriverReadyToAutopilotLoop() { if (NetworkUtils.isConnected(mContext)) { - startOrStopReadyToAutopilotLoop(true); + startOrStopReadyToAutopilotLoop(true) } } - public void startOrStopReadyToAutopilotLoop(boolean isStart) { - if (isStart){ - TaxiPassengerModelLoopManager.getInstance().startReadyToAutopilot(); - }else { - TaxiPassengerModelLoopManager.getInstance().stopReadyToAutopilot(); + fun startOrStopReadyToAutopilotLoop(isStart: Boolean) { + if (isStart) { + TaxiPassengerModelLoopManager.getInstance().startReadyToAutopilot() + } else { + TaxiPassengerModelLoopManager.getInstance().stopReadyToAutopilot() } } - public void startServicePilotDone(){ - if (mCurrentOCHOrder == null) return; - TaxiPassengerStartReqBean.Result result = new TaxiPassengerStartReqBean.Result(); - result.lat = mLatitude; - result.lon = mLongitude; - TaxiPassengerServiceManager.startServicePilotDone(mContext, - mCurrentOCHOrder.orderNo, result, - new OchCommonServiceCallback(){ - - @Override - public void onSuccess(TaxiPassengerBaseRespBean data) { - - } - - @Override - public void onFail(int code, String msg) { + fun startServicePilotDone() { + if (currentOCHOrder == null) return + val result = TaxiPassengerStartReqBean.Result() + val currentLocation = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02() + result.lat = currentLocation.latitude + result.lon = currentLocation.longitude + TaxiPassengerServiceManager.startServicePilotDone( + mContext!!, + currentOCHOrder!!.orderNo, result, + object : OchCommonServiceCallback { + override fun onSuccess(data: TaxiPassengerBaseRespBean) {} + override fun onFail(code: Int, msg: String) { // ToastUtils.showShort(msg); - } - }); + } + }) } - public void startAutopilot() { + fun startAutopilot() { if (!checkCurrentOCHOrder()) { - CallerLogger.INSTANCE.e(M_TAXI_P + TAG, "no order or order is empty."); - ToastUtils.showShort("当前订单不存在或异常!"); - return; + e(SceneConstant.M_TAXI_P + TAG, "no order or order is empty.") + ToastUtils.showShort("当前订单不存在或异常!") + return } - - if (mCurrentOCHOrder.orderStatus == TaxiPassengerOrderStatusEnum.UserArriveAtStart.getCode()){ - startServicePilotDone(); + if (currentOCHOrder!!.orderStatus == TaxiPassengerOrderStatusEnum.UserArriveAtStart.code) { + startServicePilotDone() } - - if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()) { - ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() + - ", 请稍候重试"); - + if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().autopilotAbilityStatus) { + ToastUtils.showLong( + OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + + ", 请稍候重试" + ) TaxiPassengerAnalyticsManager.getInstance().triggerUnableStartAPReasonEvent( - mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo, - OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason()); - return; + currentOCHOrder!!.startSiteAddr, + currentOCHOrder!!.endSiteAddr, + currentOCHOrder!!.orderNo, + OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + ) + return } - - AutopilotControlParameters parameters = initAutopilotControlParameters(); - if (parameters == null){ - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "AutopilotControlParameters is empty."); - return; + val parameters = initAutopilotControlParameters() + if (parameters == null) { + d(SceneConstant.M_TAXI_P + TAG, "AutopilotControlParameters is empty.") + return } - - CallerAutoPilotControlManager.INSTANCE.startAutoPilot(parameters); - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "start autopilot with parameter: %s" - , GsonUtil.jsonFromObject(parameters) - + " ,startSiteName=" + mCurrentOCHOrder.startSiteAddr - + " ,endSiteName=" + mCurrentOCHOrder.endSiteAddr); - - - TaxiPassengerAnalyticsManager.getInstance().triggerStartAutopilotEvent(false, false, - mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo); + startAutoPilot(parameters) + d( + SceneConstant.M_TAXI_P + TAG, + "start autopilot with parameter: %s", + GsonUtil.jsonFromObject(parameters) + + " ,startSiteName=" + currentOCHOrder!!.startSiteAddr + + " ,endSiteName=" + currentOCHOrder!!.endSiteAddr + ) + TaxiPassengerAnalyticsManager.getInstance().triggerStartAutopilotEvent( + false, + false, + currentOCHOrder!!.startSiteAddr, + currentOCHOrder!!.endSiteAddr, + currentOCHOrder!!.orderNo + ) } - private AutopilotControlParameters initAutopilotControlParameters() { + private fun initAutopilotControlParameters(): AutopilotControlParameters? { if (!checkCurrentOCHOrder()) { - CallerLogger.INSTANCE.e(M_TAXI_P + TAG, "no order or order is empty."); - ToastUtils.showShort("当前订单不存在或异常!"); - return null; + e(SceneConstant.M_TAXI_P + TAG, "no order or order is empty.") + ToastUtils.showShort("当前订单不存在或异常!") + return null } - - AutopilotControlParameters parameters = new AutopilotControlParameters(); - double startWgsLon = mCurrentOCHOrder.startSitePoint.get(0); - double startWgsLat = mCurrentOCHOrder.startSitePoint.get(1); - double endWgsLon = mCurrentOCHOrder.endSitePoint.get(0); - double endWgsLat = mCurrentOCHOrder.endSitePoint.get(1); - - parameters.vehicleType = mCurrentOCHOrder.businessType; - parameters.startName = PinYinUtil.getPinYinHeadChar(mCurrentOCHOrder.startSiteAddr); // 起点名称拼音首字母大写:科学城B区2号门(KXCBQ2HM) - parameters.endName = PinYinUtil.getPinYinHeadChar(mCurrentOCHOrder.endSiteAddr); // 终点名称拼音首字母大写:科学城C区三号门(KXCCQSHM) - parameters.startLatLon = new AutopilotControlParameters.AutoPilotLonLat(startWgsLat, startWgsLon); - parameters.endLatLon = new AutopilotControlParameters.AutoPilotLonLat(endWgsLat, endWgsLon); - + val parameters = AutopilotControlParameters() + val startWgsLon = currentOCHOrder!!.startSitePoint[0] + val startWgsLat = currentOCHOrder!!.startSitePoint[1] + val endWgsLon = currentOCHOrder!!.endSitePoint[0] + val endWgsLat = currentOCHOrder!!.endSitePoint[1] + parameters.vehicleType = currentOCHOrder!!.businessType + parameters.startName = + PinYinUtil.getPinYinHeadChar(currentOCHOrder!!.startSiteAddr) // 起点名称拼音首字母大写:科学城B区2号门(KXCBQ2HM) + parameters.endName = + PinYinUtil.getPinYinHeadChar(currentOCHOrder!!.endSiteAddr) // 终点名称拼音首字母大写:科学城C区三号门(KXCCQSHM) + parameters.startLatLon = AutoPilotLonLat(startWgsLat, startWgsLon) + parameters.endLatLon = AutoPilotLonLat(endWgsLat, endWgsLon) if (parameters.autoPilotLine == null) { - parameters.autoPilotLine = new AutopilotControlParameters.AutoPilotLine( - mCurrentOCHOrder.lineId, - mCurrentOCHOrder.csvFileUrl, mCurrentOCHOrder.csvFileMd5, - mCurrentOCHOrder.txtFileUrl, mCurrentOCHOrder.txtFileMd5, - mCurrentOCHOrder.contrailSaveTime, mCurrentOCHOrder.carModel, - mCurrentOCHOrder.csvFileUrlDPQP, mCurrentOCHOrder.csvFileMd5DPQP, - mCurrentOCHOrder.txtFileUrlDPQP, mCurrentOCHOrder.txtFileMd5DPQP, - mCurrentOCHOrder.contrailSaveTimeDPQP); + parameters.autoPilotLine = AutoPilotLine( + currentOCHOrder!!.lineId, + currentOCHOrder!!.csvFileUrl, currentOCHOrder!!.csvFileMd5, + currentOCHOrder!!.txtFileUrl, currentOCHOrder!!.txtFileMd5, + currentOCHOrder!!.contrailSaveTime, currentOCHOrder!!.carModel, + currentOCHOrder!!.csvFileUrlDPQP, currentOCHOrder!!.csvFileMd5DPQP, + currentOCHOrder!!.txtFileUrlDPQP, currentOCHOrder!!.txtFileMd5DPQP, + currentOCHOrder!!.contrailSaveTimeDPQP + ) } - - return parameters; + return parameters } /** * 将业务订单信息保存,鹰眼可取用 */ - public void updateAutopilotControlParameters() { - - AutopilotControlParameters parameters = initAutopilotControlParameters(); - if (null == parameters){ - CallerLogger.INSTANCE.e(M_TAXI_P + TAG, "AutopilotControlParameters is empty."); - return; + fun updateAutopilotControlParameters() { + val parameters = initAutopilotControlParameters() + if (null == parameters) { + e(SceneConstant.M_TAXI_P + TAG, "AutopilotControlParameters is empty.") + return } - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "AutopilotControlParameters is update."); - CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(parameters); + d(SceneConstant.M_TAXI_P + TAG, "AutopilotControlParameters is update.") + updateAutopilotControlParameters(parameters) } - public void clearAutopilotControlParameters(){ - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "AutopilotControlParameters is clear."); - CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(null); + fun clearAutopilotControlParameters() { + d(SceneConstant.M_TAXI_P + TAG, "AutopilotControlParameters is clear.") + updateAutopilotControlParameters(null) } - - private void runOnUIThread(Runnable executor) { - if (executor == null) { - return; - } - if (Looper.myLooper() != Looper.getMainLooper()) { - UiThreadHandler.post(executor); - } else { - executor.run(); + fun setStation() { + if (currentOCHOrder != null) { + val startStation = MogoLocation() + startStation.longitude = currentOCHOrder!!.startSiteGcjPoint[0] + startStation.latitude = currentOCHOrder!!.startSiteGcjPoint[1] + val endStation = MogoLocation() + endStation.longitude = currentOCHOrder!!.endSiteGcjPoint[0] + endStation.latitude = currentOCHOrder!!.endSiteGcjPoint[1] + setStationPoint(startStation, endStation, currentOCHOrder!!.lineId) } } - public void setStation(){ - if(mCurrentOCHOrder!=null){ - MogoLocation startStation = new MogoLocation(); - startStation.setLongitude(mCurrentOCHOrder.startSiteGcjPoint.get(0)); - startStation.setLatitude(mCurrentOCHOrder.startSiteGcjPoint.get(1)); - MogoLocation endStation = new MogoLocation(); - endStation.setLongitude(mCurrentOCHOrder.endSiteGcjPoint.get(0)); - endStation.setLatitude(mCurrentOCHOrder.endSiteGcjPoint.get(1)); - TrajectoryAndDistanceManager.INSTANCE.setStationPoint(startStation,endStation,mCurrentOCHOrder.lineId); - } + fun cleanStation() { + setStationPoint(null, null, -1L) } - public void cleanStation(){ - TrajectoryAndDistanceManager.INSTANCE.setStationPoint(null,null,-1L); - } - -} +} \ No newline at end of file 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 index bb3ebec0dc..2fdc5a9d10 100644 --- 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 @@ -48,7 +48,7 @@ public class TaxiPassengerModelLoopManager { .map((aLong -> aLong + 1)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(aLong -> TaxiPassengerModel.getInstance().loopQueryPilotStatus()); + .subscribe(aLong -> TaxiPassengerModel.INSTANCE.loopQueryPilotStatus()); } public void stopReadyToAutopilot() { @@ -77,7 +77,7 @@ public class TaxiPassengerModelLoopManager { .map((aLong -> aLong + 1)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(aLong -> TaxiPassengerModel.getInstance().queryInAndWaitOrders()); + .subscribe(aLong -> TaxiPassengerModel.INSTANCE.queryInAndWaitOrders()); } public void stopInAndWaitOrdersLoop() { @@ -101,7 +101,7 @@ public class TaxiPassengerModelLoopManager { .map((aLong -> aLong + 1)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(aLong -> TaxiPassengerModel.getInstance().queryOrderRemaining()); + .subscribe(aLong -> TaxiPassengerModel.INSTANCE.queryOrderRemaining()); } public void stopQueryOrderRemainingLoop() { diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java index 3a0e4215c1..35e5aa24e9 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java @@ -18,7 +18,6 @@ import com.mogo.och.common.module.manager.OCHAdasAbilityManager; import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean; import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerADASStatusCallback; -import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCallback; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback; import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonCallback; import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum; @@ -32,7 +31,7 @@ import com.mogo.och.taxi.passenger.ui.leftmenu.LeftMenuOpen; * @date: 2022/3/4 */ public class BaseTaxiPassengerPresenter extends Presenter implements - IOCHTaxiPassengerADASStatusCallback, IOCHTaxiPassengerControllerStatusCallback, + IOCHTaxiPassengerADASStatusCallback, IOCHTaxiPassengerOrderStatusCallback { private static final String TAG = BaseTaxiPassengerPresenter.class.getSimpleName(); @@ -41,7 +40,7 @@ public class BaseTaxiPassengerPresenter extends Presenter mView.switchVRFlatMode(isVRMode)); - } - - @Override - public void onCarLocationChanged(MogoLocation location) { - // 速度不用展示 - // LeftMenuOpen.INSTANCE.callCallBack(-1,-1,location.getSpeed()); - } - @Override public void onCurrentOrderStatusChanged(TaxiPassengerOrderQueryRespBean.Result order) { // CallerLogger.INSTANCE.d(M_TAXI_P + TAG, GsonUtil.jsonFromObject(order)); @@ -169,11 +155,11 @@ public class BaseTaxiPassengerPresenter extends Presenter{ mView.showOrHideStartAutopilotView(false,false); mView.showOrHideServingOrderFragment(true,true); }); - TaxiPassengerModel.getInstance().startOrStopReadyToAutopilotLoop(false); - TaxiPassengerModel.getInstance().setStation(); + TaxiPassengerModel.INSTANCE.startOrStopReadyToAutopilotLoop(false); + TaxiPassengerModel.INSTANCE.setStation(); } // 30 用户到达上车点 并通过了手机号后四位验证 // 40 服务中 @@ -222,8 +208,7 @@ public class BaseTaxiPassengerPresenter extends Presenter { @@ -232,7 +217,7 @@ public class BaseTaxiPassengerPresenter extends Presenter mView.showArrivedEndLayout2Thank(aBoolean)); + TaxiPassengerModel.INSTANCE.arrivedAndScore(taxiPassengerScoreUpdateOrderReqBean,aBoolean -> mView.showArrivedEndLayout2Thank(aBoolean)); } /** * 开启自动驾驶 */ public void startAutopilot(){ - TaxiPassengerModel.getInstance().startAutopilot(); + TaxiPassengerModel.INSTANCE.startAutopilot(); } } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/TaxiPassengerServingOrderPresenter.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/TaxiPassengerServingOrderPresenter.java index e0e6edf5e9..d02ce81490 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/TaxiPassengerServingOrderPresenter.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/TaxiPassengerServingOrderPresenter.java @@ -18,25 +18,19 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerAutopilotPlanningCallback; -import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCallback; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback; -import com.mogo.och.taxi.passenger.callback.ITaxiPassengerVeloctityCallback; import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum; -import com.mogo.och.taxi.passenger.model.TaxiPassengerGeocodeSearchModel; import com.mogo.och.taxi.passenger.model.TaxiPassengerModel; import com.mogo.och.taxi.passenger.ui.TaxiPassengerServingOrderFragment; import java.util.List; -import mogo.telematics.pad.MessagePad; - /** * @author: wangmingjun * @date: 2022/3/14 */ public class TaxiPassengerServingOrderPresenter extends Presenter - implements IOCHTaxiPassengerAutopilotPlanningCallback, IOCHTaxiPassengerOrderStatusCallback - , IOCHTaxiPassengerControllerStatusCallback, ITaxiPassengerVeloctityCallback { + implements IOCHTaxiPassengerAutopilotPlanningCallback, IOCHTaxiPassengerOrderStatusCallback{ private static final String TAG = TaxiPassengerServingOrderPresenter.class.getSimpleName(); @@ -54,18 +48,13 @@ public class TaxiPassengerServingOrderPresenter extends Presenter mView.onCarLocationChanged(location)); - long currentTimeMillis = System.currentTimeMillis(); - if(currentTimeMillis-startTime