diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/base/BaseViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/base/BaseViewModel.kt index db4c7dc6f8..043c1c71bb 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/base/BaseViewModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/base/BaseViewModel.kt @@ -6,7 +6,6 @@ import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.receiveAsFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch @@ -20,21 +19,9 @@ abstract class BaseViewModel : ViewMod private val _uiStateFlow = MutableStateFlow(initUiState()) val uiStateFlow: StateFlow = _uiStateFlow - protected abstract fun initUiState(): UiState - - protected fun sendUiState(copy: UiState.() -> UiState){ - _uiStateFlow.update { copy(_uiStateFlow.value) } - } - private val _uiIntentFlow: Channel = Channel() val uiIntentFlow: Flow = _uiIntentFlow.receiveAsFlow() - fun sendUiIntent(uiIntent: UiIntent){ - viewModelScope.launch { - _uiIntentFlow.send(uiIntent) - } - } - init { viewModelScope.launch { uiIntentFlow.collect { @@ -43,5 +30,17 @@ abstract class BaseViewModel : ViewMod } } + protected abstract fun initUiState(): UiState + + protected fun sendUiState(copy: UiState.() -> UiState) { + _uiStateFlow.update { copy(_uiStateFlow.value) } + } + + fun sendUiIntent(uiIntent: UiIntent) { + viewModelScope.launch { + _uiIntentFlow.send(uiIntent) + } + } + protected abstract fun handleIntent(intent: IUiIntent) } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/base/MviInterface.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/base/MviInterface.kt index 0ef921eb03..c79c9d3fc8 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/base/MviInterface.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/base/MviInterface.kt @@ -1,4 +1,5 @@ package com.mogo.och.taxi.base + import androidx.annotation.Keep /** diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiCarServiceCallback.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiCarServiceCallback.kt new file mode 100644 index 0000000000..712dfc3ebc --- /dev/null +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiCarServiceCallback.kt @@ -0,0 +1,21 @@ +package com.mogo.och.taxi.callback + +import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean +import com.mogo.och.taxi.bean.StartServiceRespBean + +interface ITaxiCarServiceCallback { + fun onCarEndServiceSuccess( + driveToNearestStationTask: StartServiceRespBean.Result?, + currentTaskWithOrder: QueryCurrentTaskRespBean.Result? + ) + + fun onCarEndServiceFailed(code: Int, msg: String) + fun onCarEndServiceError() + fun onCarStartServiceSuccess( + driveToNearestStationTask: StartServiceRespBean.Result?, + currentTaskWithOrder: QueryCurrentTaskRespBean.Result? + ) + + fun onCarStartServiceFailed(code: Int, msg: String) + fun onCarStartServiceError() +} \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskCallback.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt similarity index 89% rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskCallback.kt rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt index ea36b2d54c..14fcfcb8dc 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskCallback.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt @@ -3,7 +3,7 @@ package com.mogo.och.taxi.callback import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean import com.mogo.och.taxi.bean.TrajectoryListRespBean -interface ITaxiTaskCallback { +interface ITaxiTaskWithOrderCallback { fun onTaskWithOrderDataChanged(taskWithOrder: QueryCurrentTaskRespBean.Result?) fun onTaskCompleted(isOrderArrivedAtStart: Boolean, siteId: Long) fun onTaskTrajectoryDataChanged(data: TrajectoryListRespBean?) @@ -11,4 +11,5 @@ interface ITaxiTaskCallback { fun onOrderArriveAtEnd(orderNo: String) fun onOrderTotalMileAndDurationChanged(mileage: Float, duration: Int) fun onOrderJourneyCompleted() + fun onStartAutopilot() } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/LoginBusImpl.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiDriverLoginImpl.kt similarity index 75% rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/LoginBusImpl.kt rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiDriverLoginImpl.kt index c57492cd1e..305a5cfd41 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/LoginBusImpl.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiDriverLoginImpl.kt @@ -9,13 +9,13 @@ import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean import com.mogo.och.common.module.biz.network.LoginDefaultManage import com.mogo.och.common.module.biz.network.OchCommonServiceCallback -class LoginBusImpl: LoginDefaultManage { +class TaxiDriverLoginImpl : LoginDefaultManage { override fun getPhoneCode( context: Context, phone: String?, callback: OchCommonServiceCallback? ) { - OchCommonServiceManager.getPhoneCode(context,phone,callback) + TaxiDriverLoginServiceManager.getPhoneCode(context, phone, callback) } override fun gotoLoginBycode( @@ -25,7 +25,7 @@ class LoginBusImpl: LoginDefaultManage { location4Login: TaxiLoginReqBean.Location4Login?, callback: OchCommonServiceCallback? ) { - OchCommonServiceManager.gotoLoginBycode(context,phone,code,location4Login,callback) + TaxiDriverLoginServiceManager.gotoLoginBycode(context, phone, code, location4Login, callback) } override fun logout( @@ -33,15 +33,13 @@ class LoginBusImpl: LoginDefaultManage { location4Login: TaxiLogoutReqBean.Location4Login?, callback: OchCommonServiceCallback? ) { - OchCommonServiceManager.logout(context,location4Login,callback) + TaxiDriverLoginServiceManager.logout(context, location4Login, callback) } override fun queryDriverServiceStatus( context: Context, callback: OchCommonServiceCallback? ) { - OchCommonServiceManager.queryDriverServiceStatus(context,callback) + TaxiDriverLoginServiceManager.queryDriverServiceStatus(context, callback) } - - } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/OchLoginServiceApi.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiDriverLoginServiceApi.java similarity index 73% rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/OchLoginServiceApi.java rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiDriverLoginServiceApi.java index 14cc0a6e89..dd841840bf 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/OchLoginServiceApi.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiDriverLoginServiceApi.java @@ -1,10 +1,9 @@ package com.mogo.och.taxi.network; + import com.mogo.eagle.core.data.BaseData; import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean; -import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean; import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean; import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean; -import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean; import com.mogo.och.taxi.bean.UnmannedLoginReqBean; import com.mogo.och.taxi.bean.UnmannedLogoutReqBean; @@ -18,28 +17,30 @@ import retrofit2.http.Query; /** * Created by pangfan on 2021/8/19 - * + *

* 网约车-出租车接口定义 */ -interface OchLoginServiceApi { +interface TaxiDriverLoginServiceApi { /** * 获取手机验证码 * * @return */ - @Headers( {"Content-type:application/json;charset=UTF-8"} ) - @POST( "/och-taxi-cabin/api/sms/v1/sendSms" ) + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST("/och-taxi-cabin/api/sms/v1/sendSms") Observable getPhoneCode(@Header("appId") String appId , @Header("ticket") String ticket, @Body TaxiLoginSmsReqBean data); + /** * 通过验证码登录 + * * @param appId * @param ticket * @param data * @return */ - @Headers( {"Content-type:application/json;charset=UTF-8"} ) - @POST( "/och-taxi-cabin/api/flow/v1/startOperation" ) + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST("/och-taxi-cabin/api/flow/v1/startOperation") Observable gotoLoginBycode4Taxi(@Header("appId") String appId , @Header("ticket") String ticket, @Body UnmannedLoginReqBean data); @@ -49,16 +50,17 @@ interface OchLoginServiceApi { @Headers({"Content-type:application/json;charset=UTF-8"}) @POST("/och-taxi-cabin/api/flow/v1/endOperation") Observable logout4Taxi(@Header("appId") String appId, @Header("ticket") String ticket, - @Body UnmannedLogoutReqBean data); + @Body UnmannedLogoutReqBean data); /** * 接单状态和登录状态查询 出租车司机端、小巴车司机端、小巴车乘客端 + * * @param sn * @return */ - @Headers( {"Content-type:application/json;charset=UTF-8"} ) - @GET( "/och-taxi-cabin/api/business/v1/loginStatus") - Observable queryDriverServiceStatusAndLoginStatus(@Header ("appId") String appId + @Headers({"Content-type:application/json;charset=UTF-8"}) + @GET("/och-taxi-cabin/api/business/v1/loginStatus") + Observable queryDriverServiceStatusAndLoginStatus(@Header("appId") String appId , @Header("ticket") String ticket, @Query("sn") String sn); } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/OchCommonServiceManager.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiDriverLoginServiceManager.kt similarity index 96% rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/OchCommonServiceManager.kt rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiDriverLoginServiceManager.kt index 6dc3f41321..728c44e314 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/OchCommonServiceManager.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiDriverLoginServiceManager.kt @@ -24,13 +24,13 @@ import com.mogo.och.taxi.bean.UnmannedLogoutReqBean /** * Created by pangfan on 2021/8/19 */ -object OchCommonServiceManager { +object TaxiDriverLoginServiceManager { private const val TAG = "OchCommonServiceManager" - private val mOCHTaxiServiceApi: OchLoginServiceApi = + private val mOCHTaxiServiceApi: TaxiDriverLoginServiceApi = MoGoRetrofitFactory.getInstance(getBaseUrl()).create( - OchLoginServiceApi::class.java + TaxiDriverLoginServiceApi::class.java ) /** diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/UnmannedTaskServiceApi.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiTaskWithOrderServiceApi.kt similarity index 99% rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/UnmannedTaskServiceApi.kt rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiTaskWithOrderServiceApi.kt index 542e734cff..7bbfce05b0 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/UnmannedTaskServiceApi.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiTaskWithOrderServiceApi.kt @@ -27,7 +27,7 @@ import retrofit2.http.Query * @author: wangmingjun * @date: 2023/7/26 */ -interface UnmannedTaskServiceApi { +interface TaxiTaskWithOrderServiceApi { /** * 开始接单 diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiTaskWithOrderServiceManager.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiTaskWithOrderServiceManager.kt index c5a4d65552..ddc81e46be 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiTaskWithOrderServiceManager.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiTaskWithOrderServiceManager.kt @@ -27,9 +27,9 @@ import com.mogo.och.taxi.bean.TrajectoryListRespBean */ object TaxiTaskWithOrderServiceManager { - private var mOCHTaxiServiceApi: UnmannedTaskServiceApi = + private var mOCHTaxiServiceApi: TaxiTaskWithOrderServiceApi = MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create( - UnmannedTaskServiceApi::class.java + TaxiTaskWithOrderServiceApi::class.java ) /** diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt index d23252ae4e..53e881b4d3 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt @@ -12,11 +12,13 @@ import com.mogo.eagle.core.data.temp.EventLogout 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.util.ToastUtils import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.provider.LoginService import com.mogo.och.taxi.R import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean -import com.mogo.och.taxi.network.LoginBusImpl +import com.mogo.och.taxi.constant.TaxiOrderStatusEnum +import com.mogo.och.taxi.network.TaxiDriverLoginImpl import com.mogo.och.taxi.ui.personal.TaxiPersonalDialogFragment import com.mogo.och.taxi.ui.task.TaxiTaskModel import com.mogo.och.taxi.ui.task.TaxiTaskTabFragment @@ -85,7 +87,7 @@ class TaxiFragment : BaseTaxiTabFragment(), loginService = ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation() as LoginService if (loginService != null) { - loginService!!.registerFragment(this, presenter, LoginBusImpl()) + loginService!!.registerFragment(this, presenter, TaxiDriverLoginImpl()) } } @@ -230,7 +232,19 @@ class TaxiFragment : BaseTaxiTabFragment(), } findViewById(R.id.test_bar_start_service_confirm)?.setOnClickListener { - TaxiTaskModel.toStartTask() + if (!TaxiTaskModel.checkCurrentTaskCondition()) { + ToastUtils.showShort("无任务!") + return@setOnClickListener + } + //当前订单状态若为20 , 则使用的lineId为订单信息的 + TaxiTaskModel.getCurTaskAndOrder()?.let { + TaxiTaskModel.startTask( + if (it.order != null && it.order!!.orderStatus >= TaxiOrderStatusEnum.ArriveAtStart.code) + it.order!!.orderLine + else + it.lineId + ) + } } findViewById(R.id.test_bar_on_the_way_to_end)?.setOnClickListener { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java index 388eb365dc..6477a91d16 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java @@ -37,7 +37,7 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS public TaxiPresenter(TaxiFragment view) { super(view); - TaxiTaskModel.INSTANCE.init(AbsMogoApplication.getApp()); + TaxiTaskModel.INSTANCE.init(); OCHAdasAbilityManager.getInstance().init(AbsMogoApplication.getApp()); initListeners(); } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/RoutingNaviPresenter.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/RoutingNaviPresenter.java index 69160ee3b2..6a5c1f0adc 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/RoutingNaviPresenter.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/RoutingNaviPresenter.java @@ -21,7 +21,7 @@ import java.util.List; /** * @author congtaowang * @since 2021/1/18 - * + *

* 描述 */ public class RoutingNaviPresenter extends Presenter implements IOCHTaxiAutopilotPlanningCallback { @@ -30,31 +30,31 @@ public class RoutingNaviPresenter extends Presenter imp public RoutingNaviPresenter(TaxiRoutingNaviFragment view) { super(view); - TaxiTaskModel.INSTANCE.init(AbsMogoApplication.getApp()); + TaxiTaskModel.INSTANCE.init(); initListeners(); } @Override - public void onCreate( @NonNull LifecycleOwner owner ) { - super.onCreate( owner ); - CallerLogger.d( M_TAXI + TAG, " onCreate" ); + public void onCreate(@NonNull LifecycleOwner owner) { + super.onCreate(owner); + CallerLogger.d(M_TAXI + TAG, " onCreate"); } @Override - public void onDestroy( @NonNull LifecycleOwner owner ) { - super.onDestroy( owner ); + public void onDestroy(@NonNull LifecycleOwner owner) { + super.onDestroy(owner); } private void initListeners() { TaxiTaskModel.INSTANCE.setMoGoAutopilotPlanningListener(this); } - private void runOnUIThread( Runnable executor ) { - if ( executor == null ) { + private void runOnUIThread(Runnable executor) { + if (executor == null) { return; } - if ( Looper.myLooper() != Looper.getMainLooper() ) { - UiThreadHandler.post( executor ); + if (Looper.myLooper() != Looper.getMainLooper()) { + UiThreadHandler.post(executor); } else { executor.run(); } @@ -62,11 +62,11 @@ public class RoutingNaviPresenter extends Presenter imp @Override public void setLineMarker(LatLng startStation, LatLng endStation) { - runOnUIThread(() -> mView.setLineMarker(startStation,endStation)); + runOnUIThread(() -> mView.setLineMarker(startStation, endStation)); } @Override public void routeResult(List routeArrivied, List routeArriving, MogoLocation location) { - mView.routeResult(routeArrivied,routeArriving,location); + mView.routeResult(routeArrivied, routeArriving, location); } } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt index d4f2109e7e..eb298e0e56 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt @@ -148,7 +148,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), } private fun initViewModelObserver() { - mViewModel.sendUiIntent(UnmannedIntent.StartTaskOrOrderLooper) + mViewModel.sendUiIntent(UnmannedIntent.StartTaskWithOrderLooper) //监听返回的数据状态 lifecycleScope.launchWhenStarted { @@ -244,7 +244,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), } fun onCarTakeOrderStatusChanged() { - mViewModel.sendUiIntent(UnmannedIntent.StartOrPauseTakeOrder) + mViewModel.sendUiIntent(UnmannedIntent.StartOrEndTakeOrder) } private fun updateRemainDistanceAndTime(isVoicePlay: Boolean) { @@ -558,7 +558,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), if (mCurrentTaskWithOrder == null || mCurrentTaskWithOrder!!.order == null) return val order = mCurrentTaskWithOrder!!.order if (TaxiOrderStatusEnum.ArriveAtStart.code == order!!.orderStatus) { //到达乘客上车点,司机可跳过乘客屏认证 - mViewModel.sendUiIntent(UnmannedIntent.JumpPassengerCheckDone) + mViewModel.sendUiIntent(UnmannedIntent.JumpPassengerCheck) } else if (TaxiOrderStatusEnum.UserArriveAtStart.code == order.orderStatus) { mViewModel.sendUiIntent(UnmannedIntent.StartTask) } else if (TaxiOrderStatusEnum.ArriveAtEnd.code == order.orderStatus) { //点击了完成服务,结束订单并更新订单信息 diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt index ccb58525a6..bf11fea391 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt @@ -1,6 +1,5 @@ package com.mogo.och.taxi.ui.task -import android.content.Context import com.mogo.commons.AbsMogoApplication import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager @@ -9,7 +8,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.mogo.och.common.module.biz.constant.LoginStatusManager.isLogin +import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.utils.ToastUtilsOch import com.mogo.och.common.module.voice.VoiceNotice @@ -19,9 +18,11 @@ import com.mogo.och.taxi.base.IUiIntent import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean import com.mogo.och.taxi.bean.StartServiceRespBean import com.mogo.och.taxi.bean.TrajectoryListRespBean -import com.mogo.och.taxi.callback.ITaxiTaskCallback +import com.mogo.och.taxi.callback.ITaxiCarServiceCallback +import com.mogo.och.taxi.callback.ITaxiTaskWithOrderCallback import com.mogo.och.taxi.constant.TaskStatusEnum -import com.mogo.och.taxi.constant.TaxiCarServingStatusManager.isCarServingStatus +import com.mogo.och.taxi.constant.TaxiOrderStatusEnum +import com.mogo.och.taxi.constant.TaxiUnmannedConst import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager.cancelOrder import com.mogo.och.taxi.ui.unmanned.TaskWithOrderUIState @@ -33,15 +34,14 @@ import com.mogo.och.taxi.utils.TaxiTrajectoryManager * @author: wangmingjun * @date: 2023/7/26 */ -class TaxiCurrentTaskViewModel : BaseViewModel(), ITaxiTaskCallback { +class TaxiCurrentTaskViewModel : BaseViewModel(), + ITaxiTaskWithOrderCallback, ITaxiCarServiceCallback { - private var mCurrentTaskAndOrder: QueryCurrentTaskRespBean.Result? = null private val TAG = SceneConstant.M_TAXI + "TaxiUnmannedViewModel" - private var mContext: Context = AbsMogoApplication.getApp().applicationContext - init { - TaxiTaskModel.setTaskCallback(this) + TaxiTaskModel.setTaskWithOrderCallback(this) + TaxiTaskModel.setCarServiceCallback(this) } override fun initUiState(): UnmannedState { @@ -50,16 +50,16 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), override fun handleIntent(intent: IUiIntent) { when (intent) { - is UnmannedIntent.StartTaskOrOrderLooper -> { //开始轮询 + is UnmannedIntent.StartTaskWithOrderLooper -> { //开始轮询 startOrStopCurrentTaskWithOrderLoop(true) } - is UnmannedIntent.StartOrPauseTakeOrder -> {//开始、暂停接单 - updateCarServingStatus() + is UnmannedIntent.StartOrEndTakeOrder -> {//开始、暂停接单 + TaxiTaskModel.updateCarServingStatus() } - is UnmannedIntent.JumpPassengerCheckDone -> { //手动点击跳过乘客验证 - jumpPassengerCheckDone() + is UnmannedIntent.JumpPassengerCheck -> { //手动点击跳过乘客验证 + jumpPassengerCheck() } is UnmannedIntent.JourneyCompleted -> { //点击服务完成 @@ -67,161 +67,113 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } is UnmannedIntent.CloseOrderByDriver -> { - if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null) { - val site = mCurrentTaskAndOrder!!.order!!.orderEndSite - TaxiTaskModel.submitArriveSite(site!!.siteId, true) - } + closeOrderByDriver() } is UnmannedIntent.CancelOrder -> {// 取消订单, 暂未加取消类型和原因 - handleCancelOrder(intent.type) + cancelOrder(intent.type) } is UnmannedIntent.StartTask -> { - TaxiTaskModel.toStartTask() + startTask() } } } - private fun handleCancelOrder(cancelType: Int) { - if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null) { - cancelOrder(mContext, - mCurrentTaskAndOrder!!.order!!.orderNo, + fun startOrStopCurrentTaskWithOrderLoop(start: Boolean) { + d(TAG, "startOrStopCurrentTaskWithOrderLoop(): isStart=$start") + if (start) { + TaxiTaskModel.startQueryCurrentTaskWithOrderLoop() + } else { + TaxiTaskModel.stopQueryCurrentTaskWithOrderLoop() + } + } + + private fun cancelOrder(cancelType: Int) { + val currentTaskWithOrder = TaxiTaskModel.getCurTaskAndOrder() + currentTaskWithOrder?.order?.also { + cancelOrder(AbsMogoApplication.getApp().applicationContext, + it.orderNo, cancelType, object : OchCommonServiceCallback { override fun onSuccess(data: BaseData?) { - d(SceneConstant.M_TAXI + TAG, "handleCancelOrder() = onSuccess") + d(TAG, "handleCancelOrder() = onSuccess") } override fun onFail(code: Int, msg: String?) { - d(SceneConstant.M_TAXI + TAG, "handleCancelOrder() $code $msg") + d(TAG, "handleCancelOrder() $code $msg") } }) } } - /** - * 更新接单状态 - */ - private fun updateCarServingStatus() { - if (!isLogin()) { - TaxiTaskModel.loginService!!.queryLoginStatusByNet() - return - } - if (isCarServingStatus()) {//接单状态下,去结束 - TaxiTaskWithOrderServiceManager.endService( - mContext, + private fun jumpPassengerCheck() { + val currentTaskWithOrder = TaxiTaskModel.getCurTaskAndOrder() + currentTaskWithOrder?.order?.also { + TaxiTaskWithOrderServiceManager.jumpPassengerCheck(AbsMogoApplication.getApp().applicationContext, + it.orderNo, object : OchCommonServiceCallback { override fun onSuccess(data: BaseData?) { - TaxiTaskModel.loginService!!.queryLoginStatusByNet() - //需要将虚拟任务停掉, 虚拟任务会再开始接单后获取新的 - d(TAG, "set mUntruthSiteTask null") - updateDriveToNearestStationTaskUI(null) - TaxiTaskModel.updateUntruthTask(null) - - if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.endSite != null && mCurrentTaskAndOrder!!.startSite != null && mCurrentTaskAndOrder!!.currentStatus < TaskStatusEnum.CompleteTask.code) { - VoiceNotice.showNotice("暂停接单啦!要完成当前订单哦") - } else { - VoiceNotice.showNotice("暂停接单啦") - } - } - - override fun onError() { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort(mContext.getString(R.string.network_error_tip)) - } else { - ToastUtils.showShort(mContext.getString(R.string.request_error_tip)) - } - } - - override fun onFail(code: Int, msg: String) { - ToastUtilsOch.showWithCodeMessage(code, msg) - } - }) - } else {//暂停接单状态下,去接单 - TaxiTaskWithOrderServiceManager.startService(mContext, - CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().latitude, - CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().longitude, - object : OchCommonServiceCallback { - override fun onSuccess(data: StartServiceRespBean?) { - if (data == null || data.code != 0) return - TaxiTaskModel.loginService!!.queryLoginStatusByNet() - VoiceNotice.showNotice("开始接单啦") - d(TAG, "data.data=" + GsonUtil.jsonFromObject(data.data)) - if (mCurrentTaskAndOrder == null) return - if (mCurrentTaskAndOrder!!.endSite != null) { - if (mCurrentTaskAndOrder!!.currentStatus == TaskStatusEnum.CompleteTask.code && mCurrentTaskAndOrder!!.order != null) { //有任务, 状态为3, 且有订单 - return - } else if (mCurrentTaskAndOrder!!.currentStatus < TaskStatusEnum.CompleteTask.code) { - //有任务, 并且未执行完成 - return - } - } - updateDriveToNearestStationTaskUI(data.data) - TaxiTaskModel.updateUntruthTask(data.data) + d(TAG, "jumpPassengerCheck onSuccess:") } override fun onFail(code: Int, msg: String?) { - ToastUtilsOch.showWithCodeMessage( - code, - "$msg curLatitude = ${CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().latitude}" + " curLongitude = ${CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().longitude}" - ) - } - - override fun onError() { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort(mContext.getString(R.string.network_error_tip)) - } else { - ToastUtils.showShort(mContext.getString(R.string.request_error_tip)) - } + d(TAG, "jumpPassengerCheck onFail: code=$code, msg=$msg") } }) } } private fun journeyCompleted() { - if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null) { + val currentTaskWithOrder = TaxiTaskModel.getCurTaskAndOrder() + currentTaskWithOrder?.order?.also { TaxiTaskWithOrderServiceManager.orderCompleted(AbsMogoApplication.getApp().applicationContext, - mCurrentTaskAndOrder!!.order!!.orderNo, + it.orderNo, object : OchCommonServiceCallback { override fun onSuccess(data: BaseData?) { - d(SceneConstant.M_TAXI + TAG, "orderCompleted() = onSuccess") + d(TAG, "journeyCompleted onSuccess") } override fun onFail(code: Int, msg: String?) { - d(SceneConstant.M_TAXI + TAG, "orderCompleted() $code $msg") + d(TAG, "journeyCompleted onFail: code=$code, msg=$msg") } }) } } - private fun jumpPassengerCheckDone() { - if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null) { - TaxiTaskWithOrderServiceManager.jumpPassengerCheck(AbsMogoApplication.getApp().applicationContext, - mCurrentTaskAndOrder!!.order!!.orderNo, - object : OchCommonServiceCallback { - override fun onSuccess(data: BaseData?) { - d(SceneConstant.M_TAXI + TAG, "jumpPassengerCheckDone() = onSuccess") - } - - override fun onFail(code: Int, msg: String?) { - d(SceneConstant.M_TAXI + TAG, "jumpPassengerCheckDone() $code $msg") - } - }) + private fun closeOrderByDriver() { + val currentTaskWithOrder = TaxiTaskModel.getCurTaskAndOrder() + currentTaskWithOrder?.order?.orderEndSite?.also { + TaxiTaskModel.submitArriveSite(it.siteId, true) } } - private fun updateTaskAndOrderUi() { + private fun startTask() { + if (!TaxiTaskModel.checkCurrentTaskCondition()) { + ToastUtils.showShort("无任务!") + return + } + //当前订单状态若为20 , 则使用的lineId为订单信息的 + TaxiTaskModel.getCurTaskAndOrder()?.let { + TaxiTaskModel.startTask( + if (it.order != null && it.order!!.orderStatus >= TaxiOrderStatusEnum.ArriveAtStart.code) + it.order!!.orderLine + else + it.lineId + ) + } + } + + private fun updateTaskAndOrderUi(currentTaskWithOrder: QueryCurrentTaskRespBean.Result?) { d( - TAG, - "updateTaskAndOrderUi: mCurrentTaskAndOrder=${ - GsonUtil.getGson().toJson(mCurrentTaskAndOrder) + TAG, "updateTaskAndOrderUi: currentTaskWithOrder=${ + GsonUtil.getGson().toJson(currentTaskWithOrder) }" ) sendUiState { copy( taskWithOrderUIState = TaskWithOrderUIState.TaskWithOrder( - mCurrentTaskAndOrder + currentTaskWithOrder ) ) } @@ -249,20 +201,12 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } } - fun startOrStopCurrentTaskWithOrderLoop(start: Boolean) { - d(TAG, "startOrStopCurrentTaskWithOrderLoop(): isStart=$start") - if (start) { - TaxiTaskModel.startQueryCurrentTaskWithOrderLoop() - } else { - TaxiTaskModel.stopQueryCurrentTaskWithOrderLoop() - } - } override fun onTaskWithOrderDataChanged(result: QueryCurrentTaskRespBean.Result?) { - if (result === null) return d(TAG, "onTaskWithOrderChanged = result = " + GsonUtil.jsonFromObject(result)) - mCurrentTaskAndOrder = result - updateTaskAndOrderUi() + result?.also { + updateTaskAndOrderUi(result) + } } override fun onTaskCompleted(isOrderArrivedAtStart: Boolean, siteId: Long) { @@ -280,8 +224,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), override fun onOrderCancel() { VoiceNotice.showNotice("乘客已经取消") - mCurrentTaskAndOrder = null - updateTaskAndOrderUi() + updateTaskAndOrderUi(null) } override fun onOrderArriveAtEnd(orderNo: String) { @@ -294,11 +237,76 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } override fun onOrderJourneyCompleted() { + updateTaskAndOrderUi(null) //获取新的任务 - if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.endSite != null) { - TaxiTaskModel.startPrepareTask120S(mCurrentTaskAndOrder!!.endSite!!.siteId) + val currentTaskWithOrder = TaxiTaskModel.getCurTaskAndOrder() + currentTaskWithOrder?.endSite?.also { + TaxiTaskModel.startPrepareTask120S(it.siteId) + } + } + + override fun onStartAutopilot() { + UiThreadHandler.postDelayed({ + startTask() //状态流转 + TaxiTaskModel.startAutoPilot() //自驾开启 + VoiceNotice.showNotice("车辆正在自动开启自动驾驶") + }, TaxiUnmannedConst.START_AUTOPILOT_COUNTDOWN_INTERVAL) // 10s后开启自驾, 状态流转 + } + + override fun onCarEndServiceSuccess( + driveToNearestStationTask: StartServiceRespBean.Result?, + currentTaskWithOrder: QueryCurrentTaskRespBean.Result? + ) { + if (currentTaskWithOrder?.endSite != null && currentTaskWithOrder.startSite != null && currentTaskWithOrder.currentStatus < TaskStatusEnum.CompleteTask.code) { + VoiceNotice.showNotice("暂停接单啦!要完成当前订单哦") + } else { + VoiceNotice.showNotice("暂停接单啦") + } + updateDriveToNearestStationTaskUI(driveToNearestStationTask) + } + + override fun onCarEndServiceFailed(code: Int, msg: String) { + ToastUtilsOch.showWithCodeMessage(code, msg) + } + + override fun onCarEndServiceError() { + val context = AbsMogoApplication.getApp().applicationContext + if (!NetworkUtils.isConnected(context)) { + ToastUtils.showShort(context.getString(R.string.network_error_tip)) + } else { + ToastUtils.showShort(context.getString(R.string.request_error_tip)) + } + } + + override fun onCarStartServiceSuccess( + driveToNearestStationTask: StartServiceRespBean.Result?, + currentTaskWithOrder: QueryCurrentTaskRespBean.Result? + ) { + VoiceNotice.showNotice("开始接单啦") + currentTaskWithOrder?.apply { + if (endSite != null) { + when { + currentStatus == TaskStatusEnum.CompleteTask.code && order != null -> return + currentStatus < TaskStatusEnum.CompleteTask.code -> return + } + } + } + updateDriveToNearestStationTaskUI(driveToNearestStationTask) + } + + override fun onCarStartServiceFailed(code: Int, msg: String) { + ToastUtilsOch.showWithCodeMessage( + code, + "$msg curLatitude = ${CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().latitude}" + " curLongitude = ${CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().longitude}" + ) + } + + override fun onCarStartServiceError() { + val context = AbsMogoApplication.getApp().applicationContext + if (!NetworkUtils.isConnected(context)) { + ToastUtils.showShort(context.getString(R.string.network_error_tip)) + } else { + ToastUtils.showShort(context.getString(R.string.request_error_tip)) } - mCurrentTaskAndOrder = null - updateTaskAndOrderUi() } } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt index 369f8bf980..5284e99a47 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt @@ -1,6 +1,5 @@ package com.mogo.och.taxi.ui.task -import android.annotation.SuppressLint import android.content.Context import android.net.ConnectivityManager import android.text.TextUtils @@ -54,7 +53,6 @@ import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceM 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.coordinateConverterWgsToGcjLocations -import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.taxi.bean.OrderDetail import com.mogo.och.taxi.bean.PrepareTaskRespBean import com.mogo.och.taxi.bean.QueryCarOrderByNoRespBean @@ -63,9 +61,10 @@ import com.mogo.och.taxi.bean.StartServiceRespBean import com.mogo.och.taxi.bean.TrajectoryListRespBean import com.mogo.och.taxi.callback.IOCHTaxiAutopilotPlanningCallback import com.mogo.och.taxi.callback.ITaxiADASStatusCallback +import com.mogo.och.taxi.callback.ITaxiCarServiceCallback import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback -import com.mogo.och.taxi.callback.ITaxiTaskCallback +import com.mogo.och.taxi.callback.ITaxiTaskWithOrderCallback import com.mogo.och.taxi.constant.TaskStatusEnum import com.mogo.och.taxi.constant.TaskTypeEnum import com.mogo.och.taxi.constant.TaxiCarServingStatusManager @@ -73,7 +72,6 @@ import com.mogo.och.taxi.constant.TaxiOrderStatusEnum import com.mogo.och.taxi.constant.TaxiOrderStatusEnum.Companion.valueOf import com.mogo.och.taxi.constant.TaxiUnmannedConst import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.BUSINESSTYPE -import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.START_AUTOPILOT_COUNTDOWN_INTERVAL import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager import com.mogo.och.taxi.utils.RxJavaUtils import com.mogo.och.taxi.utils.TaxiAnalyticsManager @@ -94,12 +92,11 @@ import java.util.concurrent.TimeUnit * @author: wangmingjun * @date: 2023/7/25 */ -@SuppressLint("StaticFieldLeak") object TaxiTaskModel { private val TAG = SceneConstant.M_TAXI + TaxiTaskModel::class.java.simpleName - - private lateinit var mContext: Context + private val mContext: Context + get() = AbsMogoApplication.getApp().applicationContext private var mQueryTaskWithOrderDisposable: Disposable? = null @@ -116,7 +113,9 @@ object TaxiTaskModel { private var mAutopilotPlanningCallback: IOCHTaxiAutopilotPlanningCallback? = null - private var mTaxiTaskCallback: ITaxiTaskCallback? = null + private var mTaxiTaskWithOrderCallback: ITaxiTaskWithOrderCallback? = null + + private var mTaxiCarServiceCallback: ITaxiCarServiceCallback? = null //当前任务和订单 private var mCurrentTaskWithOrder: QueryCurrentTaskRespBean.Result? = null @@ -151,12 +150,15 @@ object TaxiTaskModel { mOrderStatusCallback = callback } - fun setTaskCallback(callback: ITaxiTaskCallback) { - mTaxiTaskCallback = callback + fun setTaskWithOrderCallback(callback: ITaxiTaskWithOrderCallback) { + mTaxiTaskWithOrderCallback = callback } - fun init(context: Context) { - mContext = context.applicationContext + fun setCarServiceCallback(callback: ITaxiCarServiceCallback) { + mTaxiCarServiceCallback = callback + } + + fun init() { loginService = ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation() as LoginService initListeners() @@ -341,7 +343,8 @@ object TaxiTaskModel { } if (checkCurrentTaskCondition() - && mCurrentTaskWithOrder?.currentStatus == TaskStatusEnum.StartTask.code) { + && mCurrentTaskWithOrder?.currentStatus == TaskStatusEnum.StartTask.code + ) { // judgeTaskStartStation(mogoLocation) judgeTaskEndSiteStation(mogoLocation) } @@ -613,7 +616,7 @@ object TaxiTaskModel { //当前任务完成且订单状态到达乘客上车点, 则立马去拉取任务 不再等30s,否则送驾任务要等30s后才能去执行 if (result?.currentStatus == TaskStatusEnum.CompleteTask.code) { - mTaxiTaskCallback?.onTaskCompleted( + mTaxiTaskWithOrderCallback?.onTaskCompleted( QueryCurrentTaskRespBean.isOrderArriveAtStart( result ), @@ -626,7 +629,7 @@ object TaxiTaskModel { //达到终点后查询全程里程和用时 if (QueryCurrentTaskRespBean.isOrderArriveAtEnd(result)) { d(TAG, "queryCurrentTaskOnce ArriveAtEnd") - mTaxiTaskCallback?.onOrderArriveAtEnd(result.order!!.orderNo) + mTaxiTaskWithOrderCallback?.onOrderArriveAtEnd(result.order!!.orderNo) } //根据lineId集合去查轨迹集合, 返回的只是接驾任务的line集合, 没有送驾任务 @@ -644,11 +647,13 @@ object TaxiTaskModel { ) { if (result.order == null || result.order!!.orderStatus < TaxiOrderStatusEnum.ArriveAtStart.code) { d(TAG, "queryCurrentTaskOnce autoStartDriving") - autoStartDriving() + //启动动画+文字 + mControllerStatusCallback?.startOpenAutopilotNonManual() + mTaxiTaskWithOrderCallback?.onStartAutopilot() } } - mTaxiTaskCallback?.onTaskWithOrderDataChanged(mCurrentTaskWithOrder) + mTaxiTaskWithOrderCallback?.onTaskWithOrderDataChanged(mCurrentTaskWithOrder) } } @@ -686,22 +691,22 @@ object TaxiTaskModel { if (data == null) return when (data.data.orderStatus) { TaxiOrderStatusEnum.Cancel.code -> { - mTaxiTaskCallback?.onOrderCancel() //更新本地标志位 mCurrentTaskWithOrder?.order = null + mTaxiTaskWithOrderCallback?.onOrderCancel() } TaxiOrderStatusEnum.ArriveAtEnd.code -> { - mTaxiTaskCallback?.onOrderTotalMileAndDurationChanged( + mTaxiTaskWithOrderCallback?.onOrderTotalMileAndDurationChanged( data.data.mileage, data.data.duration.toInt() ) } TaxiOrderStatusEnum.JourneyCompleted.code -> { - mTaxiTaskCallback?.onOrderJourneyCompleted() //更新本地标志位 mCurrentTaskWithOrder?.order = null + mTaxiTaskWithOrderCallback?.onOrderJourneyCompleted() } } } @@ -766,7 +771,7 @@ object TaxiTaskModel { mTaskTrajectoryList.addAll(it) mCurrentTaskTrajectory = it.first { currentTaskLineId == it.lineId } } - mTaxiTaskCallback?.onTaskTrajectoryDataChanged(data) + mTaxiTaskWithOrderCallback?.onTaskTrajectoryDataChanged(data) } override fun onFail(code: Int, msg: String?) { @@ -775,6 +780,61 @@ object TaxiTaskModel { }) } + fun updateCarServingStatus() { + if (!LoginStatusManager.isLogin()) { + loginService?.queryLoginStatusByNet() + return + } + if (TaxiCarServingStatusManager.isCarServingStatus()) {//接单状态下,去结束 + TaxiTaskWithOrderServiceManager.endService( + mContext, + object : OchCommonServiceCallback { + override fun onSuccess(data: BaseData?) { + loginService?.queryLoginStatusByNet() + //需要将虚拟任务停掉, 虚拟任务会再开始接单后获取新的 + mDriveToNearestStationTask = null + mTaxiCarServiceCallback?.onCarEndServiceSuccess( + mDriveToNearestStationTask, + mCurrentTaskWithOrder + ) + } + + override fun onError() { + mTaxiCarServiceCallback?.onCarEndServiceError() + } + + override fun onFail(code: Int, msg: String) { + mTaxiCarServiceCallback?.onCarEndServiceFailed(code, msg) + } + }) + } else { + //暂停接单状态下,去接单 + TaxiTaskWithOrderServiceManager.startService(mContext, + CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().latitude, + CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().longitude, + object : OchCommonServiceCallback { + override fun onSuccess(data: StartServiceRespBean?) { + if (data == null) return + d(TAG, "data.data=" + GsonUtil.jsonFromObject(data.data)) + loginService?.queryLoginStatusByNet() + mDriveToNearestStationTask = data.data + mTaxiCarServiceCallback?.onCarStartServiceSuccess( + mDriveToNearestStationTask, + mCurrentTaskWithOrder + ) + } + + override fun onFail(code: Int, msg: String) { + mTaxiCarServiceCallback?.onCarStartServiceFailed(code, msg) + } + + override fun onError() { + mTaxiCarServiceCallback?.onCarStartServiceError() + } + }) + } + } + // 获取当前订单状态 fun getCurOrderStatus(): TaxiOrderStatusEnum? { if (mCurrentTaskWithOrder == null) TaxiOrderStatusEnum.None @@ -1058,19 +1118,18 @@ object TaxiTaskModel { } } - private fun startTask(lineId: Long) { + fun startTask(lineId: Long) { TaxiTaskWithOrderServiceManager.startTask( mContext, lineId, object : OchCommonServiceCallback { override fun onSuccess(data: BaseData?) { - d(TAG, GsonUtil.jsonFromObject(data)) + d(TAG, "startTask onSuccess: data=${GsonUtil.jsonFromObject(data)}") } override fun onFail(code: Int, msg: String?) { - d(TAG, "$code $msg") + d(TAG, "startTask onFail: code=$code, msg=$msg") } - }) } @@ -1133,23 +1192,6 @@ object TaxiTaskModel { autopilotArriveAtStation() } - fun toStartTask() { - if (!checkCurrentTaskCondition()) { - ToastUtils.showShort("无任务!") - return - } - - //当前订单状态若为20 , 则使用的lineId为订单信息的 - mCurrentTaskWithOrder?.let { - startTask( - if (it.order != null && it.order!!.orderStatus >= TaxiOrderStatusEnum.ArriveAtStart.code) - it.order!!.orderLine - else - it.lineId - ) - } - } - /** * 测试开启自动驾驶 */ @@ -1160,7 +1202,6 @@ object TaxiTaskModel { startAutoPilot() } - /** * 设置路径规划起终点 */ @@ -1218,17 +1259,4 @@ object TaxiTaskModel { } } } - - fun autoStartDriving() { - //启动动画+文字 - if (mControllerStatusCallback != null) { - mControllerStatusCallback!!.startOpenAutopilotNonManual() - } - - UiThreadHandler.postDelayed({ - toStartTask() //状态流转 - startAutoPilot() //自驾开启 - VoiceNotice.showNotice("车辆正在自动开启自动驾驶") - }, START_AUTOPILOT_COUNTDOWN_INTERVAL) // 10s后开启自驾, 状态流转 - } } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedIntent.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedIntent.kt index b06d4e62b9..7cf1ddd36d 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedIntent.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedIntent.kt @@ -9,9 +9,9 @@ import com.mogo.och.taxi.base.IUiIntent sealed class UnmannedIntent: IUiIntent{ //开始接单 、 暂停接单 - object StartOrPauseTakeOrder : UnmannedIntent() + object StartOrEndTakeOrder : UnmannedIntent() - object StartTaskOrOrderLooper : UnmannedIntent() + object StartTaskWithOrderLooper : UnmannedIntent() //取消订单 class CancelOrder(val type: Int) : UnmannedIntent() @@ -22,7 +22,7 @@ sealed class UnmannedIntent: IUiIntent{ object JourneyCompleted: UnmannedIntent() //跳过乘客验证 - object JumpPassengerCheckDone : UnmannedIntent() + object JumpPassengerCheck : UnmannedIntent() //司机端手动结束订单 object CloseOrderByDriver : UnmannedIntent()