diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/OrderCancelReqBean.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/OrderCancelReqBean.java
deleted file mode 100644
index 23187c3e81..0000000000
--- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/OrderCancelReqBean.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.mogo.och.taxi.bean;
-
-/**
- * Created by pangfan on 2021/8/19
- *
- * 司机取消订单请求的数据结构
- */
-public class OrderCancelReqBean {
- public String sn;
- public String orderNo; //订单号(必须)
- public int cancelType; //取消类型(必须)
- public String cancelReason; //取消原因(必须)
-
- public OrderCancelReqBean(String sn, String orderNo, int cancelType, String cancelReason) {
- this.sn = sn;
- this.orderNo = orderNo;
- this.cancelType = cancelType;
- this.cancelReason = cancelReason;
- }
-}
diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/OrderQueryRouteInfoRespBean.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/OrderQueryRouteInfoRespBean.java
deleted file mode 100644
index 02cc314c59..0000000000
--- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/OrderQueryRouteInfoRespBean.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.mogo.och.taxi.bean;
-
-import com.mogo.eagle.core.data.BaseData;
-
-/**
- * Created on 2021/9/7
- *
- * 查询订单路径信息(起始点里程、预估时间等)返回数据结构
- */
-public class OrderQueryRouteInfoRespBean extends BaseData {
- public Result data;
-
- public static class Result {
- // 到上车点
- public long durationToStart; //司机绑定时的位置距离上车点时长,单位:秒
- public long distanceToStart; //司机绑定时的位置距离上车点距离,单位:米
-
- // 起点至终点
- public long durationToEnd; //订单上车点到目的地的时长,单位:秒
- public long distanceToEnd; //订单上车点到目的地的距离,单位:米
- }
-}
diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/UnmannedCarStatusBean.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverCarServiceBean.kt
similarity index 100%
rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/UnmannedCarStatusBean.kt
rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverCarServiceBean.kt
diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverTaskWithOrderBean.kt
similarity index 94%
rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt
rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverTaskWithOrderBean.kt
index 0673676bb9..e18de9420a 100644
--- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt
+++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverTaskWithOrderBean.kt
@@ -1,6 +1,7 @@
package com.mogo.och.taxi.bean
import com.mogo.eagle.core.data.BaseData
+import com.mogo.och.taxi.constant.TaskStatusEnum
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
/**
@@ -140,6 +141,16 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() {
}
return data.order!!.orderStatus == TaxiOrderStatusEnum.ArriveAtStart.code
}
+
+ /**
+ * with task.currentStatus == StartTask
+ */
+ fun isStartTaskType(data: QueryCurrentTaskRespBean.Result?): Boolean {
+ if (data == null) {
+ return false
+ }
+ return data.currentStatus == TaskStatusEnum.StartTask.code
+ }
}
}
diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiControllerStatusCallback.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiControllerStatusCallback.java
index 63d40bb47e..63ae42d3db 100644
--- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiControllerStatusCallback.java
+++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiControllerStatusCallback.java
@@ -4,14 +4,16 @@ 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 ITaxiControllerStatusCallback {
// 是否vr map模式
void onVRModeChanged(boolean isVRMode);
+
// 自车定位
void onCarLocationChanged(MogoLocation location);
+
//开始开启自动驾驶
void startOpenAutopilot();
diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/constant/TaxiUnmannedConst.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/constant/TaxiUnmannedConst.kt
index 4d463a580c..142f4d77a3 100644
--- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/constant/TaxiUnmannedConst.kt
+++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/constant/TaxiUnmannedConst.kt
@@ -12,7 +12,7 @@ class TaxiUnmannedConst {
// 到达起始点围栏
const val ARRIVE_AT_START_STATION_DISTANCE = 15 //围栏由20m改为50m 再次改为15m
- const val BUSINESSTYPE = 15 //9 taxi , 10 bus
+ const val BUSINESSTYPE = 9 //9 taxi , 10 bus
// 上报心跳轮询ms
const val LOOP_PERIOD_60S = 60 * 1000L
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 53e881b4d3..d64baf8b5e 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
@@ -224,11 +224,11 @@ class TaxiFragment : BaseTaxiTabFragment(),
*/
private fun initOrderDebugView() {
findViewById(R.id.test_bar_to_virtual)?.setOnClickListener {
- TaxiTaskModel.setArriveAtUntruthStation()
+ TaxiTaskModel.mockArriveAtNearestStation()
}
findViewById(R.id.test_bar_to_end)?.setOnClickListener {
- TaxiTaskModel.setArriveAtEndStation()
+ TaxiTaskModel.mockArriveAtEndStation()
}
findViewById(R.id.test_bar_start_service_confirm)?.setOnClickListener {
@@ -237,7 +237,7 @@ class TaxiFragment : BaseTaxiTabFragment(),
return@setOnClickListener
}
//当前订单状态若为20 , 则使用的lineId为订单信息的
- TaxiTaskModel.getCurTaskAndOrder()?.let {
+ TaxiTaskModel.getCurrentTaskWithOrder()?.let {
TaxiTaskModel.startTask(
if (it.order != null && it.order!!.orderStatus >= TaxiOrderStatusEnum.ArriveAtStart.code)
it.order!!.orderLine
@@ -251,7 +251,7 @@ class TaxiFragment : BaseTaxiTabFragment(),
if (!isStarting) {
mPresenter.startAutoPilot()
}
- TaxiTaskModel.setOnTheWayToEndStation()
+ TaxiTaskModel.mockOnTheWayToEndStation()
}
findViewById(R.id.test_bar_route)?.setOnClickListener { testRouteInfoUpload() }
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 6477a91d16..17b3fdc1e1 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
@@ -16,10 +16,9 @@ import com.mogo.och.common.module.manager.OCHAdasAbilityManager;
import com.mogo.och.taxi.callback.ITaxiADASStatusCallback;
import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback;
import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback;
-import com.mogo.och.taxi.constant.TaxiDriverRoleEnum;
-import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
-import com.mogo.och.taxi.constant.TaxiUnmannedConst;
import com.mogo.och.taxi.constant.TaxiCarServingStatusManager;
+import com.mogo.och.taxi.constant.TaxiDriverRoleEnum;
+import com.mogo.och.taxi.constant.TaxiUnmannedConst;
import com.mogo.och.taxi.ui.task.TaxiTaskModel;
/**
@@ -81,11 +80,6 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS
TaxiTaskModel.INSTANCE.startAutoPilot();
}
- // 获取当前订单状态
- public TaxiOrderStatusEnum getCurOrderStatus() {
- return TaxiTaskModel.INSTANCE.getCurOrderStatus();
- }
-
// 登出
public void logout() {
TaxiTaskModel.INSTANCE.logout();
diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/base/AvoidLeakDialog.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/common/AvoidLeakDialog.kt
similarity index 96%
rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/base/AvoidLeakDialog.kt
rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/common/AvoidLeakDialog.kt
index d16598fb72..6896bf0e85 100644
--- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/base/AvoidLeakDialog.kt
+++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/common/AvoidLeakDialog.kt
@@ -1,4 +1,4 @@
-package com.mogo.och.taxi.base
+package com.mogo.och.taxi.ui.common
import android.app.Dialog
import android.content.Context
diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt
index e1098ed3fe..aa2ab2b1bc 100644
--- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt
+++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt
@@ -39,7 +39,7 @@ class DebugView @JvmOverloads constructor(
}
fun toggleOrderDebugView() {
- val data = TaxiTaskModel.getCurTaskAndOrder()
+ val data = TaxiTaskModel.getCurrentTaskWithOrder()
val curContrail = TaxiTaskModel.getCurrentTaskTrajectory()
visibility =
diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/personal/TaxiPersonalDialogFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/personal/TaxiPersonalDialogFragment.kt
index 3486eb1cc9..0b4d0ad244 100644
--- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/personal/TaxiPersonalDialogFragment.kt
+++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/personal/TaxiPersonalDialogFragment.kt
@@ -28,7 +28,7 @@ import com.mogo.commons.mvp.MvpDialogFragment
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.AvoidLeakDialog
+import com.mogo.och.taxi.ui.common.AvoidLeakDialog
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum.*
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum.Companion.valueOf
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 bf11fea391..d6547435ec 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
@@ -90,7 +90,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(),
}
private fun cancelOrder(cancelType: Int) {
- val currentTaskWithOrder = TaxiTaskModel.getCurTaskAndOrder()
+ val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
currentTaskWithOrder?.order?.also {
cancelOrder(AbsMogoApplication.getApp().applicationContext,
it.orderNo,
@@ -108,7 +108,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(),
}
private fun jumpPassengerCheck() {
- val currentTaskWithOrder = TaxiTaskModel.getCurTaskAndOrder()
+ val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
currentTaskWithOrder?.order?.also {
TaxiTaskWithOrderServiceManager.jumpPassengerCheck(AbsMogoApplication.getApp().applicationContext,
it.orderNo,
@@ -125,7 +125,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(),
}
private fun journeyCompleted() {
- val currentTaskWithOrder = TaxiTaskModel.getCurTaskAndOrder()
+ val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
currentTaskWithOrder?.order?.also {
TaxiTaskWithOrderServiceManager.orderCompleted(AbsMogoApplication.getApp().applicationContext,
it.orderNo,
@@ -142,7 +142,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(),
}
private fun closeOrderByDriver() {
- val currentTaskWithOrder = TaxiTaskModel.getCurTaskAndOrder()
+ val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
currentTaskWithOrder?.order?.orderEndSite?.also {
TaxiTaskModel.submitArriveSite(it.siteId, true)
}
@@ -154,7 +154,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(),
return
}
//当前订单状态若为20 , 则使用的lineId为订单信息的
- TaxiTaskModel.getCurTaskAndOrder()?.let {
+ TaxiTaskModel.getCurrentTaskWithOrder()?.let {
TaxiTaskModel.startTask(
if (it.order != null && it.order!!.orderStatus >= TaxiOrderStatusEnum.ArriveAtStart.code)
it.order!!.orderLine
@@ -214,7 +214,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(),
if (isOrderArrivedAtStart) {
TaxiTaskModel.prepareNextTask(siteId)
} else {
- TaxiTaskModel.startPrepareTask120S(siteId)
+ TaxiTaskModel.startPrepareTaskDelay120S(siteId)
}
}
@@ -239,9 +239,9 @@ class TaxiCurrentTaskViewModel : BaseViewModel(),
override fun onOrderJourneyCompleted() {
updateTaskAndOrderUi(null)
//获取新的任务
- val currentTaskWithOrder = TaxiTaskModel.getCurTaskAndOrder()
+ val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
currentTaskWithOrder?.endSite?.also {
- TaxiTaskModel.startPrepareTask120S(it.siteId)
+ TaxiTaskModel.startPrepareTaskDelay120S(it.siteId)
}
}
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 5284e99a47..2c3d9f59a0 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
@@ -53,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.taxi.bean.OrderDetail
import com.mogo.och.taxi.bean.PrepareTaskRespBean
import com.mogo.och.taxi.bean.QueryCarOrderByNoRespBean
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean
@@ -69,7 +68,6 @@ import com.mogo.och.taxi.constant.TaskStatusEnum
import com.mogo.och.taxi.constant.TaskTypeEnum
import com.mogo.och.taxi.constant.TaxiCarServingStatusManager
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.network.TaxiTaskWithOrderServiceManager
@@ -158,6 +156,23 @@ object TaxiTaskModel {
mTaxiCarServiceCallback = callback
}
+ private fun getCurTaskStatus(): Int? {
+ if (mCurrentTaskWithOrder == null) TaskStatusEnum.None
+ return mCurrentTaskWithOrder?.currentStatus
+ }
+
+ fun getCurrentTaskWithOrder(): QueryCurrentTaskRespBean.Result? {
+ return mCurrentTaskWithOrder
+ }
+
+ fun getCurrentOrderTrajectoryList(): MutableList? {
+ return mTaskTrajectoryList
+ }
+
+ fun getCurrentTaskTrajectory(): TrajectoryListRespBean.Result? {
+ return mCurrentTaskTrajectory
+ }
+
fun init() {
loginService =
ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation() as LoginService
@@ -339,11 +354,11 @@ object TaxiTaskModel {
if (null == mogoLocation) return
if (mDriveToNearestStationTask != null) {
- judgeUntruthStation(mDriveToNearestStationTask, mogoLocation)
+ judgeDriveToNearestStationTaskStation(mDriveToNearestStationTask, mogoLocation)
}
if (checkCurrentTaskCondition()
- && mCurrentTaskWithOrder?.currentStatus == TaskStatusEnum.StartTask.code
+ && QueryCurrentTaskRespBean.isStartTaskType(mCurrentTaskWithOrder)
) {
// judgeTaskStartStation(mogoLocation)
judgeTaskEndSiteStation(mogoLocation)
@@ -482,6 +497,41 @@ object TaxiTaskModel {
}
}
+ private fun judgeDriveToNearestStationTaskStation(
+ virtualTask: StartServiceRespBean.Result?,
+ currentLocation: MogoLocation
+ ) {
+ if (mDriveToNearestStationTask == null || virtualTask == null) return
+ val distance = CoordinateUtils.calculateLineDistance(
+ virtualTask.gcjLon, virtualTask.gcjLat,
+ currentLocation.longitude, currentLocation.latitude
+ ).toDouble()
+ i(
+ TAG,
+ "judgeDriveToNearestStationTaskStation() ${virtualTask.siteName} distance = $distance"
+ )
+ if (distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE) { // 15米内到站
+ submitArriveSite(virtualTask.siteId, true)
+ }
+ }
+
+ //根据围栏判断,是否到达起点
+ private fun judgeTaskStartStation(location: MogoLocation) {
+ if (checkCurrentTaskCondition()) {
+ val startSite = mCurrentTaskWithOrder!!.startSite ?: return
+ val startLon = startSite.gcjLon
+ val startLat = startSite.gcjLat
+ val distance = CoordinateUtils.calculateLineDistance(
+ startLon, startLat,
+ location.longitude, location.latitude
+ ).toDouble()
+ i(TAG, "judgeTaskStartStation() distance = $distance")
+ if (distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE) {
+ submitArriveSite(startSite.siteId, false)
+ }
+ }
+ }
+
private fun autopilotArriveAtStation() {
if (!checkCurrentTaskCondition()) return
i(
@@ -668,7 +718,7 @@ object TaxiTaskModel {
if (mCurrentTaskWithOrder!!.startSite != null && mCurrentTaskWithOrder!!.endSite != null
&& mCurrentTaskWithOrder!!.currentStatus <= TaskStatusEnum.StartTask.code
) {
- val curTaskAndOrder = getCurTaskAndOrder() ?: return
+ val curTaskAndOrder = getCurrentTaskWithOrder() ?: return
if (curTaskAndOrder.startSite != null && curTaskAndOrder.endSite != null) {
val startStation = MogoLocation()
startStation.longitude = curTaskAndOrder.startSite!!.gcjLon
@@ -720,6 +770,21 @@ object TaxiTaskModel {
})
}
+ fun startTask(lineId: Long) {
+ TaxiTaskWithOrderServiceManager.startTask(
+ mContext,
+ lineId,
+ object : OchCommonServiceCallback {
+ override fun onSuccess(data: BaseData?) {
+ d(TAG, "startTask onSuccess: data=${GsonUtil.jsonFromObject(data)}")
+ }
+
+ override fun onFail(code: Int, msg: String?) {
+ d(TAG, "startTask onFail: code=$code, msg=$msg")
+ }
+ })
+ }
+
fun prepareNextTask(siteId: Long) {
TaxiTaskWithOrderServiceManager.prepareTask(
mContext,
@@ -742,13 +807,13 @@ object TaxiTaskModel {
override fun onFail(code: Int, msg: String?) {
d(TAG, "prepareNextTask onFail: code=$code ,msg=$msg")
if (LoginStatusManager.isLogin() && TaxiCarServingStatusManager.isCarServingStatus()) {
- startPrepareTask120S(siteId)
+ startPrepareTaskDelay120S(siteId)
}
}
})
}
- fun startPrepareTask120S(siteId: Long) {
+ fun startPrepareTaskDelay120S(siteId: Long) {
UiThreadHandler.postDelayed({
prepareNextTask(siteId)
}, TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S)
@@ -835,117 +900,6 @@ object TaxiTaskModel {
}
}
- // 获取当前订单状态
- fun getCurOrderStatus(): TaxiOrderStatusEnum? {
- if (mCurrentTaskWithOrder == null) TaxiOrderStatusEnum.None
- val order: OrderDetail = mCurrentTaskWithOrder!!.order!!
- return valueOf(order.orderStatus)
- }
-
- private fun getCurTaskStatus(): Int? {
- if (mCurrentTaskWithOrder == null) TaskStatusEnum.None
- return mCurrentTaskWithOrder?.currentStatus
- }
-
- fun getCurTaskAndOrder(): QueryCurrentTaskRespBean.Result? {
- return mCurrentTaskWithOrder
- }
-
- fun getCurUntruthTask(): StartServiceRespBean.Result? {
- return mDriveToNearestStationTask
- }
-
- fun getCurrentOrderTrajectoryList(): MutableList? {
- return mTaskTrajectoryList
- }
-
- fun getCurrentTaskTrajectory(): TrajectoryListRespBean.Result? {
- return mCurrentTaskTrajectory
- }
-
- //更新本地currentOrder信息,并保存订单到本地避免车机重启丢失数据
- private fun updateNativeCurrentOrder(data: QueryCurrentTaskRespBean.Result?) {
- if (data == null) {
- return
- }
- mCurrentTaskWithOrder = data
-
- SharedPrefsMgr.getInstance(mContext!!).putString(
- TaxiUnmannedConst.SP_KEY_OCH_TAXI_ORDER,
- GsonUtil.jsonFromObject(data)
- )
-
- val currentOrder = mCurrentTaskWithOrder!!.order
-
- if (currentOrder != null) {
- if (currentOrder!!.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.code) {
- if (FunctionBuildConfig.isDemoMode) {
- // 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true
- FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true
- CallerAutoPilotControlManager.setIgnoreConditionDraw(true)
- CallerAutoPilotControlManager.setIPCDemoMode(true)
- d(TAG, "美化模式-ignore:置为true(更新本地order信息)")
- }
- updateAutopilotControlParameters()
- }
- if (currentOrder!!.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code) {
- if (FunctionBuildConfig.isDemoMode) {
- d(TAG, "setIPCDemoMode:false")
- CallerAutoPilotControlManager.setIPCDemoMode(false)
- }
- clearAutopilotControlParameters()
- }
- } else {
- if (FunctionBuildConfig.isDemoMode) {
- d(TAG, "setIPCDemoMode:false")
- CallerAutoPilotControlManager.setIPCDemoMode(false)
- }
- clearAutopilotControlParameters()
- }
- }
-
- /**
- * 将业务订单信息保存,鹰眼可取用
- */
- private fun updateAutopilotControlParameters() {
- val parameters = initAutopilotControlParameters()
- if (null == parameters) {
- e(TAG, "AutopilotControlParameters is empty.")
- return
- }
- d(TAG, "AutopilotControlParameters is update.")
- updateAutopilotControlParameters(parameters)
- }
-
- private fun clearAutopilotControlParameters() {
- d(TAG, "AutopilotControlParameters is clear.")
- updateAutopilotControlParameters(null)
- }
-
- fun updateUntruthTask(untruthTask: StartServiceRespBean.Result?) {
- mDriveToNearestStationTask = untruthTask
- }
-
- //清除任务订单信息
- fun clearCurrentOCHOrder() {
- mCurrentTaskWithOrder = null
- clearAutopilotControlParameters()
- TaxiTrajectoryManager.getInstance().syncTrajectoryInfo()
- SharedPrefsMgr.getInstance(mContext!!).remove(TaxiUnmannedConst.SP_KEY_OCH_TAXI_ORDER)
- isRestartAutopilot = false
- if (FunctionBuildConfig.isDemoMode) {
- // 当美化模式(演示模式)开启时: 取消或订单已完成时,置false
- FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false
- CallerAutoPilotControlManager.setIgnoreConditionDraw(false)
- CallerAutoPilotControlManager.setIPCDemoMode(false)
- d(TAG, "美化模式-ignore:置为false(已完成or清除当前订单)")
- }
- }
-
- private fun checkCurrentOrder(): Boolean {
- return mCurrentTaskWithOrder != null && mCurrentTaskWithOrder!!.order != null
- }
-
/**
* 以当前订单为基础,开启自动驾驶
*/
@@ -1061,7 +1015,7 @@ object TaxiTaskModel {
mCurrentTaskTrajectory!!.txtFileUrl,
mCurrentTaskTrajectory!!.txtFileMd5,
mCurrentTaskTrajectory!!.contrailSaveTime,
- "", // todo 这里原来传的是carModel, 现在没有这个信息
+ BUSINESSTYPE.toString(),
mCurrentTaskTrajectory!!.csvFileUrlDPQP,
mCurrentTaskTrajectory!!.csvFileMd5DPQP,
mCurrentTaskTrajectory!!.txtFileUrlDPQP,
@@ -1082,57 +1036,6 @@ object TaxiTaskModel {
}
}
- //根据围栏判断,是否到达起点
- private fun judgeTaskStartStation(location: MogoLocation) {
- if (checkCurrentTaskCondition()) {
- val startSite = mCurrentTaskWithOrder!!.startSite ?: return
- val startLon = startSite.gcjLon
- val startLat = startSite.gcjLat
- val distance = CoordinateUtils.calculateLineDistance(
- startLon, startLat,
- location.longitude, location.latitude
- ).toDouble()
- i(TAG, "judgeTaskStartStation() distance = $distance")
- if (distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE) {
- submitArriveSite(startSite.siteId, false)
- }
- }
- }
-
-
- private fun judgeUntruthStation(
- virtualTask: StartServiceRespBean.Result?,
- currentLocation: MogoLocation
- ) {
- if (mDriveToNearestStationTask == null || virtualTask == null) return
- val distance = CoordinateUtils.calculateLineDistance(
- virtualTask.gcjLon, virtualTask.gcjLat,
- currentLocation.longitude, currentLocation.latitude
- ).toDouble()
- i(
- TAG,
- "judgeEndStation() ${virtualTask.siteName} distance = $distance"
- )
- if (distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE) { // 15米内到站
- submitArriveSite(virtualTask.siteId, true)
- }
- }
-
- fun startTask(lineId: Long) {
- TaxiTaskWithOrderServiceManager.startTask(
- mContext,
- lineId,
- object : OchCommonServiceCallback {
- override fun onSuccess(data: BaseData?) {
- d(TAG, "startTask onSuccess: data=${GsonUtil.jsonFromObject(data)}")
- }
-
- override fun onFail(code: Int, msg: String?) {
- d(TAG, "startTask onFail: code=$code, msg=$msg")
- }
- })
- }
-
private fun judgeTaskEndSiteStation(currentLocation: MogoLocation) {
if (!checkCurrentTaskCondition()) {
return
@@ -1174,39 +1077,11 @@ object TaxiTaskModel {
}
}
-
- fun setArriveAtUntruthStation() {
- if (mDriveToNearestStationTask == null) {
- ToastUtils.showShort("无虚拟站点!")
- return
- }
- submitArriveSite(mDriveToNearestStationTask!!.siteId, false)
- }
-
- fun setArriveAtEndStation() {
- if (!checkCurrentTaskCondition()) {
- ToastUtils.showShort("无任务!")
- return
- }
-// arriveSite(mCurrentTaskAndOrder?.endSite!!.siteId, true)
- autopilotArriveAtStation()
- }
-
- /**
- * 测试开启自动驾驶
- */
- fun setOnTheWayToEndStation() {
- if (!checkCurrentOrder()) {
- ToastUtils.showShort("订单状态不匹配该操作!")
- }
- startAutoPilot()
- }
-
/**
* 设置路径规划起终点
*/
fun setRouteLineMarker() {
- val curTaskAndOrder = getCurTaskAndOrder()
+ val curTaskAndOrder = getCurrentTaskWithOrder()
if (curTaskAndOrder != null) {
if (curTaskAndOrder.startSite == null || curTaskAndOrder.endSite == null) {
cleanLineMarker()
@@ -1232,6 +1107,24 @@ object TaxiTaskModel {
}
}
+ /**
+ * 清除任务订单信息
+ */
+ fun clearCurrentOCHOrder() {
+ mCurrentTaskWithOrder = null
+ clearAutopilotControlParameters()
+ TaxiTrajectoryManager.getInstance().syncTrajectoryInfo()
+ SharedPrefsMgr.getInstance(mContext).remove(TaxiUnmannedConst.SP_KEY_OCH_TAXI_ORDER)
+ isRestartAutopilot = false
+ if (FunctionBuildConfig.isDemoMode) {
+ // 当美化模式(演示模式)开启时: 取消或订单已完成时,置false
+ FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false
+ CallerAutoPilotControlManager.setIgnoreConditionDraw(false)
+ CallerAutoPilotControlManager.setIPCDemoMode(false)
+ d(TAG, "美化模式-ignore:置为false(已完成or清除当前订单)")
+ }
+ }
+
// 登出
fun logout() {
loginService!!.loginOut(
@@ -1259,4 +1152,90 @@ object TaxiTaskModel {
}
}
}
+
+ //更新本地currentOrder信息,并保存订单到本地避免车机重启丢失数据
+ private fun updateNativeCurrentOrder(data: QueryCurrentTaskRespBean.Result?) {
+ if (data == null) {
+ return
+ }
+ mCurrentTaskWithOrder = data
+
+ SharedPrefsMgr.getInstance(mContext!!).putString(
+ TaxiUnmannedConst.SP_KEY_OCH_TAXI_ORDER,
+ GsonUtil.jsonFromObject(data)
+ )
+
+ val currentOrder = mCurrentTaskWithOrder!!.order
+
+ if (currentOrder != null) {
+ if (currentOrder!!.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.code) {
+ if (FunctionBuildConfig.isDemoMode) {
+ // 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true
+ FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true
+ CallerAutoPilotControlManager.setIgnoreConditionDraw(true)
+ CallerAutoPilotControlManager.setIPCDemoMode(true)
+ d(TAG, "美化模式-ignore:置为true(更新本地order信息)")
+ }
+ updateAutopilotControlParameters()
+ }
+ if (currentOrder!!.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code) {
+ if (FunctionBuildConfig.isDemoMode) {
+ d(TAG, "setIPCDemoMode:false")
+ CallerAutoPilotControlManager.setIPCDemoMode(false)
+ }
+ clearAutopilotControlParameters()
+ }
+ } else {
+ if (FunctionBuildConfig.isDemoMode) {
+ d(TAG, "setIPCDemoMode:false")
+ CallerAutoPilotControlManager.setIPCDemoMode(false)
+ }
+ clearAutopilotControlParameters()
+ }
+ }
+
+ /**
+ * 将业务订单信息保存,鹰眼可取用
+ */
+ private fun updateAutopilotControlParameters() {
+ val parameters = initAutopilotControlParameters()
+ if (null == parameters) {
+ e(TAG, "AutopilotControlParameters is empty.")
+ return
+ }
+ d(TAG, "AutopilotControlParameters is update.")
+ updateAutopilotControlParameters(parameters)
+ }
+
+ private fun clearAutopilotControlParameters() {
+ d(TAG, "AutopilotControlParameters is clear.")
+ updateAutopilotControlParameters(null)
+ }
+
+ fun mockArriveAtNearestStation() {
+ if (mDriveToNearestStationTask == null) {
+ ToastUtils.showShort("无虚拟站点!")
+ return
+ }
+ submitArriveSite(mDriveToNearestStationTask!!.siteId, false)
+ }
+
+ fun mockArriveAtEndStation() {
+ if (!checkCurrentTaskCondition()) {
+ ToastUtils.showShort("无任务!")
+ return
+ }
+// arriveSite(mCurrentTaskAndOrder?.endSite!!.siteId, true)
+ autopilotArriveAtStation()
+ }
+
+ /**
+ * 测试开启自动驾驶
+ */
+ fun mockOnTheWayToEndStation() {
+ if (mCurrentTaskWithOrder == null || mCurrentTaskWithOrder?.order == null) {
+ ToastUtils.showShort("订单状态不匹配该操作!")
+ }
+ startAutoPilot()
+ }
}
\ No newline at end of file
diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java
index 5d7e67e1d4..23c3446931 100644
--- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java
+++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java
@@ -1,14 +1,16 @@
package com.mogo.och.taxi.utils;
+import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI;
+
import androidx.annotation.Nullable;
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters;
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.TrajectoryListRespBean;
import com.mogo.och.taxi.bean.OrderDetail;
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean;
+import com.mogo.och.taxi.bean.TrajectoryListRespBean;
import com.mogo.och.taxi.constant.TaskStatusEnum;
import com.mogo.och.taxi.constant.TaxiUnmannedConst;
import com.mogo.och.taxi.ui.task.TaxiTaskModel;
@@ -24,8 +26,6 @@ import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import mogo_msg.MogoReportMsg;
-import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI;
-
/**
* Taxi轨迹管理:给MEC下发用于轨迹下载的信息
* Created on 2022/6/22
@@ -68,7 +68,7 @@ public class TaxiTrajectoryManager {
* 同步订单信息
*/
public void syncTrajectoryInfo() {
- QueryCurrentTaskRespBean.Result taskAndOrder = TaxiTaskModel.INSTANCE.getCurTaskAndOrder();
+ QueryCurrentTaskRespBean.Result taskAndOrder = TaxiTaskModel.INSTANCE.getCurrentTaskWithOrder();
if (taskAndOrder == null || taskAndOrder.getCurrentStatus() >= TaskStatusEnum.StartTask.getCode()) {
CallerLogger.d(M_TAXI + TAG, "syncTrajectoryInfo() stop.");
stopTrajReqLoop();
@@ -117,7 +117,7 @@ public class TaxiTrajectoryManager {
}
private void setupAutoPilotLine() {
- QueryCurrentTaskRespBean.Result taskAndOrder = TaxiTaskModel.INSTANCE.getCurTaskAndOrder();
+ QueryCurrentTaskRespBean.Result taskAndOrder = TaxiTaskModel.INSTANCE.getCurrentTaskWithOrder();
if (taskAndOrder == null || taskAndOrder.getEndSite() == null) {
CallerLogger.e(M_TAXI + TAG,
@@ -125,9 +125,10 @@ public class TaxiTrajectoryManager {
} else {
/**
* 主要加载和预加载轨迹方案
- * 1、获取当前跑的任务的lineId 2、当前任务lineId是否在运营单的轨迹集合里
- * 3、存在, 通知下载加载当前任务的轨迹以及预加载lineId在集合对应的下一个lineId对应的轨迹
- * 4、若不存在,说明当前的执行的任务是与订单无关的演练任务,通知下载加载当前任务的轨迹以及预加载订单轨迹集合的第一个
+ * 1、获取当前跑的任务的lineId
+ * 2、当前任务lineId是否在运营单的轨迹集合里
+ * 3、存在, 通知下载加载当前任务的轨迹以及预加载lineId在集合对应的下一个lineId对应的轨迹
+ * 4、若不存在,说明当前的执行的任务是与订单无关的演练任务,通知下载加载当前任务的轨迹以及预加载订单轨迹集合的第一个
*/
final TrajectoryListRespBean.Result curTaskContrail = TaxiTaskModel.INSTANCE.getCurrentTaskTrajectory();
@@ -138,7 +139,7 @@ public class TaxiTrajectoryManager {
if (mAutoPilotLine == null) {
mAutoPilotLine = new AutopilotControlParameters.AutoPilotLine(curTaskContrail.getLineId(), curTaskContrail.getLineName(),
curTaskContrail.getCsvFileUrl(), curTaskContrail.getCsvFileMd5(), curTaskContrail.getTxtFileUrl(),
- curTaskContrail.getTxtFileMd5(), curTaskContrail.getContrailSaveTime(), "",//todo curTaskContrail.getCarModel()
+ curTaskContrail.getTxtFileMd5(), curTaskContrail.getContrailSaveTime(), String.valueOf(TaxiUnmannedConst.BUSINESSTYPE),
curTaskContrail.getCsvFileUrlDPQP(), curTaskContrail.getCsvFileMd5DPQP(), curTaskContrail.getTxtFileUrlDPQP(),
curTaskContrail.getTxtFileMd5DPQP(), curTaskContrail.getContrailSaveTimeDPQP());
} else {
@@ -149,7 +150,7 @@ public class TaxiTrajectoryManager {
mAutoPilotLine.setStopUrl(curTaskContrail.getTxtFileUrl());
mAutoPilotLine.setStopMd5(curTaskContrail.getTxtFileMd5());
mAutoPilotLine.setTimestamp(curTaskContrail.getContrailSaveTime());
- mAutoPilotLine.setVehicleModel("");// todo curTaskContrail.getCarModel()
+ mAutoPilotLine.setVehicleModel(String.valueOf(TaxiUnmannedConst.BUSINESSTYPE));
mAutoPilotLine.setTrajUrl_dpqp(curTaskContrail.getCsvFileUrlDPQP());
mAutoPilotLine.setTrajMd5_dpqp(curTaskContrail.getCsvFileMd5DPQP());
mAutoPilotLine.setStopUrl_dpqp(curTaskContrail.getTxtFileUrlDPQP());
@@ -189,7 +190,7 @@ public class TaxiTrajectoryManager {
if (mPreAutoPilotLine == null) {
mPreAutoPilotLine = new AutopilotControlParameters.AutoPilotLine(preloadContrail.getLineId(), preloadContrail.getLineName(),
preloadContrail.getCsvFileUrl(), preloadContrail.getCsvFileMd5(), preloadContrail.getTxtFileUrl(),
- preloadContrail.getTxtFileMd5(), preloadContrail.getContrailSaveTime(), "",//todo curTaskContrail.getCarModel()
+ preloadContrail.getTxtFileMd5(), preloadContrail.getContrailSaveTime(), String.valueOf(TaxiUnmannedConst.BUSINESSTYPE),
preloadContrail.getCsvFileUrlDPQP(), preloadContrail.getCsvFileMd5DPQP(), preloadContrail.getTxtFileUrlDPQP(),
preloadContrail.getTxtFileMd5DPQP(), preloadContrail.getContrailSaveTimeDPQP());
} else {
@@ -200,7 +201,7 @@ public class TaxiTrajectoryManager {
mPreAutoPilotLine.setStopUrl(preloadContrail.getTxtFileUrl());
mPreAutoPilotLine.setStopMd5(preloadContrail.getTxtFileMd5());
mPreAutoPilotLine.setTimestamp(preloadContrail.getContrailSaveTime());
- mPreAutoPilotLine.setVehicleModel("");// todo curTaskContrail.getCarModel()
+ mPreAutoPilotLine.setVehicleModel(String.valueOf(TaxiUnmannedConst.BUSINESSTYPE));
mPreAutoPilotLine.setTrajUrl_dpqp(preloadContrail.getCsvFileUrlDPQP());
mPreAutoPilotLine.setTrajMd5_dpqp(preloadContrail.getCsvFileMd5DPQP());
mPreAutoPilotLine.setStopUrl_dpqp(preloadContrail.getTxtFileUrlDPQP());