[6.0.0] taxi无人化module报错处理

This commit is contained in:
wangmingjun
2023-08-03 19:31:56 +08:00
committed by zhongchao
parent 270d49584a
commit 881e2b7c2b
20 changed files with 148 additions and 151 deletions

View File

@@ -1,6 +1,7 @@
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
@@ -17,7 +18,7 @@ android {
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
arguments = [AROUTER_MODULE_NAME: project.getName(),"room.schemaLocation": "$projectDir/schemas".toString()]
}
}
}
@@ -55,8 +56,10 @@ dependencies {
implementation rootProject.ext.dependencies.androidxconstraintlayout
implementation rootProject.ext.dependencies.amapnavi3dmap
//koin
// implementation "io.insert-koin:koin-android:3.3.1"
implementation "androidx.fragment:fragment-ktx:1.3.6"
kapt "android.arch.lifecycle:extensions:1.1.1"
kapt "android.arch.persistence.room:compiler:1.1.1"
implementation project(":OCH:mogo-och-common-module")
compileOnly project(":libraries:mogo-map")

View File

@@ -11,7 +11,7 @@ import androidx.fragment.app.FragmentManager;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.och.taxi.constant.TaxiConst;
import com.mogo.och.taxi.constant.TaxiUnmannedConst;
import com.mogo.och.taxi.ui.TaxiFragment;
import org.jetbrains.annotations.NotNull;
@@ -24,8 +24,8 @@ public
* <p>
* 网约车-出租车
*/
@Route( path = TaxiConst.PATH )
class TaxiProvider implements IMogoOCH {
@Route( path = TaxiUnmannedConst.PATH )
class TaxiUnmannedProvider implements IMogoOCH {
private static final String TAG = "TaxiProvider";
private TaxiFragment ochTaxiFragment;

View File

@@ -40,7 +40,7 @@ import com.mogo.map.listener.IMogoMapListener
import com.mogo.map.uicontroller.VisualAngleMode
import com.mogo.och.common.module.utils.AnimatorDrawableUtil
import com.mogo.och.taxi.R
import com.mogo.och.taxi.constant.TaxiConst
import com.mogo.och.taxi.constant.TaxiUnmannedConst
import com.mogo.och.taxi.ui.TaxiAmapNaviFragment
import com.mogo.och.taxi.ui.TaxiRottingNaviFragment
/**
@@ -491,7 +491,7 @@ abstract class BaseTaxiTabFragment<V: IView, P: Presenter<V>> : MvpFragment<V, P
startAutopilotDone(false)
}
}
}, TaxiConst.TIMER_START_AUTOPILOT_INTERVAL)
}, TaxiUnmannedConst.TIMER_START_AUTOPILOT_INTERVAL)
}
fun hidPanel() {

View File

@@ -1,6 +1,6 @@
package com.mogo.och.taxi.bean;
import com.mogo.och.taxi.constant.TaxiConst;
import com.mogo.och.taxi.constant.TaxiUnmannedConst;
import java.util.UUID;
@@ -21,6 +21,6 @@ public class CarHeartbeatReqBean {
this.lon = lon;
this.lat = lat;
this.msgId = UUID.randomUUID().toString();
this.interval = (int) (TaxiConst.LOOP_PERIOD_60S / 1000);
this.interval = (int) (TaxiUnmannedConst.LOOP_PERIOD_60S / 1000);
}
}

View File

@@ -8,14 +8,14 @@ public class TaxiOrPassengerReadyReqBean {
public String orderNo;
public String sn;
public TaxiOrPassengerReadyReqBean.Result loc;
public Result loc;
public static class Result {
public Double lat;
public Double lon;
}
public TaxiOrPassengerReadyReqBean(String sn, String orderNo, TaxiOrPassengerReadyReqBean.Result point) {
public TaxiOrPassengerReadyReqBean(String sn, String orderNo, Result point) {
this.sn = sn;
this.orderNo = orderNo;
this.loc = point;

View File

@@ -1,11 +1,9 @@
package com.mogo.och.taxi.constant
import com.mogo.commons.debug.DebugConfig
/**
* Created on 2021/12/6
*/
class TaxiConst {
class TaxiUnmannedConst {
companion object {
// OCH arouter 路由path

View File

@@ -63,28 +63,17 @@ 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.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.coordinateConverterWgsToGcj
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil.coordinateConverterWgsToGcjLocations
import com.mogo.och.common.module.utils.PinYinUtil
import com.mogo.och.common.module.utils.ToastUtilsOch
import com.mogo.och.taxi.R
import com.mogo.och.taxi.bean.DriverServiceDataRespBean
import com.mogo.och.taxi.bean.OrderQueryRespBean
import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean
import com.mogo.och.taxi.bean.OrderRouteUpdateReqBean
import com.mogo.och.taxi.bean.OrdersInServiceQueryRespBean
import com.mogo.och.taxi.bean.OrdersListQueryRespBean
import com.mogo.och.taxi.bean.QueryOrderRouteResp
import com.mogo.och.taxi.bean.TaxiDataBaseRespBean
import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean
import com.mogo.och.taxi.callback.IOCHTaxiAutopilotPlanningCallback
import com.mogo.och.taxi.callback.ITaxiADASStatusCallback
import com.mogo.och.taxi.callback.ITaxiCarOperationalCallback
import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback
import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback
import com.mogo.och.taxi.constant.TaxiConst
import com.mogo.och.taxi.constant.TaxiUnmannedConst
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum.Companion.valueOf
import com.mogo.och.taxi.constant.TaxtServingStatusManager.isOpeningOrderStatus
@@ -348,7 +337,7 @@ object TaxiModel {
mCurrentOCHOrder = data
TaxiTrajectoryManager.getInstance().syncTrajectoryInfo()
SharedPrefsMgr.getInstance(mContext!!).putString(
TaxiConst.SP_KEY_OCH_TAXI_ORDER,
TaxiUnmannedConst.SP_KEY_OCH_TAXI_ORDER,
GsonUtil.jsonFromObject(data)
)
if (mCurrentOCHOrder!!.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.code) {
@@ -394,7 +383,7 @@ object TaxiModel {
mCurrentOCHOrder = null
clearAutopilotControlParameters()
TaxiTrajectoryManager.getInstance().syncTrajectoryInfo()
SharedPrefsMgr.getInstance(mContext!!).remove(TaxiConst.SP_KEY_OCH_TAXI_ORDER)
SharedPrefsMgr.getInstance(mContext!!).remove(TaxiUnmannedConst.SP_KEY_OCH_TAXI_ORDER)
isRestartAutopilot = false
if (FunctionBuildConfig.isDemoMode) {
// 当美化模式(演示模式)开启时: 取消或订单已完成时置false
@@ -548,7 +537,7 @@ object TaxiModel {
location.longitude, location.latitude
).toDouble()
i(SceneConstant.M_TAXI + TAG, "judgeStartStation() distance = $distance")
if (distance <= TaxiConst.ARRIVE_AT_START_STATION_DISTANCE) {
if (distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE) {
// TODO: 调用到达上车点 arrivedStartPoint()
}
}
@@ -632,7 +621,7 @@ object TaxiModel {
currentLocation.longitude, currentLocation.latitude
).toDouble()
i(SceneConstant.M_TAXI + TAG, "judgeEndStation() distance = $distance")
if (distance <= TaxiConst.ARRIVE_AT_START_STATION_DISTANCE) { //1、当前位置和站点围栏15m内
if (distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE) { //1、当前位置和站点围栏15m内
if ((!checkCurrentOCHOrder()
|| (getCurOrderStatus() === TaxiOrderStatusEnum.ArriveAtEnd))
) {
@@ -653,7 +642,7 @@ object TaxiModel {
)
//3、刚过站且过站距离在15m内 提交到站
if (stationAngle > 90 && distance <= TaxiConst.ARRIVE_AT_START_STATION_DISTANCE) {
if (stationAngle > 90 && distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE) {
if ((!checkCurrentOCHOrder()
|| (getCurOrderStatus() === TaxiOrderStatusEnum.ArriveAtEnd))
) {
@@ -885,7 +874,7 @@ object TaxiModel {
}
private fun updateDistance(lastSumLength: Float) {
val lastTime = lastSumLength / TaxiConst.TAXI_AVERAGE_SPEED * 3.6 //秒
val lastTime = lastSumLength / TaxiUnmannedConst.TAXI_AVERAGE_SPEED * 3.6 //秒
d(
SceneConstant.M_TAXI + "dynamicCalculateRouteInfo",
("---lastSumLength: " + lastSumLength + "----lastTime : " + lastTime

View File

@@ -1,10 +1,9 @@
package com.mogo.och.taxi.model;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI;
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.constant.TaxiConst;
import com.mogo.och.taxi.constant.TaxiUnmannedConst;
import java.util.concurrent.TimeUnit;
@@ -45,12 +44,12 @@ public class TaxiModelLoopManager {
return;
}
CallerLogger.INSTANCE.i(M_TAXI + TAG, "startInAndWaitOrdersLoop()");
mInAndWaitServiceDisposable = Observable.interval(TaxiConst.LOOP_DELAY,
TaxiConst.LOOP_PERIOD_2S, TimeUnit.MILLISECONDS)
mInAndWaitServiceDisposable = Observable.interval(TaxiUnmannedConst.LOOP_DELAY,
TaxiUnmannedConst.LOOP_PERIOD_2S, TimeUnit.MILLISECONDS)
.map((aLong -> aLong + 1))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(aLong -> TaxiModel.INSTANCE.queryInAndWaitOrders());
.subscribe(aLong -> {});
}
public void stopInAndWaitOrdersLoop() {
@@ -79,7 +78,7 @@ public class TaxiModelLoopManager {
public void accept(Throwable throwable) throws Exception {
}
})
.delay(TaxiConst.LOOP_CALCULATEROUTE_2S, TimeUnit.MILLISECONDS, true) // 设置delayError为true表示出现错误的时候也需要延迟5s进行通知达到无论是请求正常还是请求失败都是5s后重新订阅即重新请求。
.delay(TaxiUnmannedConst.LOOP_CALCULATEROUTE_2S, TimeUnit.MILLISECONDS, true) // 设置delayError为true表示出现错误的时候也需要延迟5s进行通知达到无论是请求正常还是请求失败都是5s后重新订阅即重新请求。
.subscribeOn(Schedulers.io())
.repeat() // repeat保证请求成功后能够重新订阅。
.retry() // retry保证请求失败后能重新订阅
@@ -97,7 +96,7 @@ public class TaxiModelLoopManager {
@Override
public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
if (emitter.isDisposed()) return;
TaxiModel.getInstance().dynamicCalculateRouteInfo();
// TaxiModel.INSTANCE.dynamicCalculateRouteInfo();
emitter.onComplete();
}
});

View File

@@ -1,11 +1,9 @@
package com.mogo.och.taxi.model
import com.mogo.eagle.core.data.BaseData
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
import com.mogo.och.taxi.base.BaseViewModel
import com.mogo.och.taxi.base.IUiIntent
import com.mogo.och.taxi.bean.OrderQueryRespBean
import com.mogo.och.taxi.network.TaxiServiceManager
import com.mogo.och.taxi.ui.unmanned.OrderUiState
import com.mogo.och.taxi.ui.unmanned.TaskUiState
import com.mogo.och.taxi.ui.unmanned.UnmannedIntent
import com.mogo.och.taxi.ui.unmanned.UnmannedState
@@ -19,7 +17,7 @@ object TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
private var mCurrentOrder:OrderQueryRespBean.Result? = null
override fun initUiState(): UnmannedState {
TODO("Not yet implemented")
return UnmannedState(TaskUiState.INIT, OrderUiState.INIT)
}
override fun handleIntent(intent: IUiIntent) {

View File

@@ -1,6 +1,7 @@
package com.mogo.och.taxi.network
import android.content.Context
import android.util.Log
import com.mogo.och.common.module.biz.constant.OchCommonConst.Companion.getBaseUrl
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean
@@ -12,6 +13,7 @@ import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.cloud.passport.MoGoAiCloudClient
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.utils.GsonUtil
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
import com.mogo.och.common.module.biz.network.OchCommonSubscribeImpl
import com.mogo.och.common.module.biz.network.interceptor.transformTry
@@ -65,6 +67,7 @@ object OchCommonServiceManager {
it.lat,it.lon
)
}
Log.d("taxiUnmanned-request = " , GsonUtil.jsonFromObject(mOCHTaxiServiceApi))
val sn = MoGoAiCloudClientConfig.getInstance().sn
mOCHTaxiServiceApi.gotoLoginBycode4Taxi(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
@@ -88,6 +91,8 @@ object OchCommonServiceManager {
it.lat,it.lon
)
}
Log.d("taxiUnmanned-request = " , GsonUtil.jsonFromObject(mOCHTaxiServiceApi))
mOCHTaxiServiceApi.logout4Taxi(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
MoGoAiCloudClientConfig.getInstance().token,

View File

@@ -2,18 +2,15 @@ package com.mogo.och.taxi.presenter;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI;
import android.os.Build;
import android.os.Looper;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.lifecycle.LifecycleOwner;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.mvp.Presenter;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
@@ -21,20 +18,17 @@ import com.mogo.och.common.module.biz.callback.ILoginCallback;
import com.mogo.och.common.module.biz.constant.LoginStatusManager;
import com.mogo.och.common.module.manager.OCHAdasAbilityManager;
import com.mogo.och.taxi.bean.OrderQueryRespBean;
import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean;
import com.mogo.och.taxi.callback.ITaxiADASStatusCallback;
import com.mogo.och.taxi.callback.ITaxiCarOperationalCallback;
import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback;
import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback;
import com.mogo.och.taxi.constant.TaxiConst;
import com.mogo.och.taxi.constant.TaxiUnmannedConst;
import com.mogo.och.taxi.constant.TaxiDriverRoleEnum;
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
import com.mogo.och.taxi.constant.TaxtServingStatusManager;
import com.mogo.och.taxi.model.TaxiModel;
import com.mogo.och.taxi.ui.TaxiFragment;
import org.jetbrains.annotations.NotNull;
import java.util.List;
/**
@@ -126,7 +120,7 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
}
public void reportToEndDisAndTime(long lastSumLength, long duration){//米/秒
TaxiModel.INSTANCE.reportOrderRemain(lastSumLength,duration);
// TaxiModel.INSTANCE.reportOrderRemain(lastSumLength,duration);
}
@Override
@@ -210,9 +204,9 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
// 设置当前用户角色
String role = "";
if (TaxiDriverRoleEnum.DEMO.getCode() == data.data.purpose) {
role = TaxiConst.DEMO_USER;
role = TaxiUnmannedConst.DEMO_USER;
} else if (TaxiDriverRoleEnum.TEST.getCode() == data.data.purpose) {
role = TaxiConst.TEST_USER;
role = TaxiUnmannedConst.TEST_USER;
}
String finalRole = role;
runOnUIThread(() -> {

View File

@@ -3,50 +3,52 @@ package com.mogo.och.taxi.ui
import android.os.Bundle
import android.view.View
import com.amap.api.navi.AMapNaviViewListener
import com.mogo.commons.mvp.BaseFragment
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.och.common.module.map.AmapNaviToDestinationModel
import com.mogo.och.common.module.map.CommonAmapNaviVIew
import com.mogo.och.common.module.map.ICommonNaviChangedCallback
import com.mogo.och.taxi.R
import com.mogo.och.taxi.base.BaseTaxiUIFragment
import kotlinx.android.synthetic.main.taxi_amap_navi_view.navi_view
/**
* @author: wangmingjun
* @date: 2023/7/24
*/
class TaxiAmapNaviFragment : BaseTaxiUIFragment(),
class TaxiAmapNaviFragment : BaseFragment(),
AMapNaviViewListener {
private var mAMapNaviView: CommonAmapNaviVIew? = null
private var mNaviToStartInfoCallback: ICommonNaviChangedCallback? = null
override fun getLayoutId(): Int {
return R.layout.taxi_amap_navi_view
}
override fun initViews(view: View) {
mAMapNaviView = view.findViewById<CommonAmapNaviVIew>(R.id.navi_view)
override fun getTagName(): String {
return "TaxiAmapNaviFragment"
}
override fun initViews() {
}
override fun initViews(savedInstanceState: Bundle?) {
super.initViews(savedInstanceState)
if (mAMapNaviView != null) mAMapNaviView!!.onCreate(savedInstanceState)
if (navi_view != null) navi_view.onCreate(savedInstanceState)
}
override fun onResume() {
super.onResume()
if (mAMapNaviView != null) mAMapNaviView!!.onResume()
if (navi_view != null) navi_view.onResume()
}
override fun onPause() {
super.onPause()
if (mAMapNaviView != null) mAMapNaviView!!.onPause()
if (navi_view != null) navi_view.onPause()
}
override fun onDestroy() {
super.onDestroy()
AmapNaviToDestinationModel.getInstance(context).setVoiceIsMute(false)
if (mAMapNaviView != null) {
mAMapNaviView!!.onDestroy()
if (navi_view != null) {
navi_view.onDestroy()
}
if (mNaviToStartInfoCallback != null) {
mNaviToStartInfoCallback = null

View File

@@ -12,9 +12,10 @@ import android.view.View
import android.widget.TextView
import androidx.annotation.RequiresApi
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.lifecycle.ViewModelProvider
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import com.amap.api.navi.model.NaviLatLng
import com.mogo.commons.mvp.BaseFragment
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getState
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02
@@ -35,10 +36,9 @@ import com.mogo.och.common.module.utils.OCHThreadPoolManager
import com.mogo.och.common.module.voice.VoiceNotice.showNotice
import com.mogo.och.common.module.wigets.OCHCommitDialog
import com.mogo.och.taxi.R
import com.mogo.och.taxi.base.BaseTaxiUIFragment
import com.mogo.och.taxi.bean.OrderQueryRespBean
import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean
import com.mogo.och.taxi.constant.TaxiConst
import com.mogo.och.taxi.constant.TaxiUnmannedConst
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum.Companion.valueOf
import com.mogo.och.taxi.model.TaxiModel
@@ -63,11 +63,11 @@ import kotlin.math.roundToInt
* @author: wangmingjun
* @date: 2023/7/24
*/
class TaxiBeingTaskFragment : BaseTaxiUIFragment(),
class TaxiBeingTaskFragment : BaseFragment(),
View.OnClickListener, ICommonNaviChangedCallback {
private var mOrderNo: String? = null
private var mViewModel: TaxiUnmannedViewModel? = null
private val mViewModel by viewModels<TaxiUnmannedViewModel>()
@Volatile
private var mTtsLessThan200Tip = 0 //离终点200米提示播报
@@ -84,12 +84,15 @@ class TaxiBeingTaskFragment : BaseTaxiUIFragment(),
return R.layout.unmanned_being_order
}
override fun onAttach(context: Context) {
super.onAttach(context)
mViewModel = ViewModelProvider(this)[TaxiUnmannedViewModel::class.java]
override fun getTagName(): String {
return "TaxiBeingTaskFragment"
}
override fun initViews(view: View) {
override fun onAttach(context: Context) {
super.onAttach(context)
}
override fun initViews() {
initNaviView()
isHaveBeingOrder(false)
initOnClickListener()
@@ -102,9 +105,9 @@ class TaxiBeingTaskFragment : BaseTaxiUIFragment(),
private fun initData() {
lifecycleScope.launchWhenStarted {
mViewModel?.let {
mViewModel.let {
it.uiIntentFlow.collect { state ->
d(TAG,"uiIntentFlow: $state")
d(TAG,"uiIntentFlow: $state")
when(state){
is UnmannedIntent.GetNextTask -> {
}
@@ -121,16 +124,17 @@ class TaxiBeingTaskFragment : BaseTaxiUIFragment(),
//监听返回的数据状态
lifecycleScope.launchWhenStarted {
mViewModel?.let{
mViewModel.let{
it.uiStateFlow.map {it.taskUiState}.collect {state ->
d(TAG,"uiStateFlow: $state")
when(state){
is TaskUiState.INIT -> {
}
is TaskUiState.SUCCESS -> {
// TODO: 页面刷新
// updateCurrentOrderStatusChanged(state.models)
// updateCurrentOrderStatusChanged(state.models)
}
}
}
@@ -452,13 +456,13 @@ class TaxiBeingTaskFragment : BaseTaxiUIFragment(),
startNaviToStation(false, orderStartStationLat, orderStartStationLng)
setOrRemoveMapMaker(
true,
TaxiConst.TAXI_START_MAP_MAKER,
TaxiUnmannedConst.TAXI_START_MAP_MAKER,
order.startSitePoint,
R.raw.star_marker
)
setOrRemoveMapMaker(
true,
TaxiConst.TAXI_END_MAP_MAKER,
TaxiUnmannedConst.TAXI_END_MAP_MAKER,
order.endSitePoint,
R.raw.end_marker
)
@@ -473,13 +477,13 @@ class TaxiBeingTaskFragment : BaseTaxiUIFragment(),
showOrHideNavi()
setOrRemoveMapMaker(
false,
TaxiConst.TAXI_START_MAP_MAKER,
TaxiUnmannedConst.TAXI_START_MAP_MAKER,
order.startSitePoint,
R.raw.star_marker
)
setOrRemoveMapMaker(
false,
TaxiConst.TAXI_END_MAP_MAKER,
TaxiUnmannedConst.TAXI_END_MAP_MAKER,
order.endSitePoint,
R.raw.end_marker
)
@@ -506,13 +510,13 @@ class TaxiBeingTaskFragment : BaseTaxiUIFragment(),
showOrHideNavi()
setOrRemoveMapMaker(
true,
TaxiConst.TAXI_START_MAP_MAKER,
TaxiUnmannedConst.TAXI_START_MAP_MAKER,
order.startSitePoint,
R.raw.star_marker
)
setOrRemoveMapMaker(
true,
TaxiConst.TAXI_END_MAP_MAKER,
TaxiUnmannedConst.TAXI_END_MAP_MAKER,
order.endSitePoint,
R.raw.end_marker
)
@@ -527,13 +531,13 @@ class TaxiBeingTaskFragment : BaseTaxiUIFragment(),
}
setOrRemoveMapMaker(
false,
TaxiConst.TAXI_START_MAP_MAKER,
TaxiUnmannedConst.TAXI_START_MAP_MAKER,
order.startSitePoint,
R.raw.star_marker
)
setOrRemoveMapMaker(
true,
TaxiConst.TAXI_END_MAP_MAKER,
TaxiUnmannedConst.TAXI_END_MAP_MAKER,
order.endSitePoint,
R.raw.end_marker
)
@@ -550,13 +554,13 @@ class TaxiBeingTaskFragment : BaseTaxiUIFragment(),
showOrHideNavi()
setOrRemoveMapMaker(
false,
TaxiConst.TAXI_START_MAP_MAKER,
TaxiUnmannedConst.TAXI_START_MAP_MAKER,
order.startSitePoint,
R.raw.star_marker
)
setOrRemoveMapMaker(
false,
TaxiConst.TAXI_END_MAP_MAKER,
TaxiUnmannedConst.TAXI_END_MAP_MAKER,
order.endSitePoint,
R.raw.end_marker
)
@@ -656,13 +660,13 @@ class TaxiBeingTaskFragment : BaseTaxiUIFragment(),
if (mCurrentOrder != null) {
setOrRemoveMapMaker(
false,
TaxiConst.TAXI_START_MAP_MAKER,
TaxiUnmannedConst.TAXI_START_MAP_MAKER,
mCurrentOrder!!.startSitePoint,
R.raw.star_marker
)
setOrRemoveMapMaker(
false,
TaxiConst.TAXI_END_MAP_MAKER,
TaxiUnmannedConst.TAXI_END_MAP_MAKER,
mCurrentOrder!!.endSitePoint,
R.raw.end_marker
)
@@ -769,7 +773,7 @@ class TaxiBeingTaskFragment : BaseTaxiUIFragment(),
)
val builder =
Point.Options.Builder(
TaxiConst.TYPE_MARKER_TAXI_ORDER,
TaxiUnmannedConst.TYPE_MARKER_TAXI_ORDER,
Level.MAP_MARKER
)
.setId(uuid)

View File

@@ -94,9 +94,11 @@ public class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
serverOrdersFragmentWR = WeakReference(TaxiServerOrdersFragment.newInstance())
val transaction: FragmentTransaction = childFragmentManager.beginTransaction()
//默认显示OCHTaxiServerOrdersFragment
transaction.add(R.id.fragment_container, serverOrdersFragmentWR!!.get()!!).show(
serverOrdersFragmentWR!!.get()!!
)
serverOrdersFragmentWR?.get()?.let {
transaction.add(R.id.fragment_container, it).show(
it
)
}
transaction.commitAllowingStateLoss()
}

View File

@@ -13,17 +13,16 @@ import android.widget.TextView
import androidx.annotation.RequiresApi
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.mogo.commons.mvp.BaseFragment
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.taxi.R
import com.mogo.och.taxi.base.BaseTaxiUIFragment
import com.mogo.och.taxi.model.TaxiModel
import kotlinx.android.synthetic.main.taxi_operation_data_view.operation_data_recycler_view
/**
* @author: wangmingjun
* @date: 2023/7/24
*/
class TaxiOperationDatasFragment : BaseTaxiUIFragment() {
private var mRecyclerView: RecyclerView? = null
class TaxiOperationDatasFragment : BaseFragment() {
private val mDurationData: MutableList<Long> = ArrayList()
private val mOrderNumData: MutableList<Long> = ArrayList()
private val mData: MutableList<Long> = ArrayList()
@@ -32,15 +31,17 @@ class TaxiOperationDatasFragment : BaseTaxiUIFragment() {
return R.layout.taxi_operation_data_view
}
override fun initViews(view: View) {
mRecyclerView = view.findViewById<RecyclerView>(R.id.operation_data_recycler_view)
mRecyclerView!!.layoutManager = LinearLayoutManager(mContext)
override fun getTagName(): String {
return "TaxiOperationDatasFragment"
}
override fun initViews() {
operation_data_recycler_view.layoutManager = LinearLayoutManager(mContext)
mContext?.let {
mAdapter = OperationDataAdapter(it, mData)
mRecyclerView!!.adapter = mAdapter
operation_data_recycler_view.adapter = mAdapter
initDatas()
}
}
private fun initDatas() {

View File

@@ -5,11 +5,11 @@ import android.app.Activity
import android.content.Context
import android.os.Bundle
import android.view.View
import androidx.lifecycle.ViewModelProvider
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import com.mogo.commons.mvp.BaseFragment
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.och.taxi.R
import com.mogo.och.taxi.base.BaseTaxiUIFragment
import com.mogo.och.taxi.bean.OrderQueryRespBean
import com.mogo.och.taxi.model.TaxiUnmannedViewModel
import com.mogo.och.taxi.ui.unmanned.OrderUiState
@@ -20,38 +20,38 @@ import kotlinx.coroutines.flow.map
* @author: wangmingjun
* @date: 2023/7/24
*/
class TaxiReserveOrderFragment : BaseTaxiUIFragment() {
class TaxiReserveOrderFragment : BaseFragment() {
private val mData: MutableList<OrderQueryRespBean.Result> = ArrayList()
private var mViewModel: TaxiUnmannedViewModel? = null
private val mViewModel by viewModels<TaxiUnmannedViewModel>()
override fun getLayoutId(): Int {
return R.layout.unmanned_being_order
}
override fun initViews(view: View) {
initViews()
override fun getTagName(): String {
return "TaxiReserveOrderFragment"
}
override fun onAttach(context: Context) {
super.onAttach(context)
mViewModel = ViewModelProvider(this)[TaxiUnmannedViewModel::class.java]
}
fun initViews() {
override fun initViews() {
initData()
}
private fun initData() {
//监听返回的数据状态
lifecycleScope.launchWhenStarted {
mViewModel?.let{
mViewModel.let{
it.uiStateFlow.map {it.orderUiState}.collect {state ->
CallerLogger.d(TAG, "uiStateFlow: $state")
when(state){
is OrderUiState.INIT -> {
}
is OrderUiState.SUCCESS -> {
// TODO: 页面刷新
}

View File

@@ -14,10 +14,10 @@ import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import androidx.viewpager.widget.ViewPager.OnPageChangeListener
import com.google.android.material.tabs.TabLayout
import com.mogo.commons.mvp.BaseFragment
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.och.taxi.R
import com.mogo.och.taxi.base.BaseTaxiUIFragment
import com.mogo.och.taxi.bean.OrderQueryRespBean
import kotlinx.android.synthetic.main.taxi_server_orders_panel.module_och_taxi_tab
import kotlinx.android.synthetic.main.taxi_server_orders_panel.module_och_taxi_view_pager
@@ -27,7 +27,7 @@ import me.jessyan.autosize.utils.AutoSizeUtils
* @author: wangmingjun
* @date: 2023/7/25
*/
class TaxiServerOrdersFragment : BaseTaxiUIFragment(){
class TaxiServerOrdersFragment : BaseFragment(){
private val mTabTitles = arrayOf("进行中", "待服务")
private val fragments: MutableList<Fragment> = ArrayList()
private var beingTaskFragment: TaxiBeingTaskFragment? = null
@@ -35,8 +35,12 @@ class TaxiServerOrdersFragment : BaseTaxiUIFragment(){
override fun getLayoutId(): Int {
return R.layout.taxi_server_orders_panel
}
override fun initViews(view: View) {
override fun getTagName(): String {
return "TaxiServerOrdersFragment"
}
override fun initViews() {
initOrderTab()
}

View File

@@ -37,8 +37,7 @@ public class TPRouteDataTestUtils {
builder.setLongitude(s.getDouble("lon"));
list.add(builder.build());
}
// TaxiModel.getInstance().updateOrderRoute(list);
TaxiModel.INSTANCE.updateOrderRouteInfo(list);
// TaxiModel.getInstance().updateOrderRouteInfo(list);
} catch (JSONException e) {
e.printStackTrace();
}

View File

@@ -12,7 +12,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.DateTimeUtils;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.och.taxi.constant.TaxiConst;
import com.mogo.och.taxi.constant.TaxiUnmannedConst;
import java.util.HashMap;
@@ -28,7 +28,7 @@ public class TaxiAnalyticsManager {
}
public static TaxiAnalyticsManager getInstance() {
return TaxiAnalyticsManager.SingletonHolder.INSTANCE;
return SingletonHolder.INSTANCE;
}
@@ -58,11 +58,11 @@ public class TaxiAnalyticsManager {
CallerLogger.INSTANCE.e(M_TAXI + "triggerStartAutopilotFailureEvent", failMsg);
if (CallerAutoPilotStatusListenerManager.INSTANCE.getState() !=
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_FAILURE_CODE, failCode);
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_FAILURE_MSG,
mStartAutopilotParams.put(TaxiUnmannedConst.EVENT_PARAM_START_FAILURE_CODE, failCode);
mStartAutopilotParams.put(TaxiUnmannedConst.EVENT_PARAM_START_FAILURE_MSG,
failMsg);
}
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_RESULT,
mStartAutopilotParams.put(TaxiUnmannedConst.EVENT_PARAM_START_RESULT,
CallerAutoPilotStatusListenerManager.INSTANCE.getState() ==
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING);
MogoAnalyticUtils.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams);
@@ -75,8 +75,8 @@ public class TaxiAnalyticsManager {
}
public void clearStartAutopilotFailureMSG(){
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_FAILURE_CODE, "");
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_FAILURE_MSG, "");
mStartAutopilotParams.put(TaxiUnmannedConst.EVENT_PARAM_START_FAILURE_CODE, "");
mStartAutopilotParams.put(TaxiUnmannedConst.EVENT_PARAM_START_FAILURE_MSG, "");
}
/**
@@ -88,21 +88,21 @@ public class TaxiAnalyticsManager {
public void triggerStartAutopilotEvent(
boolean restart, boolean send, String startName, String endName, long lineId, String orderNo) {
mStartAutopilotKey = restart ?
TaxiConst.EVENT_KEY_RESTART_AUTOPILOT : TaxiConst.EVENT_KEY_START_SERVICE;
TaxiUnmannedConst.EVENT_KEY_RESTART_AUTOPILOT : TaxiUnmannedConst.EVENT_KEY_START_SERVICE;
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
String plateNum = AppConfigInfo.INSTANCE.getPlateNumber();
String dateTime = DateTimeUtils.getTimeText(
System.currentTimeMillis(), DateTimeUtils.yyyy_MM_dd_HH_mm_ss);
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_SN, sn);
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_PLATE_NUM, TextUtils.isEmpty(plateNum) ? "" : plateNum);
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_ENV_ONLINE,
mStartAutopilotParams.put(TaxiUnmannedConst.EVENT_PARAM_SN, sn);
mStartAutopilotParams.put(TaxiUnmannedConst.EVENT_PARAM_PLATE_NUM, TextUtils.isEmpty(plateNum) ? "" : plateNum);
mStartAutopilotParams.put(TaxiUnmannedConst.EVENT_PARAM_ENV_ONLINE,
DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE ? true : false);
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_TIME, dateTime);
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_NAME, startName);
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_END_NAME, endName);
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_LINE_ID, lineId);
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_ORDER_NUMBER, orderNo);
mStartAutopilotParams.put(TaxiUnmannedConst.EVENT_PARAM_TIME, dateTime);
mStartAutopilotParams.put(TaxiUnmannedConst.EVENT_PARAM_START_NAME, startName);
mStartAutopilotParams.put(TaxiUnmannedConst.EVENT_PARAM_END_NAME, endName);
mStartAutopilotParams.put(TaxiUnmannedConst.EVENT_PARAM_LINE_ID, lineId);
mStartAutopilotParams.put(TaxiUnmannedConst.EVENT_PARAM_ORDER_NUMBER, orderNo);
// CallerLogger.INSTANCE.d(M_TAXI + "埋点==","restart = "+restart+", send= "+send);
@@ -111,12 +111,12 @@ public class TaxiAnalyticsManager {
// 开启成功,上报埋点
clearStartAutopilotFailureMSG();
removeWaitingCallback();
mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_RESULT, true);
mStartAutopilotParams.put(TaxiUnmannedConst.EVENT_PARAM_START_RESULT, true);
MogoAnalyticUtils.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams);
clearStartAutopilotParams();//清空参数数据,防止误传
} else {
UiThreadHandler.postDelayed(startAutopilotRunnable, TaxiConst.LOOP_PERIOD_15S);
UiThreadHandler.postDelayed(startAutopilotRunnable, TaxiUnmannedConst.LOOP_PERIOD_15S);
}
}
@@ -135,15 +135,15 @@ public class TaxiAnalyticsManager {
HashMap<String, Object> params = new HashMap<>();
params.put(TaxiConst.EVENT_PARAM_SN, sn);
params.put(TaxiConst.EVENT_PARAM_PLATE_NUM, TextUtils.isEmpty(plateNum) ? "" : plateNum);
params.put(TaxiConst.EVENT_PARAM_ENV_ONLINE,
params.put(TaxiUnmannedConst.EVENT_PARAM_SN, sn);
params.put(TaxiUnmannedConst.EVENT_PARAM_PLATE_NUM, TextUtils.isEmpty(plateNum) ? "" : plateNum);
params.put(TaxiUnmannedConst.EVENT_PARAM_ENV_ONLINE,
DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE ? true : false);
params.put(TaxiConst.EVENT_PARAM_TIME, dateTime);
params.put(TaxiConst.EVENT_PARAM_START_NAME, startName);
params.put(TaxiConst.EVENT_PARAM_END_NAME, endName);
params.put(TaxiConst.EVENT_PARAM_ORDER_NUMBER, orderNo);
params.put(TaxiConst.EVENT_PARAM_UNABLE_START_REASON, reason);
MogoAnalyticUtils.INSTANCE.track(TaxiConst.EVENT_KEY_AP_UNABLE_START_REASON, params);
params.put(TaxiUnmannedConst.EVENT_PARAM_TIME, dateTime);
params.put(TaxiUnmannedConst.EVENT_PARAM_START_NAME, startName);
params.put(TaxiUnmannedConst.EVENT_PARAM_END_NAME, endName);
params.put(TaxiUnmannedConst.EVENT_PARAM_ORDER_NUMBER, orderNo);
params.put(TaxiUnmannedConst.EVENT_PARAM_UNABLE_START_REASON, reason);
MogoAnalyticUtils.INSTANCE.track(TaxiUnmannedConst.EVENT_KEY_AP_UNABLE_START_REASON, params);
}
}

View File

@@ -7,10 +7,9 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.GsonUtils;
import com.mogo.och.taxi.bean.OrderQueryRespBean;
import com.mogo.och.taxi.constant.TaxiConst;
import com.mogo.och.taxi.constant.TaxiUnmannedConst;
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
import com.mogo.och.taxi.model.TaxiModel;
import com.mogo.och.taxi.model.TaxiUnmannedViewModel;
import java.util.concurrent.TimeUnit;
@@ -34,7 +33,7 @@ public class TaxiTrajectoryManager {
}
public static TaxiTrajectoryManager getInstance() {
return TaxiTrajectoryManager.SingletonHolder.INSTANCE;
return SingletonHolder.INSTANCE;
}
private AutopilotControlParameters.AutoPilotLine mAutoPilotLine = null;
@@ -151,13 +150,13 @@ public class TaxiTrajectoryManager {
}
CallerLogger.INSTANCE.d(M_TAXI + TAG, "startTrajReqLoop()");
setupAutoPilotLine();
mSendReqDisposable = Observable.interval(TaxiConst.LOOP_DELAY,
TaxiConst.LOOP_PERIOD_10S, TimeUnit.MILLISECONDS)
mSendReqDisposable = Observable.interval(TaxiUnmannedConst.LOOP_DELAY,
TaxiUnmannedConst.LOOP_PERIOD_10S, TimeUnit.MILLISECONDS)
.map((aLong -> aLong + 1))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(aLong -> {
if (aLong > TaxiConst.LOOP_SEND_TRAJ_TIMES) {
if (aLong > TaxiUnmannedConst.LOOP_SEND_TRAJ_TIMES) {
mPrevOrderNo = ""; //重发超时后将mPrevOrderNo置空这样订单进入下个状态时还可以重发
stopTrajReqLoop();
return;