[fea]
[通用滑动出发]
This commit is contained in:
yangyakun
2024-09-23 21:14:26 +08:00
parent 72223d60c1
commit 6a2fc097fd
13 changed files with 186 additions and 87 deletions

View File

@@ -35,6 +35,7 @@ import com.mogo.och.weaknet.repository.db.repository.TaskSiteDb
import com.mogo.och.weaknet.repository.net.RepositoryManager
import com.mogo.och.weaknet.repository.net.exception.DataException
import com.mogo.och.weaknet.repository.net.impl.shuttlesaas.OrderServiceManager
import io.reactivex.Observable
import io.reactivex.Observer
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
@@ -427,47 +428,28 @@ object LineModel {
}
// 滑动出发
fun leaveStation(){
//开始站点: leaving false->true
LineManager.getStartStation {
if (currentTask != null && currentTask!!.taskId != null) {
currentTask?.let { task ->
if (task.taskId!=null&&task.lineId!=null) {
it.drivingStatus = TaskSiteDataBean.drivingStatusCurrent
it.isLeaving = true
TaskSiteDb.updateLeave(task.taskId!!, it.siteId.toLong(), true)
mBusLinesCallbackMap.forEach {map->
map.value.onLeaveStaionSuccess()
}
OchChainLogManager.writeChainLogDb("滑动出发", "task:${currentTask}__taskId:${currentTask?.taskId}")
// 设置滑动出发任务
LineManager.getLineInfo { lineInfo ->
EventDb.saveEventTaskLeaveSite(
task.taskId!!,
task.lineId!!,
it.siteId.toLong(),
it.seq,
task.taskStartTime,
lineInfo.lineName
)
}
}
}
} else {
mBusLinesCallbackMap.forEach {map->
map.value.onLeaveStaionFail()
}
OchChainLogManager.writeChainLog(
"滑动出发_数据更新_error",
"task:${currentTask}__taskId:${currentTask?.taskId}"
)
fun leaveStation(): Observable<Boolean>? {
LineManager.getStations().first?.let {startStation->
startStation.drivingStatus = TaskSiteDataBean.drivingStatusCurrent
startStation.isLeaving = true
currentTask?.let { task->
return RepositoryManager.leaveStation(
startStation.seq,
startStation.siteId.toLong(),
task.taskId?:0L,
task.lineId?:0L,
task.taskStartTime?:System.currentTimeMillis())
}
}
val (startStation, endStation) = LineManager.getStations()
val changeInfo =
"taskId:${currentTask?.taskId}--lineId:${currentTask?.lineId}--currentStationName:${startStation?.name}--finalNextStationName:${endStation?.name}"
OchChainLogManager.writeChainLog("滑动出发", changeInfo)
return null
}
fun leaveStationSuccess(){
mBusLinesCallbackMap.forEach {map->
map.value.onLeaveStaionSuccess()
}
}
// 到站
fun arrivedStation() {
LineManager.getStations { start, end ->

View File

@@ -32,8 +32,13 @@ import com.mogo.och.common.module.utils.ResourcesUtils
import com.mogo.och.common.module.utils.RxUtils
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.constant.BusConst
import com.mogo.och.weaknet.repository.net.exception.DataException
import com.mogo.och.weaknet.util.BusTrajectoryManager
import com.mogo.och.weaknet.util.ShuttleVoiceManager
import io.reactivex.Observer
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
/**
* @author congtaowang
@@ -209,14 +214,39 @@ object OrderModel {
completeTask()
return
}
isArrivedStation = false
onStartAutopilot()
ThirdDeviceData.leaveStation()
LineModel.leaveStation()
?.subscribeOn(Schedulers.io())
?.observeOn(AndroidSchedulers.mainThread())
?.subscribe(object : Observer<Boolean> {
override fun onSubscribe(d: Disposable) {
d(TAG, "onSubscribe")
}
override fun onError(e: Throwable) {
d(TAG, "onError${e.printStackTrace()}")
if (e is DataException) {
}
}
override fun onComplete() {
d(TAG, "onComplete")
}
override fun onNext(data: Boolean) {
if (data) {
LineModel.leaveStationSuccess()
isArrivedStation = false
onStartAutopilot()
ThirdDeviceData.leaveStation()
updateBusStatus()
}
}
})
updateBusStatus()
}
/**

View File

@@ -87,7 +87,9 @@ object ThirdDeviceData {
//到站
fun arriveStation() {
UiThreadHandler.removeCallbacks(delayedTts)
delayedTts?.let {
UiThreadHandler.removeCallbacks(delayedTts)
}
LineManager.getStationsWithLine { start, end, lineInfo ->
ShuttleVoiceManager.arrivedStationBus(end.name, end.nameKr)
//给bus外屏发送

View File

@@ -1,5 +1,8 @@
package com.mogo.och.weaknet.repository.net
import android.content.Context
import com.mogo.eagle.core.data.BaseData
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
import io.reactivex.Observable
@@ -10,4 +13,6 @@ interface IRepository {
fun queryCanUserTask(lineId:Long): Observable<List<TaskDataBean>?>?
fun startTask(taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable<Boolean>?
fun leaveStation(seq: Int, siteId: Long, taskId: Long, lineId: Long, taskStartTime:Long): Observable<Boolean>?
}

View File

@@ -45,4 +45,9 @@ object RepositoryManager {
return repository.startTask(taskId,lineId,taskTime,lineName)
}
fun leaveStation(seq: Int, siteId: Long, taskId: Long, lineId: Long, taskStartTime:Long
): Observable<Boolean>?{
return repository.leaveStation(seq,siteId,taskId,lineId,taskStartTime)
}
}

View File

@@ -11,12 +11,12 @@ import com.mogo.commons.storage.SharedPrefsMgr;
public class BusUpdateSiteStatusRequest {
public String sn;
public int taskId;
public long taskId;
public int seq;//站点序号
public int siteId;//站点id
public long siteId;//站点id
public long writeVersion; //更新时间戳
public BusUpdateSiteStatusRequest(int taskId, int siteId, int seq, long writeVersion) {
public BusUpdateSiteStatusRequest(long taskId, long siteId, int seq, long writeVersion) {
this.sn = SharedPrefsMgr.getInstance().getSn();
this.seq = seq;
this.siteId = siteId;

View File

@@ -37,5 +37,15 @@ class BusRepository: IRepository {
TODO("Not yet implemented")
}
override fun leaveStation(
seq: Int,
siteId: Long,
taskId: Long,
lineId: Long,
taskStartTime: Long
): Observable<Boolean>? {
TODO("Not yet implemented")
}
}

View File

@@ -122,13 +122,13 @@ object OrderServiceManager {
taskId: Int,
callback: OchCommonServiceCallback<BaseData>?
) {
M_SERVICE.leaveStation(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
BusUpdateSiteStatusRequest(taskId, siteId, seq, System.currentTimeMillis())
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "leaveStation"))
// M_SERVICE.leaveStation(
// MoGoAiCloudClientConfig.getInstance().serviceAppId,
// SharedPrefsMgr.getInstance().token,
// BusUpdateSiteStatusRequest(taskId, siteId, seq, System.currentTimeMillis())
// )
// .transformTry()
// .subscribe(OchCommonSubscribeImpl(context, callback, "leaveStation"))
}
@@ -144,13 +144,13 @@ object OrderServiceManager {
context: Context, seq: Int, siteId: Int, taskId: Int,
callback: OchCommonServiceCallback<BaseData>?
) {
M_SERVICE.arriveSiteStation(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
BusUpdateSiteStatusRequest(taskId, siteId, seq, System.currentTimeMillis())
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "arriveSiteStation"))
// M_SERVICE.arriveSiteStation(
// MoGoAiCloudClientConfig.getInstance().serviceAppId,
// SharedPrefsMgr.getInstance().token,
// BusUpdateSiteStatusRequest(taskId, siteId, seq, System.currentTimeMillis())
// )
// .transformTry()
// .subscribe(OchCommonSubscribeImpl(context, callback, "arriveSiteStation"))
}
@JvmStatic

View File

@@ -37,5 +37,15 @@ class BusSaasRepository: IRepository {
TODO("Not yet implemented")
}
override fun leaveStation(
seq: Int,
siteId: Long,
taskId: Long,
lineId: Long,
taskStartTime: Long
): Observable<Boolean>? {
TODO("Not yet implemented")
}
}

View File

@@ -123,13 +123,13 @@ object OrderServiceManager {
taskId: Int,
callback: OchCommonServiceCallback<BaseData>?
) {
M_SAAS_SERVICE.leaveStation(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
BusUpdateSiteStatusRequest(taskId, siteId, seq, System.currentTimeMillis())
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "leaveStation"))
// M_SAAS_SERVICE.leaveStation(
// MoGoAiCloudClientConfig.getInstance().serviceAppId,
// SharedPrefsMgr.getInstance().token,
// BusUpdateSiteStatusRequest(taskId, siteId, seq, System.currentTimeMillis())
// )
// .transformTry()
// .subscribe(OchCommonSubscribeImpl(context, callback, "leaveStation"))
}
@@ -145,13 +145,13 @@ object OrderServiceManager {
context: Context, seq: Int, siteId: Int, taskId: Int,
callback: OchCommonServiceCallback<BaseData>?
) {
M_SAAS_SERVICE.arriveSiteStation(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
BusUpdateSiteStatusRequest(taskId, siteId, seq, System.currentTimeMillis())
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "arriveSiteStation"))
// M_SAAS_SERVICE.arriveSiteStation(
// MoGoAiCloudClientConfig.getInstance().serviceAppId,
// SharedPrefsMgr.getInstance().token,
// BusUpdateSiteStatusRequest(taskId, siteId, seq, System.currentTimeMillis())
// )
// .transformTry()
// .subscribe(OchCommonSubscribeImpl(context, callback, "arriveSiteStation"))
}

View File

@@ -115,20 +115,20 @@ object OrderServiceManager {
*/
@JvmStatic
fun leaveStation(
context: Context,
seq: Int,
siteId: Int,
taskId: Int,
siteId: Long,
taskId: Long,
writeVersion: Long,
callback: OchCommonServiceCallback<BaseData>?
) {
mService.leaveStation(
): Observable<Boolean>? {
return mService.leaveStation(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
BusUpdateSiteStatusRequest(taskId, siteId, seq,writeVersion)
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "leaveStation"))
).transformTry()
.flatMap(OchCommonNet("leaveStation",false))
.flatMap {
Observable.just(true)
}
}
/**
@@ -140,7 +140,7 @@ object OrderServiceManager {
*/
@JvmStatic
fun arriveSiteStation(
context: Context, seq: Int, siteId: Int, taskId: Int, writeVersion: Long,
context: Context, seq: Int, siteId: Long, taskId: Long, writeVersion: Long,
callback: OchCommonServiceCallback<BaseData>?
) {
mService.arriveSiteStation(

View File

@@ -19,4 +19,14 @@ class ShuttleRepository: IRepository {
return OrderServiceManager.switchLine(taskId)
}
override fun leaveStation(
seq: Int,
siteId: Long,
taskId: Long,
lineId: Long,
taskStartTime: Long
): Observable<Boolean>? {
return OrderServiceManager.leaveStation(seq,siteId,taskId,System.currentTimeMillis())
}
}

View File

@@ -1,13 +1,19 @@
package com.mogo.och.weaknet.repository.net.impl.shuttlesaas
import com.mogo.och.common.module.manager.autopilot.line.LineManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.weaknet.model.LineModel.currentTask
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
import com.mogo.och.weaknet.repository.db.bean.TaskSiteDataBean
import com.mogo.och.weaknet.repository.db.repository.EventDb
import com.mogo.och.weaknet.repository.db.repository.LineDb
import com.mogo.och.weaknet.repository.db.repository.TaskDb
import com.mogo.och.weaknet.repository.db.repository.TaskSiteDb
import com.mogo.och.weaknet.repository.net.IRepository
import io.reactivex.Observable
class ShuttleSaasRepository: IRepository {
class ShuttleSaasRepository : IRepository {
override fun queryCanUseLine(): Observable<List<LineDataBean>?>? {
return LineDb.queryCanUseLine()
@@ -17,8 +23,47 @@ class ShuttleSaasRepository: IRepository {
return TaskDb.queryCanUserTask(lineId)
}
override fun startTask(taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable<Boolean>? {
override fun startTask(
taskId: Long,
lineId: Long,
taskTime: Long,
lineName: String
): Observable<Boolean>? {
return TaskDb.startTask(taskId, lineId, lineName)
}
override fun leaveStation(seq: Int, siteId: Long, taskId: Long, lineId: Long, taskStartTime:Long): Observable<Boolean>? {
return Observable.just(taskId)
.flatMap {
//开始站点: leaving false->true
LineManager.getStartStation {
TaskSiteDb.updateLeave(taskId, it.siteId.toLong(), true)
OchChainLogManager.writeChainLogDb(
"滑动出发",
"task:${currentTask}__taskId:${currentTask?.taskId}"
)
// 设置滑动出发任务
LineManager.getLineInfo { lineInfo ->
EventDb.saveEventTaskLeaveSite(
taskId,
lineId,
it.siteId.toLong(),
it.seq,
taskStartTime,
lineInfo.lineName
)
}
}
val (startStation, endStation) = LineManager.getStations()
val changeInfo =
"taskId:${currentTask?.taskId}--lineId:${currentTask?.lineId}--currentStationName:${startStation?.name}--finalNextStationName:${endStation?.name}"
OchChainLogManager.writeChainLog("滑动出发", changeInfo)
// 开始任务成功
return@flatMap Observable.just(true)
}
}
}