From 7ec2f584cd791b729f1657b510dcfb588ca7634f Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Fri, 11 Aug 2023 14:59:00 +0800 Subject: [PATCH] =?UTF-8?q?[6.0.0]=20=E8=BD=A8=E8=BF=B9=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/taxi/bean/UnmannedCarStatusBean.kt | 2 +- .../mogo/och/taxi/bean/UnmannedTaskBean.kt | 20 +- .../och/taxi/constant/TaxiUnmannedConst.kt | 2 + .../java/com/mogo/och/taxi/model/TaxiModel.kt | 282 ++++++++++-------- .../och/taxi/model/TaxiUnmannedViewModel.kt | 69 +++-- .../och/taxi/network/CarServiceManager.kt | 8 +- .../och/taxi/presenter/TaxiPresenter.java | 2 - .../mogo/och/taxi/ui/TaxiBeingTaskFragment.kt | 9 +- .../och/taxi/ui/TaxiOrderCancelDialog.java | 8 +- .../och/taxi/utils/TaxiTrajectoryManager.java | 117 +++++--- app/config/urlConfig.json | 2 +- 11 files changed, 318 insertions(+), 203 deletions(-) diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/bean/UnmannedCarStatusBean.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/bean/UnmannedCarStatusBean.kt index 71fbecd997..be0509fefd 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/bean/UnmannedCarStatusBean.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/bean/UnmannedCarStatusBean.kt @@ -20,5 +20,5 @@ data class UnmannedLogoutReqBean(var sn: String, var loc: GcjLatLon?) data class StartServiceReqBean(var sn: String, var gcjLat: Double, var gcjLon: Double) data class StartServiceRespBean(var data: Result?): BaseData(){ - data class Result(var siteId: Int,var siteName: String,var gcjLat: Double, var gcjLon: Double) + data class Result(var siteId: Long,var siteName: String,var gcjLat: Double, var gcjLon: Double) } \ No newline at end of file diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt index 25c18513e2..28bc5b0071 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt @@ -12,7 +12,7 @@ data class OrderDetail( var orderStatus: Int, var orderStartSite: Site?, var orderEndSite: Site?, - var planningLines: Array, + var planningLines: Array, var phone: String, var passengerNum: Int ) { @@ -41,7 +41,7 @@ data class OrderDetail( } } -data class Site(var siteId: Int, var siteName: String, var gcjLat: Double, var gcjLon: Double) { +data class Site(var siteId: Long, var siteName: String, var gcjLat: Double, var gcjLon: Double) { override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false @@ -58,7 +58,7 @@ data class Site(var siteId: Int, var siteName: String, var gcjLat: Double, var g data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() { data class Result( - var sn: String, var lineId: Int, var servingStatus: Int, + var sn: String, var lineId: Long, var servingStatus: Int, var currentStatus: Int, var taskType: Int, var startSite: Site?, var endSite: Site?, var order: OrderDetail? @@ -85,12 +85,12 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() { } } -data class StartTaskReqBean(var sn: String, var lineId: Int) +data class StartTaskReqBean(var sn: String, var lineId: Long) -data class ArriveSiteReqBean(var sn: String, var siteId: Int) -data class PrepareTaskReqBean(var sn: String, var siteId: Int) +data class ArriveSiteReqBean(var sn: String, var siteId: Long) +data class PrepareTaskReqBean(var sn: String, var siteId: Long) data class PrepareTaskRespBean( - var lineId: Int, var cityCode: Int, var taskType: Int, + var lineId: Long, var cityCode: Int, var taskType: Int, var startSite: Site, var endSite: Site ) //taskType 1:虚拟任务 2:接驾任务3:送驾任务 : BaseData() @@ -98,17 +98,17 @@ data class PrepareTaskRespBean( data class JumpPassengerCheckReqBean(var sn: String, var orderNo: String) data class CancelOrderReqBean(var sn: String, var orderNo: String) data class OrderCompletedReqBean(var sn: String, var orderNo: String) -data class ContrailListReqBean(var lineIds: MutableList) +data class ContrailListReqBean(var lineIds: Array) data class QueryCarOrderByNoReqBean(var sn: String, var orderNo: String) data class QueryCarOrderByNoRespBean( var sn: String, var orderNo: String, var orderStatus: Int, var bookingUserPhone: String, var businessType: String ): BaseData() -data class ContrailListRespBean(var data: MutableList) //轨迹路线集合 +data class ContrailListRespBean(var data: MutableList?) //轨迹路线集合 : BaseData() { data class Result( - var lineId: Int, var csvFileUrl: String, var csvFileMd5: String, + var lineId: Long, var csvFileUrl: String, var csvFileMd5: String, var txtFileUrl: String, var txtFileMd5: String, var contrailSaveTime: Long, var csvFileUrlDPQP: String, var csvFileMd5DPQP: String, var txtFileUrlDPQP: String, var txtFileMd5DPQP: String, var contrailSaveTimeDPQP: Long diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/constant/TaxiUnmannedConst.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/constant/TaxiUnmannedConst.kt index cd59b43cae..9b9b2e487a 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/constant/TaxiUnmannedConst.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/constant/TaxiUnmannedConst.kt @@ -12,6 +12,8 @@ class TaxiUnmannedConst { // 到达起始点围栏 const val ARRIVE_AT_START_STATION_DISTANCE = 15 //围栏由20m改为50m 再次改为15m + const val BUSINESSTYPE = 15 //9 taxi , 10 bus + // 上报心跳轮询ms const val LOOP_PERIOD_60S = 60 * 1000L // 开始服务启动自动驾驶等待时间(埋点上传) diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt index d4e7ac6b80..e19df38a8b 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt @@ -3,6 +3,7 @@ package com.mogo.och.taxi.model import android.annotation.SuppressLint import android.content.Context import android.net.ConnectivityManager +import android.text.TextUtils import com.alibaba.android.arouter.launcher.ARouter import com.amap.api.maps.model.LatLng import com.elegant.network.utils.GsonUtil @@ -21,6 +22,7 @@ import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.cancelAutoPilot import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.setIPCDemoMode import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.setIgnoreConditionDraw @@ -57,6 +59,7 @@ import com.mogo.och.common.module.manager.distancemamager.ITrajectoryListener import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager.addDistanceListener import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager.addTrajectoryListener import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager.setStationPoint +import com.mogo.och.taxi.bean.ContrailListRespBean import com.mogo.och.taxi.bean.OrderDetail import com.mogo.och.taxi.bean.PrepareTaskRespBean import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean @@ -66,10 +69,13 @@ 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.TaskStatusEnum 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.TIMER_PREPARE_TASK_INTERVAL +import com.mogo.och.taxi.network.CarServiceManager import com.mogo.och.taxi.network.CarServiceManager.arriveSite import com.mogo.och.taxi.network.CarServiceManager.prepareTask import com.mogo.och.taxi.network.CarServiceManager.startTask @@ -99,7 +105,11 @@ object TaxiModel { private var mCurrentTaskAndOrder : QueryCurrentTaskRespBean.Result? = null //当前任务和订单 - private var mUntruthTask : StartServiceRespBean.Result? = null + private var mUntruthTask : StartServiceRespBean.Result? = null // 前往出车点的伪任务, 后台并不算做真正的任务 + + private var mOrderContrails : MutableList? = null // 运营单(接驾任务和送驾任务的轨迹集合) + + private var mCurTaskContrail : ContrailListRespBean.Result? = null //当前在跑的任务的轨迹信息 private var mADASStatusCallback //Model->Presenter:自动驾驶状态相关 : ITaxiADASStatusCallback? = null @@ -116,10 +126,6 @@ object TaxiModel { private val mRoutePoints: MutableList? = ArrayList() -// private var mLongitude = 0.0 -// private var mLatitude = 0.0 -// private var mLocation: MogoLocation? = null - var loginService: LoginService? = null fun setMoGoAutopilotPlanningListener(moGoAutopilotPlanningCallback: IOCHTaxiAutopilotPlanningCallback?) { @@ -270,8 +276,16 @@ object TaxiModel { return mCurrentTaskAndOrder } + fun getCurOrderContrails(): MutableList?{ + return mOrderContrails + } + + fun getCurTaskContrail(): ContrailListRespBean.Result?{ + return mCurTaskContrail + } + //更新本地currentOrder信息,并保存订单到本地避免车机重启丢失数据 - fun updateNativeCurrentOrder(data: QueryCurrentTaskRespBean.Result?) { + private fun updateNativeCurrentOrder(data: QueryCurrentTaskRespBean.Result?) { if (data == null) { return } @@ -331,6 +345,7 @@ object TaxiModel { fun updateCurrentTaskAndOrder(result: QueryCurrentTaskRespBean.Result?){ mCurrentTaskAndOrder = result + updateNativeCurrentOrder(result) } fun updateUntruthTask(untruthTask : StartServiceRespBean.Result?) { @@ -380,68 +395,71 @@ object TaxiModel { return } -// // TODO: 轨迹信息需要另一个接口去查一下 -// //根据开关和后台是否发布轨迹启动自驾 -// if (FunctionBuildConfig.isPassStartAutopilotCommand && TextUtils.isEmpty( -// mCurrentTaskAndOrder!!.csvFileUrl -// ) -// && TextUtils.isEmpty(mCurrentTaskAndOrder!!.csvFileUrlDPQP) -// ) { -// ToastUtils.showLong("无发布轨迹, 请发布后重试") -// e( -// SceneConstant.M_TAXI + TAG, "isPassStartAutopilotCommand = " + -// FunctionBuildConfig.isPassStartAutopilotCommand -// + "busRoutesResult.csvFileUrl = " + mCurrentTaskAndOrder!!.csvFileUrl -// + "busRoutesResult.csvFileUrlDPQP = " + mCurrentTaskAndOrder!!.csvFileUrlDPQP -// ) -// return -// } -// e( -// SceneConstant.M_TAXI + TAG, "isPassStartAutopilotCommand = " + -// FunctionBuildConfig.isPassStartAutopilotCommand -// ) -// if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().autopilotAbilityStatus) { -// ToastUtils.showLong( -// OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + -// ", 请稍候重试" -// ) -// TaxiAnalyticsManager.getInstance().triggerUnableStartAPReasonEvent( -// mCurrentOrder!!.orderStartSite!!.siteName, -// mCurrentOrder!!.orderEndSite!!.siteName, -// mCurrentOrder!!.orderNo, -// OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason -// ) -// return -// } -// -// //点击开始自动驾驶按钮订单状态去流转, 不再与自动驾驶是否启动成功挂钩 -// isRestartAutopilot = mCurrentOrder!!.orderStatus != TaxiOrderStatusEnum.UserArriveAtStart.code -// -// val parameters = initAutopilotControlParameters() -// if (null == parameters) { -// e(SceneConstant.M_TAXI + TAG, "AutopilotControlParameters is empty.") -// return -// } -// startAutoPilot(parameters) -// d( -// SceneConstant.M_TAXI + TAG, "start autopilot with parameter: %s", -// GsonUtil.jsonFromObject(parameters) -// + " ,startSiteName=" + mCurrentOrder!!.orderStartSite!!.siteName -// + " ,endSiteName=" + mCurrentOrder!!.orderEndSite!!.siteName -// + "isRestartAutopilot = " + isRestartAutopilot -// ) -// TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent( -// isRestartAutopilot, -// false, -// mCurrentOrder!!.orderStartSite!!.siteName, -// mCurrentOrder!!.orderEndSite!!.siteName, -// mCurrentOrder!!.lineId, -// mCurrentOrder!!.orderNo -// ) -// if (mControllerStatusCallback != null) { -// mControllerStatusCallback!!.startOpenAutopilot() -// } -// + if (mCurTaskContrail == null){ + e(SceneConstant.M_TAXI + TAG, "no order or order is empty.") + ToastUtils.showShort("轨迹信息不存在!") + } + + //根据开关和后台是否发布轨迹启动自驾 + if (FunctionBuildConfig.isPassStartAutopilotCommand && TextUtils.isEmpty( + mCurTaskContrail!!.csvFileUrl + ) + && TextUtils.isEmpty(mCurTaskContrail!!.csvFileUrlDPQP) + ) { + ToastUtils.showLong("无发布轨迹, 请发布后重试") + e( + SceneConstant.M_TAXI + TAG, "isPassStartAutopilotCommand = " + + FunctionBuildConfig.isPassStartAutopilotCommand + + "busRoutesResult.csvFileUrl = " + mCurTaskContrail!!.csvFileUrl + + "busRoutesResult.csvFileUrlDPQP = " + mCurTaskContrail!!.csvFileUrlDPQP + ) + return + } + e( + SceneConstant.M_TAXI + TAG, "isPassStartAutopilotCommand = " + + FunctionBuildConfig.isPassStartAutopilotCommand + ) + if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().autopilotAbilityStatus) { + ToastUtils.showLong( + OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + + ", 请稍候重试" + ) + TaxiAnalyticsManager.getInstance().triggerUnableStartAPReasonEvent( + mCurrentTaskAndOrder!!.startSite!!.siteName, + mCurrentTaskAndOrder!!.endSite!!.siteName, + mCurrentTaskAndOrder!!.lineId.toString(), // todo 这里原来传的是订单号, 现在是任务没有订单号,传了路线id + OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + ) + return + } + + //点击开始自动驾驶按钮订单状态去流转, 不再与自动驾驶是否启动成功挂钩 + isRestartAutopilot = mCurrentTaskAndOrder!!.currentStatus != TaskStatusEnum.StartTask.code + + val parameters = initAutopilotControlParameters() + if (null == parameters) { + e(SceneConstant.M_TAXI + TAG, "AutopilotControlParameters is empty.") + return + } + CallerAutoPilotControlManager.startAutoPilot(parameters) + d( + SceneConstant.M_TAXI + TAG, "start autopilot with parameter: %s", + GsonUtil.jsonFromObject(parameters) + + " ,startSiteName=" + mCurrentTaskAndOrder?.startSite?.siteName + + " ,endSiteName=" + mCurrentTaskAndOrder?.endSite?.siteName + + "isRestartAutopilot = " + isRestartAutopilot + ) + TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent( + isRestartAutopilot, + false, + mCurrentTaskAndOrder!!.startSite!!.siteName, + mCurrentTaskAndOrder!!.endSite!!.siteName, + mCurrentTaskAndOrder!!.lineId.toLong(), + "" // todo 这里原来传的是订单号, 现在是任务没有订单号 + ) + if (mControllerStatusCallback != null) { + mControllerStatusCallback!!.startOpenAutopilot() + } } private fun initAutopilotControlParameters(): AutopilotControlParameters? { @@ -449,32 +467,35 @@ object TaxiModel { e(SceneConstant.M_TAXI + TAG, "no order or order is empty.") return null } + + if (mCurTaskContrail == null){ + e(SceneConstant.M_TAXI + TAG, "curTaskContrail is empty.") + return null + } + val parameters = AutopilotControlParameters() - // TODO: 重新去构造参数 - -// val startWgsLon = mCurrentTaskAndOrder!!.startSitePoint[0] -// val startWgsLat = mCurrentTaskAndOrder!!.startSitePoint[1] -// val endWgsLon = mCurrentTaskAndOrder!!.endSitePoint[0] -// val endWgsLat = mCurrentTaskAndOrder!!.endSitePoint[1] -// parameters.vehicleType = mCurrentTaskAndOrder!!.businessType -// parameters.startName = -// PinYinUtil.getPinYinHeadChar(mCurrentTaskAndOrder!!.startSiteAddr) // 起点名称拼音首字母大写:科学城B区2号门(KXCBQ2HM) -// parameters.endName = -// PinYinUtil.getPinYinHeadChar(mCurrentTaskAndOrder!!.endSiteAddr) // 终点名称拼音首字母大写:科学城C区三号门(KXCCQSHM) -// parameters.startLatLon = AutoPilotLonLat(startWgsLat, startWgsLon) -// parameters.endLatLon = AutoPilotLonLat(endWgsLat, endWgsLon) -// if (parameters.autoPilotLine == null) { -// parameters.autoPilotLine = AutoPilotLine( -// mCurrentTaskAndOrder!!.lineId, -// mCurrentTaskAndOrder!!.csvFileUrl, mCurrentTaskAndOrder!!.csvFileMd5, -// mCurrentTaskAndOrder!!.txtFileUrl, mCurrentTaskAndOrder!!.txtFileMd5, -// mCurrentTaskAndOrder!!.contrailSaveTime, mCurrentTaskAndOrder!!.carModel, -// mCurrentTaskAndOrder!!.csvFileUrlDPQP, mCurrentTaskAndOrder!!.csvFileMd5DPQP, -// mCurrentTaskAndOrder!!.txtFileUrlDPQP, mCurrentTaskAndOrder!!.txtFileMd5DPQP, -// mCurrentTaskAndOrder!!.contrailSaveTimeDPQP -// ) -// } + val startWgsLon = mCurrentTaskAndOrder!!.startSite!!.gcjLon + val startWgsLat = mCurrentTaskAndOrder!!.startSite!!.gcjLat + val endWgsLon = mCurrentTaskAndOrder!!.endSite!!.gcjLon + val endWgsLat = mCurrentTaskAndOrder!!.endSite!!.gcjLat + parameters.vehicleType = BUSINESSTYPE + parameters.startName = mCurrentTaskAndOrder!!.startSite!!.siteName // 8.10 拼音首字母大写 改为直接传中文 + parameters.endName = mCurrentTaskAndOrder!!.endSite!!.siteName // 8.10 拼音首字母大写 改为直接传中文 + parameters.startLatLon = + AutopilotControlParameters.AutoPilotLonLat(startWgsLat, startWgsLon) + parameters.endLatLon = AutopilotControlParameters.AutoPilotLonLat(endWgsLat, endWgsLon) + if (parameters.autoPilotLine == null) { + parameters.autoPilotLine = AutopilotControlParameters.AutoPilotLine( + mCurrentTaskAndOrder!!.lineId, + mCurTaskContrail!!.csvFileUrl, mCurTaskContrail!!.csvFileMd5, + mCurTaskContrail!!.txtFileUrl, mCurTaskContrail!!.txtFileMd5, + mCurTaskContrail!!.contrailSaveTime, "", // todo 这里原来传的是carModel, 现在没有这个信息, 是否传businessType + mCurTaskContrail!!.csvFileUrlDPQP, mCurTaskContrail!!.csvFileMd5DPQP, + mCurTaskContrail!!.txtFileUrlDPQP, mCurTaskContrail!!.txtFileMd5DPQP, + mCurTaskContrail!!.contrailSaveTimeDPQP + ) + } return parameters } @@ -580,7 +601,7 @@ object TaxiModel { } } - private fun arriveSite(siteId: Int, isArriveEndSite: Boolean) { + private fun arriveSite(siteId: Long, isArriveEndSite: Boolean) { arriveSite(mContext!!,siteId,object : OchCommonServiceCallback{ override fun onSuccess(data: BaseData?) { if (data == null || data.code != 0) return @@ -599,7 +620,7 @@ object TaxiModel { }) } - private fun startTask(lineId: Int) { + private fun startTask(lineId: Long) { startTask(mContext!!, lineId,object : OchCommonServiceCallback{ override fun onSuccess(data: BaseData?) { d(SceneConstant.M_TAXI + TAG,GsonUtil.jsonFromObject(data)) @@ -612,11 +633,14 @@ object TaxiModel { }) } - private fun startPrepareTask(siteId: Int) { + private fun startPrepareTask(siteId: Long) { UiThreadHandler.postDelayed({ prepareTask(mContext!!,siteId,object : OchCommonServiceCallback{ override fun onSuccess(data: PrepareTaskRespBean?) { d(SceneConstant.M_TAXI + TAG,GsonUtil.jsonFromObject(data)) + if (data == null || data.code != 0) return + //去下载轨迹, 下发给工控机下载 + queryTaskContrail(Array(1) { data.lineId }) } override fun onFail(code: Int, msg: String?) { @@ -668,6 +692,26 @@ object TaxiModel { } } + + /** + * 查询当前任务的轨迹 + */ + public fun queryTaskContrail(planningLines: Array?) { + if (planningLines == null) return + CarServiceManager.contrailList(mContext!!, planningLines, + object : OchCommonServiceCallback { + override fun onSuccess(data: ContrailListRespBean?) { + if (data == null || data.code != 0) return + mCurTaskContrail = data.data?.get(0) + } + + override fun onFail(code: Int, msg: String?) { + d(SceneConstant.M_TAXI + TAG, "queryOrderContrails code=$code,msg=$msg") + } + + }) + } + /** * 订单流转debug START */ @@ -720,28 +764,28 @@ object TaxiModel { if (mADASStatusCallback != null) { mADASStatusCallback!!.onAutopilotRunning() } -// if ((mCurrentOrder != null -// && TaxiOrderStatusEnum.OnTheWayToEnd.code == mCurrentOrder!!.orderStatus) -// ) { -// TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent( -// isRestartAutopilot, -// true, -// mCurrentOrder!!.orderStartSite!!.siteName, -// mCurrentOrder!!.orderEndSite!!.siteName, -// mCurrentOrder!!.lineId, -// mCurrentOrder!!.orderNo -// ) -// if (FunctionBuildConfig.isDemoMode) { -// // 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true -// FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true -// setIgnoreConditionDraw(true) -// setIPCDemoMode(true) -// d( -// SceneConstant.M_TAXI + TAG, -// "美化模式-ignore:置为true(到达出发点且已开启自动驾驶)" -// ) -// } -// } + if ((mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null + && TaxiOrderStatusEnum.OnTheWayToEnd.code == mCurrentTaskAndOrder!!.order!!.orderStatus) + ) { + TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent( + isRestartAutopilot, + true, + mCurrentTaskAndOrder!!.order!!.orderStartSite!!.siteName, + mCurrentTaskAndOrder!!.order!!.orderEndSite!!.siteName, + mCurrentTaskAndOrder!!.lineId, + mCurrentTaskAndOrder!!.order!!.orderNo + ) + if (FunctionBuildConfig.isDemoMode) { + // 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true + setIgnoreConditionDraw(true) + setIPCDemoMode(true) + d( + SceneConstant.M_TAXI + TAG, + "美化模式-ignore:置为true(到达出发点且已开启自动驾驶)" + ) + } + } } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { if ((FunctionBuildConfig.isDemoMode && checkCurrentTask() @@ -1014,4 +1058,8 @@ object TaxiModel { fun cleanStation() { setStationPoint(null, null, -1L) } + + fun updateOrderContrails(contrails: MutableList?) { + mOrderContrails = contrails + } } \ No newline at end of file diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt index 6db2d3109e..b80c55d352 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt @@ -5,7 +5,7 @@ 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 -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.NetworkUtils @@ -13,10 +13,11 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.biz.constant.LoginStatusManager 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 import com.mogo.och.taxi.R import com.mogo.och.taxi.base.BaseViewModel import com.mogo.och.taxi.base.IUiIntent -import com.mogo.och.taxi.bean.PrepareTaskRespBean +import com.mogo.och.taxi.bean.ContrailListRespBean import com.mogo.och.taxi.bean.QueryCarOrderByNoRespBean import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean import com.mogo.och.taxi.bean.StartServiceRespBean @@ -24,6 +25,7 @@ import com.mogo.och.taxi.constant.TaxiOrderStatusEnum import com.mogo.och.taxi.constant.TaxiUnmannedConst import com.mogo.och.taxi.constant.TaxtServingStatusManager import com.mogo.och.taxi.network.CarServiceManager +import com.mogo.och.taxi.network.CarServiceManager.contrailList import com.mogo.och.taxi.network.CarServiceManager.queryCarOrderByOrderNo import com.mogo.och.taxi.ui.unmanned.TaskAndOrderUiState import com.mogo.och.taxi.ui.unmanned.UnmannedIntent @@ -90,6 +92,13 @@ class TaxiUnmannedViewModel : BaseViewModel(){ TaxiModel.loginService!!.queryLoginStatusByNet() //需要将虚拟任务停掉, 虚拟任务会再开始接单后获取新的 updateUntruthTask(null) + + if (mCurrentTaskAndOrder != null){ + VoiceNotice.showNotice("暂停接单啦!要完成当前订单哦") + }else{ + VoiceNotice.showNotice("暂停接单啦") + } + } override fun onError() { @@ -114,6 +123,7 @@ class TaxiUnmannedViewModel : BaseViewModel(){ override fun onSuccess(data: StartServiceRespBean?) { if (data == null || data.code != 0) return TaxiModel.loginService!!.queryLoginStatusByNet() + VoiceNotice.showNotice("开始接单啦") //虚拟任务要开启到站围栏 updateUntruthTask(data.data) } @@ -139,11 +149,11 @@ class TaxiUnmannedViewModel : BaseViewModel(){ CarServiceManager.orderCompleted(AbsMogoApplication.getApp().applicationContext, mCurrentTaskAndOrder!!.order!!.orderNo,object : OchCommonServiceCallback{ override fun onSuccess(data: BaseData?) { -// TODO("Not yet implemented") + d(SceneConstant.M_TAXI + TAG, "orderCompleted() = onSuccess") } override fun onFail(code: Int, msg: String?) { -// TODO("Not yet implemented") + d(SceneConstant.M_TAXI + TAG, "orderCompleted() $code $msg") } }) } @@ -154,11 +164,11 @@ class TaxiUnmannedViewModel : BaseViewModel(){ CarServiceManager.jumpPassengerCheck(AbsMogoApplication.getApp().applicationContext, mCurrentTaskAndOrder!!.order!!.orderNo,object : OchCommonServiceCallback{ override fun onSuccess(data: BaseData?) { -// TODO("Not yet implemented") + d(SceneConstant.M_TAXI + TAG, "jumpPassengerCheckDone() = onSuccess") } override fun onFail(code: Int, msg: String?) { -// TODO("Not yet implemented") + d(SceneConstant.M_TAXI + TAG, "jumpPassengerCheckDone() $code $msg") } }) } @@ -202,7 +212,7 @@ class TaxiUnmannedViewModel : BaseViewModel(){ } private fun startOrStopOrderLoop(start: Boolean) { - CallerLogger.d(SceneConstant.M_TAXI + TAG, "startOrStopOrderLoop() $start") + d(SceneConstant.M_TAXI + TAG, "startOrStopOrderLoop() $start") if (start) { startInAndWaitCurrentTaskLoop() } else { @@ -223,15 +233,12 @@ class TaxiUnmannedViewModel : BaseViewModel(){ if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.equals(result)) return if (result!!.endSite == null && result.order == null){ + mCurrentTaskAndOrder = null updateNoTaskAndOrderUi() + TaxiModel.updateCurrentTaskAndOrder(null) } - if ((mCurrentTaskAndOrder !== null && mCurrentTaskAndOrder!!.order !== null - && result!!.order === null) - || (mCurrentTaskAndOrder !== null && mCurrentTaskAndOrder!!.order !== null - && result!!.order !== null && mCurrentTaskAndOrder!!.order!!.orderNo != - result!!.order!!.orderNo) - ) { + if (result.order == null && mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order!= null) { //本地根据订单 orderNo 去查询下(乘客取消订单) queryCurrentOrderStatusByNo(mCurrentTaskAndOrder!!.order!!.orderNo) return @@ -239,15 +246,42 @@ class TaxiUnmannedViewModel : BaseViewModel(){ mCurrentTaskAndOrder = result - TaxiModel.updateCurrentTaskAndOrder(result) + //根据lineId集合去查轨迹集合 + if (result.order != null){ + queryOrderContrails(result.order!!.planningLines) + } - TaxiModel.updateNativeCurrentOrder(result) + TaxiModel.updateCurrentTaskAndOrder(result) updateTaskAndOrderUi() } override fun onFail(code: Int, msg: String?) { - CallerLogger.d(TAG, "queryCurrentTaskOnce = $code, $msg") + d(TAG, "queryCurrentTaskOnce = $code, $msg") + } + + }) + } + + /** + * 查询接驾/送驾任务轨迹集合 + * 注: 运营单刚来的时候, 有可能还在运行一个演练单, 要先跑完演练单才跑运营单 + */ + private fun queryOrderContrails(planningLines: Array?) { + if (planningLines == null) return + contrailList(mContext,planningLines, + object : OchCommonServiceCallback{ + override fun onSuccess(data: ContrailListRespBean?) { + if (data == null || data.code != 0) return + val contrails = data.data + if (mCurrentTaskAndOrder != null){ + TaxiModel.updateOrderContrails(contrails) + TaxiModel.queryTaskContrail(Array(1) {mCurrentTaskAndOrder!!.lineId}) + } + } + + override fun onFail(code: Int, msg: String?) { + d(SceneConstant.M_TAXI + TAG, "queryOrderContrails code=$code,msg=$msg") } }) @@ -259,12 +293,13 @@ class TaxiUnmannedViewModel : BaseViewModel(){ override fun onSuccess(data: QueryCarOrderByNoRespBean?) { if (data != null && data.code != 0) return if (data!!.orderStatus == TaxiOrderStatusEnum.Cancel.code){ + VoiceNotice.showNotice("乘客已经取消") updateNoTaskAndOrderCancelUi() } } override fun onFail(code: Int, msg: String?) { -// TODO("Not yet implemented") + d(SceneConstant.M_TAXI + TAG, "queryCurrentOrderStatusByNo() code=$code,msg=$msg") } }) diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/network/CarServiceManager.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/network/CarServiceManager.kt index dbb08b63f9..6abfc6f8d9 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/network/CarServiceManager.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/network/CarServiceManager.kt @@ -66,7 +66,7 @@ object CarServiceManager { */ @JvmStatic fun startTask( - context: Context, lineId: Int, + context: Context, lineId: Long, callback: OchCommonServiceCallback? ) { mOCHTaxiServiceApi.startTask( @@ -80,7 +80,7 @@ object CarServiceManager { */ @JvmStatic fun arriveSite( - context: Context, siteId: Int, + context: Context, siteId: Long, callback: OchCommonServiceCallback? ) { mOCHTaxiServiceApi.arriveSite( @@ -94,7 +94,7 @@ object CarServiceManager { */ @JvmStatic fun prepareTask( - context: Context, siteId: Int, + context: Context, siteId: Long, callback: OchCommonServiceCallback? ) { mOCHTaxiServiceApi.prepareTask( @@ -164,7 +164,7 @@ object CarServiceManager { */ @JvmStatic fun contrailList( - context: Context, linIds: MutableList, + context: Context, linIds: Array, callback: OchCommonServiceCallback? ) { mOCHTaxiServiceApi.contrailList( diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java index b1340f15e5..44952b3790 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java @@ -189,8 +189,6 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS public void loginSuccess(DriverStatusQueryRespBean data) { //设置 接单状态 TaxtServingStatusManager.setOpenOrderStatus(data.data.servingStatus); - //设置 是否启动订单轮训 -// TaxiModel.INSTANCE.startOrStopOrderLoop(); // 设置当前用户角色 String role = ""; diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt index 98a586e0c9..85f3f8f73c 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt @@ -132,13 +132,18 @@ class TaxiBeingTaskFragment : BaseFragment(), } is TaskAndOrderUiState.ORDERCANCEL -> { - // TODO 任务要跑完, 更新btn: 乘客已取消 + updateOrderCancelUi(state.isCancel) } } } } } + private fun updateOrderCancelUi(isCancel: Boolean) { + taskTypeTv.text = resources.getString(R.string.passenger_cancel_order) + taskTypeTv.background = resources.getDrawable(R.drawable.task_cancel_type_btn_bg,null) + } + private fun updateUntruthTask(untruthTask: StartServiceRespBean.Result?) { if (untruthTask == null) return updateUntruthTaskView() @@ -614,7 +619,7 @@ class TaxiBeingTaskFragment : BaseFragment(), startOrEndService() } else if (v.id == cancelOrder.id) { if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null){ - TaxiOrderCancelDialog(mTaxiFragment, mActivity, + TaxiOrderCancelDialog(mActivity, mCurrentTaskAndOrder!!.order!!.orderNo,mCurrentTaskAndOrder!!.order!!.orderStatus).show() } } else if (v.id == naviToStart.id) { diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiOrderCancelDialog.java b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiOrderCancelDialog.java index b584f1d210..547f4239bc 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiOrderCancelDialog.java +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiOrderCancelDialog.java @@ -47,7 +47,7 @@ public class TaxiOrderCancelDialog extends AlertDialog implements View.OnClickLi private String[] mContentArrays; private String mOrderNo; - protected TaxiOrderCancelDialog(TaxiFragment fragment, Context context, String orderNo, int orderStatus) { + protected TaxiOrderCancelDialog(Context context, String orderNo, int orderStatus) { super(context,R.style.OrderCancelDialog); mOrderNo = orderNo; this.mOrderStatus = orderStatus; @@ -56,12 +56,6 @@ public class TaxiOrderCancelDialog extends AlertDialog implements View.OnClickLi } private void initReasonArray() { - if (1 == mOrderStatus) { - mContentArrays = new String[]{TaxiOrderCancelReasons.BookPassengerCancel.getMsg(), TaxiOrderCancelReasons.CarBroken.getMsg(), - TaxiOrderCancelReasons.BookJourneyConflict.getMsg(), TaxiOrderCancelReasons.BatteryLow.getMsg(), - TaxiOrderCancelReasons.BookOther.getMsg()}; - return; - } TaxiOrderStatusEnum ochStatus = TaxiOrderStatusEnum.valueOf(mOrderStatus); switch (ochStatus) { case OnTheWayToStart: diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java index 2c9f889e04..459d89751d 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java @@ -6,8 +6,15 @@ 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.ContrailListRespBean; +import com.mogo.och.taxi.bean.OrderDetail; +import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean; +import com.mogo.och.taxi.bean.Site; +import com.mogo.och.taxi.constant.TaskStatusEnum; import com.mogo.och.taxi.constant.TaxiUnmannedConst; +import com.mogo.och.taxi.model.TaxiModel; +import java.util.List; import java.util.concurrent.TimeUnit; import io.reactivex.Observable; @@ -35,7 +42,7 @@ public class TaxiTrajectoryManager { private AutopilotControlParameters.AutoPilotLine mAutoPilotLine = null; private Disposable mSendReqDisposable = null; - private String mPrevOrderNo = ""; + private String mPrevTaskLineId = ""; public TaxiTrajectoryManager() { mAutoPilotLine = new AutopilotControlParameters.AutoPilotLine(-1, @@ -47,19 +54,19 @@ public class TaxiTrajectoryManager { * 同步订单信息 */ public void syncTrajectoryInfo() { -// OrderQueryRespBean.Result orderInfo = TaxiModel.INSTANCE.getCurrentOrder(); -// if (orderInfo == null || orderInfo.orderStatus >= TaxiOrderStatusEnum.OnTheWayToEnd.getCode()) { -// CallerLogger.INSTANCE.d(M_TAXI + TAG, "syncTrajectoryInfo() stop."); -// stopTrajReqLoop(); -// } else { -// if (mPrevOrderNo.equals(orderInfo.orderNo)) { -// CallerLogger.INSTANCE.d(M_TAXI + TAG, "syncTrajectoryInfo() 重复订单."); -// } else { -// mPrevOrderNo = orderInfo.orderNo; -// CallerLogger.INSTANCE.d(M_TAXI + TAG, "syncTrajectoryInfo() start."); -// startTrajReqLoop(); -// } -// } + QueryCurrentTaskRespBean.Result taskAndOrder = TaxiModel.INSTANCE.getCurTaskAndOrder(); + if (taskAndOrder == null || taskAndOrder.getCurrentStatus() >= TaskStatusEnum.StartTask.getCode()) { + CallerLogger.INSTANCE.d(M_TAXI + TAG, "syncTrajectoryInfo() stop."); + stopTrajReqLoop(); + } else { + if (mPrevTaskLineId.equals(String.valueOf(taskAndOrder.getLineId()))) { + CallerLogger.INSTANCE.d(M_TAXI + TAG, "syncTrajectoryInfo() 重复订单."); + } else { + mPrevTaskLineId = String.valueOf(taskAndOrder.getLineId()); + CallerLogger.INSTANCE.d(M_TAXI + TAG, "syncTrajectoryInfo() start."); + startTrajReqLoop(); + } + } } /** @@ -96,33 +103,59 @@ public class TaxiTrajectoryManager { } private void setupAutoPilotLine() { -// OrderQueryRespBean.Result order = TaxiModel.INSTANCE.getCurrentOrder(); -// if (order == null) { -// CallerLogger.INSTANCE.e(M_TAXI + TAG, -// "setupAutoPilotLine(): orderInfo is null."); -// return; -// } else { -// if (mAutoPilotLine == null) { -// mAutoPilotLine = new AutopilotControlParameters.AutoPilotLine(order.lineId, -// order.csvFileUrl, order.csvFileMd5, order.txtFileUrl, order.txtFileMd5, -// order.contrailSaveTime, order.carModel, -// order.csvFileUrlDPQP, order.csvFileMd5DPQP, order.txtFileUrlDPQP, order.txtFileMd5DPQP, -// order.contrailSaveTimeDPQP); -// } else { -// mAutoPilotLine.setLineId(order.lineId); -// mAutoPilotLine.setTrajUrl(order.csvFileUrl); -// mAutoPilotLine.setTrajMd5(order.csvFileMd5); -// mAutoPilotLine.setStopUrl(order.txtFileUrl); -// mAutoPilotLine.setStopMd5(order.txtFileMd5); -// mAutoPilotLine.setTimestamp(order.contrailSaveTime); -// mAutoPilotLine.setVehicleModel(order.carModel); -// mAutoPilotLine.setTrajUrl_dpqp(order.csvFileUrlDPQP); -// mAutoPilotLine.setTrajMd5_dpqp(order.csvFileMd5DPQP); -// mAutoPilotLine.setStopUrl_dpqp(order.txtFileUrlDPQP); -// mAutoPilotLine.setStopMd5_dpqp(order.txtFileMd5DPQP); -// mAutoPilotLine.setTimestamp_dpqp(order.contrailSaveTimeDPQP); -// } -// } + QueryCurrentTaskRespBean.Result taskAndOrder = TaxiModel.INSTANCE.getCurTaskAndOrder(); + + if (taskAndOrder == null || taskAndOrder.getEndSite() == null) { + CallerLogger.INSTANCE.e(M_TAXI + TAG, + "setupAutoPilotLine(): taskAndOrder or taskAndOrder.getEndSite() is null."); + } else { + /** + * 主要加载和预加载轨迹方案 + * 1、获取当前跑的任务的lineId 2、当前任务lineId是否在运营单的轨迹集合里 + * 3、存在, 通知下载加载当前任务的轨迹以及预加载lineId在集合对应的下一个lineId对应的轨迹 + * 4、若不存在,说明当前的执行的任务是与订单无关的演练任务,通知下载加载当前任务的轨迹以及预加载订单轨迹集合的第一个 + */ + + final ContrailListRespBean.Result curTaskContrail = TaxiModel.INSTANCE.getCurTaskContrail(); + if (curTaskContrail == null) return; + + long curLineId = taskAndOrder.getLineId(); + final List orderContrails = TaxiModel.INSTANCE.getCurOrderContrails(); + final OrderDetail orderDetail = taskAndOrder.getOrder(); + ContrailListRespBean.Result preloadContrail = null; //预加载的轨迹 + + if (orderDetail != null && orderContrails != null && orderContrails.size() != 0 ){ + if (orderContrails.contains(curLineId)){ //预加载轨迹是curLineId索引的下一个 + int index = orderContrails.indexOf(curLineId); + if (orderContrails.size()-1 >= index){ + preloadContrail = orderContrails.get(index); + } + }else {//预加载轨迹直接是集合第一个 + preloadContrail = orderContrails.get(0); + } + } + + if (mAutoPilotLine == null) { + mAutoPilotLine = new AutopilotControlParameters.AutoPilotLine(taskAndOrder.getLineId(), + curTaskContrail.getCsvFileUrl(), curTaskContrail.getCsvFileMd5(), curTaskContrail.getTxtFileUrl(), + curTaskContrail.getTxtFileMd5(), curTaskContrail.getContrailSaveTime(), "",//todo curTaskContrail.getCarModel() + curTaskContrail.getCsvFileUrlDPQP(), curTaskContrail.getCsvFileMd5DPQP(), curTaskContrail.getTxtFileUrlDPQP(), + curTaskContrail.getTxtFileMd5DPQP(), curTaskContrail.getContrailSaveTimeDPQP()); + } else { + mAutoPilotLine.setLineId(taskAndOrder.getLineId()); + mAutoPilotLine.setTrajUrl(curTaskContrail.getCsvFileUrl()); + mAutoPilotLine.setTrajMd5(curTaskContrail.getCsvFileMd5()); + mAutoPilotLine.setStopUrl(curTaskContrail.getTxtFileUrl()); + mAutoPilotLine.setStopMd5(curTaskContrail.getTxtFileMd5()); + mAutoPilotLine.setTimestamp(curTaskContrail.getContrailSaveTime()); + mAutoPilotLine.setVehicleModel("");// todo curTaskContrail.getCarModel() + mAutoPilotLine.setTrajUrl_dpqp(curTaskContrail.getCsvFileUrlDPQP()); + mAutoPilotLine.setTrajMd5_dpqp(curTaskContrail.getCsvFileMd5DPQP()); + mAutoPilotLine.setStopUrl_dpqp(curTaskContrail.getTxtFileUrlDPQP()); + mAutoPilotLine.setStopMd5_dpqp(curTaskContrail.getTxtFileMd5DPQP()); + mAutoPilotLine.setTimestamp_dpqp(curTaskContrail.getContrailSaveTimeDPQP()); + } + } } private void clearAutoPilotLine() { @@ -154,7 +187,7 @@ public class TaxiTrajectoryManager { .observeOn(AndroidSchedulers.mainThread()) .subscribe(aLong -> { if (aLong > TaxiUnmannedConst.LOOP_SEND_TRAJ_TIMES) { - mPrevOrderNo = ""; //重发超时后将mPrevOrderNo置空,这样订单进入下个状态时还可以重发 + mPrevTaskLineId = ""; //重发超时后将mPrevOrderNo置空,这样订单进入下个状态时还可以重发 stopTrajReqLoop(); return; } diff --git a/app/config/urlConfig.json b/app/config/urlConfig.json index 56b965d8e9..b0d35fa87d 100644 --- a/app/config/urlConfig.json +++ b/app/config/urlConfig.json @@ -124,7 +124,7 @@ }, "saas": { "qa": { - "och_url": "http://10.0.0.182:30560", + "och_url": "https://mogogo-driver-qa.zhidaozhixing.com", "shuttle_url": "https://mogogo-driver-qa.zhidaozhixing.com", "passport_url": "https://mogogo-driver-qa.zhidaozhixing.com/arch/passport/", "socket_base_url": "https://mogogo-driver-qa.zhidaozhixing.com/arch/push/",