[charter m1] 轨迹下载修复
This commit is contained in:
@@ -9,6 +9,9 @@ import com.mogo.eagle.core.data.BaseData
|
||||
data class QueryRoutesResponse(var data: Result) : BaseData(){
|
||||
|
||||
data class Result(
|
||||
|
||||
|
||||
|
||||
var csvFileUrl : String = "" ,
|
||||
|
||||
var csvFileMd5 : String = "" ,//轨迹文件md5,默认“”
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.magic.mogo.och.charter;
|
||||
package com.magic.mogo.och.charter.manager;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.magic.mogo.och.charter
|
||||
package com.magic.mogo.och.charter.manager
|
||||
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
@@ -0,0 +1,210 @@
|
||||
package com.magic.mogo.och.charter.manager
|
||||
|
||||
import com.magic.mogo.och.charter.constant.CharterConst
|
||||
import com.magic.mogo.och.charter.model.DriverM1Model.Companion.get
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLine
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.sendTrajectoryDownloadReq
|
||||
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.GsonUtils
|
||||
import com.zhidao.socket.utils.LoginStatusUtil
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
import io.reactivex.functions.Function
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import mogo_msg.MogoReportMsg.MogoReportMessage
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
/**
|
||||
* Bus轨迹管理:给MEC下发用于轨迹下载的信息
|
||||
* Created on 2022/6/23
|
||||
*/
|
||||
object CharterTrajectoryManager {
|
||||
|
||||
private const val TAG = "CharterTrajectoryManager"
|
||||
private var mAutoPilotLine: AutoPilotLine? = null
|
||||
private var mLineId = 0
|
||||
private var mSendReqDisposable: Disposable? = null
|
||||
|
||||
/**
|
||||
* 同步Bus路线信息
|
||||
*/
|
||||
fun syncTrajectoryInfo(lineId: Int) {
|
||||
mLineId = lineId
|
||||
val routesResult = get().getBusRoutesResult()
|
||||
if (LoginStatusUtil.isLogin() && routesResult != null) {
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "syncTrajectoryInfo() start.")
|
||||
startTrajReqLoop()
|
||||
} else {
|
||||
// 无路线信息or当前未在始发站
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "syncTrajectoryInfo() stop.")
|
||||
stopTrajReqLoop()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 接口MEC反馈的常规信息(MAP v2.5.0新增轨迹相关信息)
|
||||
* @param guardianInfo
|
||||
*/
|
||||
fun onAutopilotGuardian(guardianInfo: MogoReportMessage?) {
|
||||
if (guardianInfo == null || !guardianInfo.hasCode()) return
|
||||
if ("ISYS_INIT_TRAJECTORY_START" == guardianInfo.code) {
|
||||
// 1. 轨迹管理_轨迹开始下载(本地已有对应轨迹也触发)
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() 轨迹开始下载")
|
||||
// ToastUtils.showShort("轨迹开始下载");
|
||||
stopTrajReqLoop()
|
||||
} else if ("ISYS_INIT_TRAJECTORY_SUCCESS" == guardianInfo.code) {
|
||||
// 2. 轨迹管理_轨迹下载成功(本地已有对应轨迹也触发)
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() 轨迹下载成功")
|
||||
// ToastUtils.showShort("轨迹下载成功");
|
||||
stopTrajReqLoop()
|
||||
} else if ("ISYS_INIT_TRAJECTORY_FAILURE" == guardianInfo.code) {
|
||||
// 3. 轨迹管理_轨迹下载失败,本地无对应轨迹
|
||||
d(
|
||||
SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() " +
|
||||
"轨迹下载失败,本地无对应轨迹"
|
||||
)
|
||||
// ToastUtils.showShort("轨迹下载失败,本地无对应轨迹");
|
||||
} else if ("ISYS_INIT_TRAJECTORY_WARNING" == guardianInfo.code) {
|
||||
// 4. 轨迹管理_轨迹下载失败,本地有对应轨迹,认为成功
|
||||
d(
|
||||
SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() " +
|
||||
"轨迹下载失败,本地有对应轨迹,认为成功"
|
||||
)
|
||||
// ToastUtils.showShort("轨迹下载失败,本地有对应轨迹,认为成功");
|
||||
} else if ("ISYS_INIT_TRAJECTORY_TIMEOUT" == guardianInfo.code) {
|
||||
// 5. 轨迹管理_轨迹下载超时
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() 轨迹下载超时")
|
||||
// ToastUtils.showShort("轨迹下载超时");
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupAutoPilotLine() {
|
||||
val routesResult = get().getBusRoutesResult()
|
||||
if (routesResult == null) {
|
||||
e(
|
||||
SceneConstant.M_CHARTER_D + TAG,
|
||||
"setupAutoPilotLine(): routesResult is null."
|
||||
)
|
||||
return
|
||||
} else {
|
||||
if (mAutoPilotLine == null) {
|
||||
mAutoPilotLine = AutoPilotLine(
|
||||
mLineId.toLong(),
|
||||
routesResult.csvFileUrl, routesResult.csvFileMd5,
|
||||
routesResult.txtFileUrl, routesResult.txtFileMd5,
|
||||
routesResult.contrailSaveTime, routesResult.carModel,
|
||||
routesResult.csvFileUrlDPQP, routesResult.csvFileMd5DPQP,
|
||||
routesResult.txtFileUrlDPQP, routesResult.txtFileMd5DPQP,
|
||||
routesResult.contrailSaveTimeDPQP
|
||||
)
|
||||
} else {
|
||||
mAutoPilotLine!!.lineId = mLineId.toLong()
|
||||
mAutoPilotLine!!.trajUrl = routesResult.csvFileUrl
|
||||
mAutoPilotLine!!.trajMd5 = routesResult.csvFileMd5
|
||||
mAutoPilotLine!!.stopUrl = routesResult.txtFileUrl
|
||||
mAutoPilotLine!!.stopMd5 = routesResult.txtFileMd5
|
||||
mAutoPilotLine!!.timestamp = routesResult.contrailSaveTime
|
||||
mAutoPilotLine!!.vehicleModel = routesResult.carModel
|
||||
mAutoPilotLine!!.trajUrl_dpqp = routesResult.csvFileUrlDPQP
|
||||
mAutoPilotLine!!.trajMd5_dpqp = routesResult.csvFileMd5DPQP
|
||||
mAutoPilotLine!!.stopUrl_dpqp = routesResult.txtFileUrlDPQP
|
||||
mAutoPilotLine!!.stopMd5_dpqp = routesResult.txtFileMd5DPQP
|
||||
mAutoPilotLine!!.timestamp_dpqp = routesResult.contrailSaveTimeDPQP
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun clearAutoPilotLine() {
|
||||
if (mAutoPilotLine == null) return
|
||||
mAutoPilotLine!!.lineId = -1
|
||||
mAutoPilotLine!!.trajUrl = ""
|
||||
mAutoPilotLine!!.trajMd5 = ""
|
||||
mAutoPilotLine!!.stopUrl = ""
|
||||
mAutoPilotLine!!.stopMd5 = ""
|
||||
mAutoPilotLine!!.timestamp = 0
|
||||
mAutoPilotLine!!.vehicleModel = ""
|
||||
mAutoPilotLine!!.trajUrl_dpqp = ""
|
||||
mAutoPilotLine!!.trajMd5_dpqp = ""
|
||||
mAutoPilotLine!!.stopUrl_dpqp = ""
|
||||
mAutoPilotLine!!.stopMd5_dpqp = ""
|
||||
mAutoPilotLine!!.timestamp_dpqp = 0
|
||||
}
|
||||
|
||||
private fun startTrajReqLoop() {
|
||||
if (mSendReqDisposable != null && !mSendReqDisposable!!.isDisposed) {
|
||||
return
|
||||
}
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "startTrajReqLoop()")
|
||||
setupAutoPilotLine()
|
||||
mSendReqDisposable = Observable.interval(
|
||||
CharterConst.LOOP_DELAY,
|
||||
CharterConst.LOOP_PERIOD_10S, TimeUnit.MILLISECONDS
|
||||
)
|
||||
.map(Function { aLong: Long -> aLong + 1 })
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe { aLong: Long ->
|
||||
if (aLong > CharterConst.LOOP_SEND_TRAJ_TIMES) {
|
||||
stopTrajReqLoop()
|
||||
return@subscribe
|
||||
}
|
||||
d(
|
||||
SceneConstant.M_CHARTER_D + TAG,
|
||||
"loop sendTrajectoryReq: $aLong"
|
||||
)
|
||||
sendTrajectoryReq()
|
||||
}
|
||||
}
|
||||
|
||||
fun stopTrajReqLoop() {
|
||||
if (mSendReqDisposable != null) {
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "stopTrajReqLoop()")
|
||||
mSendReqDisposable!!.dispose()
|
||||
mSendReqDisposable = null
|
||||
clearAutoPilotLine()
|
||||
}
|
||||
}
|
||||
|
||||
private fun sendTrajectoryReq() {
|
||||
if (mAutoPilotLine == null) {
|
||||
e(SceneConstant.M_CHARTER_D + TAG, "sendTrajectoryReq(): mAutoPilotLine is null!!!")
|
||||
return
|
||||
}
|
||||
|
||||
// TODO: 2022/6/24
|
||||
// test1
|
||||
// mAutoPilotLine.setLineId(148);
|
||||
// mAutoPilotLine.setTrajUrl("http://file-qa.zhidaozhixing.com/fileServer/upload/downloadFileStream?key=fileServer/online_car_hailing/e27c20c2da32481021d934c3ef084536/traj_148.csv");
|
||||
// mAutoPilotLine.setTrajMd5("e27c20c2da32481021d934c3ef084536");
|
||||
// mAutoPilotLine.setStopUrl("http://file-qa.zhidaozhixing.com/fileServer/upload/downloadFileStream?key=fileServer/online_car_hailing/6224c9dd2c0e2bd990c6482c0464de45/stop_148.txt");
|
||||
// mAutoPilotLine.setStopMd5("6224c9dd2c0e2bd990c6482c0464de45");
|
||||
// mAutoPilotLine.setTimestamp(1654596000000L); //20220607 18:00
|
||||
// mAutoPilotLine.setVehicleModel("红旗H9");
|
||||
|
||||
// test2
|
||||
// mAutoPilotLine.setLineId(148);
|
||||
// mAutoPilotLine.setTrajUrl("http://file-qa.zhidaozhixing.com/fileServer/upload/downloadFileStream?key=fileServer/online_car_hailing/8654497cf918be461a59c7ad8e22920d/traj_148.csv");
|
||||
// mAutoPilotLine.setTrajMd5("8654497cf918be461a59c7ad8e22920d");
|
||||
// mAutoPilotLine.setStopUrl("http://file-qa.zhidaozhixing.com/fileServer/upload/downloadFileStream?key=fileServer/online_car_hailing/1bb098b244922649bf3e7bada0d3950f/stop_148.txt");
|
||||
// mAutoPilotLine.setStopMd5("1bb098b244922649bf3e7bada0d3950f");
|
||||
// mAutoPilotLine.setTimestamp(1654761600000L); //20220609 16:00
|
||||
// mAutoPilotLine.setVehicleModel("红旗H9");
|
||||
sendTrajectoryDownloadReq(mAutoPilotLine!!)
|
||||
d(
|
||||
SceneConstant.M_CHARTER_D + TAG,
|
||||
"sendTrajectoryReq(): "
|
||||
+ GsonUtils.toJson(mAutoPilotLine)
|
||||
)
|
||||
}
|
||||
|
||||
init {
|
||||
mAutoPilotLine = AutoPilotLine(
|
||||
-1,
|
||||
"", "", "", "", 0, "",
|
||||
"", "", "", "", 0
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -6,11 +6,11 @@ import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.alibaba.android.arouter.utils.TextUtils
|
||||
import com.amap.api.maps.model.LatLng
|
||||
import com.elegant.network.utils.GsonUtil
|
||||
import com.magic.mogo.och.charter.CharterAnalyticsManager
|
||||
import com.magic.mogo.och.charter.CharterSendTripInfoManager
|
||||
import com.magic.mogo.och.charter.CharterSendTripInfoManager.ARRIVE_STATION
|
||||
import com.magic.mogo.och.charter.CharterSendTripInfoManager.END_TRIP
|
||||
import com.magic.mogo.och.charter.CharterSendTripInfoManager.START_TRIP
|
||||
import com.magic.mogo.och.charter.manager.CharterAnalyticsManager
|
||||
import com.magic.mogo.och.charter.manager.CharterSendTripInfoManager
|
||||
import com.magic.mogo.och.charter.manager.CharterSendTripInfoManager.ARRIVE_STATION
|
||||
import com.magic.mogo.och.charter.manager.CharterSendTripInfoManager.END_TRIP
|
||||
import com.magic.mogo.och.charter.manager.CharterSendTripInfoManager.START_TRIP
|
||||
import com.magic.mogo.och.charter.R
|
||||
import com.magic.mogo.och.charter.bean.CheckOrderCountDownResponse
|
||||
import com.magic.mogo.och.charter.bean.QueryBusinessStatusResponse
|
||||
@@ -20,6 +20,7 @@ import com.magic.mogo.och.charter.callback.ChangeDestCallback
|
||||
import com.magic.mogo.och.charter.callback.DriverM1OrderCallback
|
||||
import com.magic.mogo.och.charter.callback.IDriverM1ControllerStatusCallback
|
||||
import com.magic.mogo.och.charter.constant.CharterConst
|
||||
import com.magic.mogo.och.charter.manager.CharterTrajectoryManager
|
||||
import com.magic.mogo.och.charter.net.DriverM1ServiceManager
|
||||
import com.mogo.aicloud.services.socket.IMogoOnMessageListener
|
||||
import com.mogo.commons.module.intent.IMogoIntentListener
|
||||
@@ -701,6 +702,7 @@ class DriverM1Model {
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "checkoutContrail-=="
|
||||
+ GsonUtils.toJson(data.data))
|
||||
mCurrentRoute = data.data
|
||||
CharterTrajectoryManager.syncTrajectoryInfo(mCurrentOrder?.lineId!!)
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
@@ -714,4 +716,10 @@ class DriverM1Model {
|
||||
if (isArrivedStation) return
|
||||
onArriveAt()
|
||||
}
|
||||
|
||||
fun getBusRoutesResult(): QueryRoutesResponse.Result?{
|
||||
if (mCurrentOrder == null) return null
|
||||
|
||||
return mCurrentRoute
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
package com.magic.mogo.och.charter.presenter
|
||||
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import com.magic.mogo.och.charter.CharterAnalyticsManager
|
||||
import com.magic.mogo.och.charter.R
|
||||
import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse
|
||||
import com.magic.mogo.och.charter.callback.ChangeDestCallback
|
||||
import com.magic.mogo.och.charter.callback.DriverM1OrderCallback
|
||||
import com.magic.mogo.och.charter.callback.IDriverM1ControllerStatusCallback
|
||||
import com.magic.mogo.och.charter.fragment.DriverM1Fragment
|
||||
import com.magic.mogo.och.charter.manager.CharterTrajectoryManager
|
||||
import com.magic.mogo.och.charter.model.DriverM1Model
|
||||
import com.mogo.commons.mvp.Presenter
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
|
||||
@@ -19,10 +19,12 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
|
||||
import com.mogo.och.common.module.biz.callback.ILoginCallback
|
||||
import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.OPERATION_ROAD_SIDE_TYPE
|
||||
import com.mogo.och.common.module.biz.constant.LoginStatusManager
|
||||
import com.mogo.och.common.module.biz.constant.LoginStatusManager.isLogin
|
||||
import com.mogo.och.common.module.manager.OCHPlanningStopSideStatusManager
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo_msg.MogoReportMsg
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
@@ -66,8 +68,12 @@ class DriverM1Presenter(view: DriverM1Fragment?) :
|
||||
|
||||
override fun loginSuccess(data: DriverStatusQueryRespBean?) {
|
||||
d(SceneConstant.M_BUS + TAG, " loginStatus =" + isLogin())
|
||||
// 查询服务状态
|
||||
DriverM1Model.get().queryCurrentServiceStatus()
|
||||
if(isLogin()){
|
||||
// 查询服务状态
|
||||
DriverM1Model.get().queryCurrentServiceStatus()
|
||||
}else{
|
||||
CharterTrajectoryManager.stopTrajReqLoop()
|
||||
}
|
||||
}
|
||||
|
||||
override fun loginFail(isLogin: Boolean) {
|
||||
@@ -119,6 +125,10 @@ class DriverM1Presenter(view: DriverM1Fragment?) :
|
||||
,context.getString(R.string.last_5_minutes))
|
||||
}
|
||||
|
||||
override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {
|
||||
CharterTrajectoryManager.onAutopilotGuardian(guardianInfo)
|
||||
}
|
||||
|
||||
override fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) {
|
||||
DriverM1Model.get().onAutopilotArriveAtStation()
|
||||
}
|
||||
|
||||
BIN
OCH/mogo-och-charter/src/main/res/drawable-xhdpi/icon_ai_collect.png
Executable file
BIN
OCH/mogo-och-charter/src/main/res/drawable-xhdpi/icon_ai_collect.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 7.4 KiB |
BIN
OCH/mogo-och-charter/src/main/res/drawable-xhdpi/icon_bad_case.png
Executable file
BIN
OCH/mogo-och-charter/src/main/res/drawable-xhdpi/icon_bad_case.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 6.9 KiB |
@@ -273,7 +273,7 @@
|
||||
android:layout_height="@dimen/dp_80"
|
||||
android:layout_centerInParent="true"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/bad_case_selector" />
|
||||
android:src="@drawable/icon_bad_case" />
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
@@ -292,7 +292,7 @@
|
||||
android:layout_height="@dimen/dp_80"
|
||||
android:layout_centerInParent="true"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/ai_collect_selector" />
|
||||
android:src="@drawable/icon_ai_collect" />
|
||||
</RelativeLayout>
|
||||
|
||||
<Button
|
||||
|
||||
Reference in New Issue
Block a user