[6.7.0]
[shuttle]
This commit is contained in:
@@ -20,7 +20,7 @@ class OchCommonNet<T:BaseData>(val apiName:String, val writeLog:Boolean) : Funct
|
||||
|
||||
|
||||
init {
|
||||
CallerLogger.e("$flavorTag${OchCommonSubscribeImpl.TAG}", "$apiName: 去请求()")
|
||||
CallerLogger.e("$flavorTag${TAG}", "$apiName: 去请求()")
|
||||
if(writeLog) {
|
||||
OchChainLogManager.writeChainLogNet(false,"接口:${apiName}", "去请求_${tag}")
|
||||
}
|
||||
|
||||
@@ -15,32 +15,23 @@ import com.mogo.och.common.module.manager.autopilot.line.LineManager
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.network.OchCommonSubscribeImpl
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.ResourcesUtils
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import com.mogo.och.shuttle.weaknet.R
|
||||
import com.mogo.och.weaknet.bean.response.BusRoutesResponse
|
||||
import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse
|
||||
import com.mogo.och.weaknet.callback.IBusLinesCallback
|
||||
import com.mogo.och.weaknet.repository.db.bean.ContrailDataBean
|
||||
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.ContraiDb
|
||||
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.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
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import java.net.UnknownHostException
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
|
||||
@@ -284,164 +275,15 @@ object LineModel {
|
||||
|
||||
}
|
||||
|
||||
// 1、从别的数据库加载任务
|
||||
// 2、本地没有从远端恢复任务
|
||||
fun loadStartedTaskAndDefaultInfo() {
|
||||
// 获取正在运行的任务
|
||||
val runningTaskInfo = TaskDb.queryRunningTask()
|
||||
|
||||
if (runningTaskInfo.isNullOrEmpty()) {
|
||||
// 本地没有进行中的任务
|
||||
d(TAG,"没有查询到正在运行的任务")
|
||||
loadServerRuningTask()
|
||||
} else if (runningTaskInfo.size > 1) {
|
||||
// 本地有多条正在进行的任务 需要check event
|
||||
// 1 比对event表 1 清理错误数据 2 加载后台数据
|
||||
selectRightData(runningTaskInfo)
|
||||
} else {
|
||||
// 只有一条进行中的任务
|
||||
currentTask = runningTaskInfo.first()
|
||||
// 恢复站点信息
|
||||
currentTask?.taskId?.let {
|
||||
// 获取正在进行中的具体信息
|
||||
val runnintTaskAndSites = TaskSiteDb.queryRunningTask(it)
|
||||
if(runnintTaskAndSites.isNullOrEmpty()||runnintTaskAndSites.size<2){
|
||||
OchChainLogManager.writeChainLogDb("加载任务", "异常情况:有任务:${runningTaskInfo} runningTask 表格没有对应的数据:${runnintTaskAndSites}")
|
||||
return
|
||||
}
|
||||
val db2Beans = BusRoutesResponse.db2Beans(runnintTaskAndSites)
|
||||
stationList = db2Beans.first
|
||||
startStationIndex = db2Beans.second
|
||||
stationList?.let {stationlist->
|
||||
val startStation = stationlist[startStationIndex]
|
||||
if (startStationIndex < stationlist.size-1) {
|
||||
val endStation = stationlist[startStationIndex + 1]
|
||||
LineManager.setStartAndEndStation(startStation,endStation)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// 设置自动驾驶信息
|
||||
currentTask?.lineId?.let {
|
||||
val contraiInfoTemp = ContraiDb.queryAutopilotInfoByLineid(it)
|
||||
ContrailDataBean.save2Common(contraiInfoTemp)
|
||||
}
|
||||
mBusLinesCallbackMap.forEach { callback->
|
||||
callback.value.onRunningTask()
|
||||
}
|
||||
fun haveRunningTask(){
|
||||
mBusLinesCallbackMap.forEach { callback->
|
||||
callback.value.onRunningTask()
|
||||
}
|
||||
}
|
||||
|
||||
private fun selectRightData(runningTaskInfo: List<TaskDataBean>) {
|
||||
// 查找最新已经上报的任务
|
||||
val sorted = runningTaskInfo.sortedBy {
|
||||
it.startTime
|
||||
fun haveNoRunningTask(){
|
||||
mBusLinesCallbackMap.forEach { callback->
|
||||
callback.value.onNoRunningTask()
|
||||
}
|
||||
val tempList = sorted.toMutableList()
|
||||
val possible = tempList.removeFirst()
|
||||
val queryLastData = EventDb.queryLastData()
|
||||
if(queryLastData!=null){
|
||||
if(possible.taskId==queryLastData.taskId){
|
||||
// 最后一个事件和最新的task一直 恢复数据
|
||||
tempList.forEach {
|
||||
it.status = TaskDataBean.used
|
||||
}
|
||||
TaskDb.addOrUpdate(*tempList.toTypedArray())
|
||||
loadStartedTaskAndDefaultInfo()
|
||||
OchChainLogManager.writeChainLogDb("加载任务", "异常情况:多个正在进行的任务 task:${runningTaskInfo} event:${queryLastData.taskId}有一个和event表对应使用相同的一个 另一个置为已使用")
|
||||
return
|
||||
}
|
||||
}
|
||||
// 全部置为已使用 通过接口恢复数据
|
||||
runningTaskInfo.forEach {
|
||||
it.status = TaskDataBean.used
|
||||
}
|
||||
OchChainLogManager.writeChainLogDb("加载任务", "异常情况:多个正在进行的任务 task:${runningTaskInfo} 全部置为已使用 从后台加载正在使用的任务")
|
||||
TaskDb.addOrUpdate(*runningTaskInfo.toTypedArray())
|
||||
loadServerRuningTask()
|
||||
}
|
||||
|
||||
private fun loadServerRuningTask() {
|
||||
mContext?.let { contextit ->
|
||||
OrderServiceManager.queryBusRoutes(contextit,object :OchCommonServiceCallback<BusRoutesResponse>{
|
||||
override fun onSuccess(response: BusRoutesResponse?) {
|
||||
if(response?.data == null){
|
||||
mBusLinesCallbackMap.forEach { callback->
|
||||
callback.value.onNoRunningTask()
|
||||
}
|
||||
}
|
||||
response?.data?.let {
|
||||
if (!it.sites.isNullOrEmpty()&&it.sites.size>1) {
|
||||
val queryTaskById = TaskDb.queryTaskById(it.taskId.toLong())
|
||||
if(queryTaskById==null||queryTaskById.status!=TaskDataBean.used) {
|
||||
OchChainLogManager.writeChainLogDb(
|
||||
"业务数据",
|
||||
"本地没有正在运行的数据,服务器端有${it}"
|
||||
)
|
||||
LineDb.saveRunningInfo(
|
||||
it.lineId,
|
||||
it.name,
|
||||
it.sites.last().name
|
||||
)
|
||||
TaskDb.saveRunningInfo(it.lineId, it.taskId, it.taskTime)
|
||||
ContraiDb.saveRunningInfo(
|
||||
it.lineId,
|
||||
it.csvFileMd5,
|
||||
it.csvFileUrl,
|
||||
it.txtFileUrl,
|
||||
it.txtFileMd5,
|
||||
it.contrailSaveTime
|
||||
)
|
||||
BusRoutesResponse.bean2Db(
|
||||
it.sites,
|
||||
it.lineId.toLong(),
|
||||
it.name,
|
||||
it.taskId.toLong()
|
||||
)
|
||||
OrderModel.queryBusRoutes()
|
||||
}else{
|
||||
mBusLinesCallbackMap.forEach { callback->
|
||||
callback.value.onNoRunningTask()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort(ResourcesUtils.getString(R.string.network_error_tip))
|
||||
} else {
|
||||
ToastUtils.showShort(ResourcesUtils.getString(R.string.request_error_tip))
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试")
|
||||
}else {
|
||||
ToastUtils.showShort(msg)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// 滑动出发
|
||||
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())
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
fun leaveStationSuccess(){
|
||||
@@ -452,48 +294,11 @@ object LineModel {
|
||||
|
||||
// 到站
|
||||
fun arrivedStation() {
|
||||
LineManager.getStations { start, end ->
|
||||
// 开始站点:leaving true->false drivingStatus 2->1
|
||||
start.drivingStatus = TaskSiteDataBean.drivingStatusPassed
|
||||
start.isLeaving = false
|
||||
if(currentTask!=null&& currentTask!!.taskId!=null){
|
||||
currentTask?.let { task->
|
||||
if (task.taskId!=null&&task.lineId!=null) {
|
||||
TaskSiteDb.updateDrivingStatusAndLeave(task.taskId!!,start.siteId.toLong(),TaskSiteDataBean.drivingStatusPassed,false)
|
||||
// 设置到站任务
|
||||
LineManager.getLineInfo { lineInfo ->
|
||||
EventDb.saveEventTaskArriveSite(task.taskId!!,task.lineId!!,start.siteId.toLong(),start.seq,task.taskStartTime,lineInfo.lineName)
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
OchChainLogManager.writeChainLog("到站_数据更新_error","task:${currentTask}__taskId:${currentTask?.taskId}")
|
||||
}
|
||||
// 结束站点: drivingStatus 3-2
|
||||
end.drivingStatus = TaskSiteDataBean.drivingStatusCurrent
|
||||
if(currentTask!=null&& currentTask!!.taskId!=null){
|
||||
currentTask?.taskId?.let { taskId->
|
||||
TaskSiteDb.updateDrivingStatus(taskId,end.siteId.toLong(),TaskSiteDataBean.drivingStatusCurrent)
|
||||
}
|
||||
}else{
|
||||
OchChainLogManager.writeChainLog("到站_数据更新_error","task:${currentTask}__taskId:${currentTask?.taskId}")
|
||||
}
|
||||
val changeInfo =
|
||||
"taskId:${currentTask?.taskId}--lineId:${currentTask?.lineId}--currentStationName:${start.name}--finalNextStationName:${end.name}"
|
||||
OchChainLogManager.writeChainLog("到站", changeInfo)
|
||||
}
|
||||
|
||||
stationList?.let {
|
||||
startStationIndex+=1
|
||||
mBusLinesCallbackMap.forEach {callback->
|
||||
callback.value.onArriveStationSuccess()
|
||||
}
|
||||
|
||||
val startStation = LineManager.getStations().second
|
||||
if(startStationIndex+1< it.size){
|
||||
val endStation = it[startStationIndex+1]
|
||||
LineManager.setStartAndEndStation(startStation,endStation)
|
||||
}
|
||||
}
|
||||
fun arrivedStationSuccess(){
|
||||
mBusLinesCallbackMap.forEach {callback->
|
||||
callback.value.onArriveStationSuccess()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -514,24 +319,41 @@ object LineModel {
|
||||
}
|
||||
|
||||
fun endTask() {
|
||||
currentTask?.let {task->
|
||||
if (task.taskId!=null&&task.lineId!=null) {
|
||||
TaskDb.endTask(task.taskId!!)
|
||||
LineManager.getLineInfo { lineInfo ->
|
||||
EventDb.saveEventTaskEnd(task.taskId!!,task.lineId!!,task.taskStartTime,lineInfo.lineName)
|
||||
}
|
||||
}
|
||||
}
|
||||
val changeInfo = "taskId:${currentTask?.taskId}--lineInfo:${LineManager.lineInfos}"
|
||||
OchChainLogManager.writeChainLog("结束任务", changeInfo)
|
||||
currentTask?.let { task ->
|
||||
RepositoryManager.endTask(task.taskId?:0L)
|
||||
?.subscribeOn(Schedulers.io())
|
||||
?.observeOn(AndroidSchedulers.mainThread())
|
||||
?.subscribe(object : Observer<Boolean> {
|
||||
override fun onSubscribe(d: Disposable) {
|
||||
d(TAG, "onSubscribe")
|
||||
}
|
||||
|
||||
currentTask = null
|
||||
LineManager.setLineInfo(null)
|
||||
LineManager.setStartAndEndStation(null,null)
|
||||
stationList = mutableListOf()
|
||||
startStationIndex = 0
|
||||
mBusLinesCallbackMap.forEach {
|
||||
it.value.onCompleteTask()
|
||||
override fun onError(e: Throwable) {
|
||||
d(TAG, "onError${e.printStackTrace()}")
|
||||
if (e is DataException) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
override fun onComplete() {
|
||||
|
||||
}
|
||||
|
||||
override fun onNext(data: Boolean) {
|
||||
if (data) {
|
||||
currentTask = null
|
||||
LineManager.setLineInfo(null)
|
||||
LineManager.setStartAndEndStation(null,null)
|
||||
stationList = mutableListOf()
|
||||
startStationIndex = 0
|
||||
mBusLinesCallbackMap.forEach {
|
||||
it.value.onCompleteTask()
|
||||
}
|
||||
val changeInfo = "taskId:${currentTask?.taskId}--lineInfo:${LineManager.lineInfos}"
|
||||
OchChainLogManager.writeChainLog("结束任务", changeInfo)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,8 @@ 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.db.bean.TaskSiteDataBean
|
||||
import com.mogo.och.weaknet.repository.net.RepositoryManager
|
||||
import com.mogo.och.weaknet.repository.net.exception.DataException
|
||||
import com.mogo.och.weaknet.util.BusTrajectoryManager
|
||||
import com.mogo.och.weaknet.util.ShuttleVoiceManager
|
||||
@@ -140,18 +142,44 @@ object OrderModel {
|
||||
@JvmStatic
|
||||
fun queryBusRoutes() {
|
||||
d(M_BUS + TAG, "查询小巴路线")
|
||||
ThreadUtils.getIoPool().execute {
|
||||
LineModel.loadStartedTaskAndDefaultInfo()
|
||||
if(LineModel.stationList.isNullOrEmpty()){
|
||||
d(M_BUS + TAG, "获取到小巴路线数据:空 ")
|
||||
LineManager.setLineInfo(null)
|
||||
updateBusStatus()
|
||||
closeBeautificationMode()
|
||||
removeTipRunnables()
|
||||
}else{
|
||||
updateBusStatus()
|
||||
}
|
||||
}
|
||||
RepositoryManager.loadCurrentTaskInfo()
|
||||
?.subscribeOn(Schedulers.io())
|
||||
?.observeOn(AndroidSchedulers.mainThread())
|
||||
?.subscribe(object : Observer<Boolean> {
|
||||
override fun onSubscribe(d: Disposable) {
|
||||
d(TAG, "onSubscribe")
|
||||
}
|
||||
|
||||
override fun onError(e: Throwable) {
|
||||
e.printStackTrace()
|
||||
d(TAG, "onError${e.printStackTrace()}")
|
||||
LineModel.haveNoRunningTask()
|
||||
d(M_BUS + TAG, "获取到小巴路线数据:空 ")
|
||||
LineManager.setLineInfo(null)
|
||||
updateBusStatus()
|
||||
closeBeautificationMode()
|
||||
removeTipRunnables()
|
||||
}
|
||||
|
||||
override fun onComplete() {
|
||||
d(TAG, "onComplete")
|
||||
}
|
||||
|
||||
override fun onNext(data: Boolean) {
|
||||
if(data){
|
||||
LineModel.haveRunningTask()
|
||||
updateBusStatus()
|
||||
}else{
|
||||
LineModel.haveNoRunningTask()
|
||||
d(M_BUS + TAG, "获取到小巴路线数据:空 ")
|
||||
LineManager.setLineInfo(null)
|
||||
updateBusStatus()
|
||||
closeBeautificationMode()
|
||||
removeTipRunnables()
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -159,6 +187,9 @@ object OrderModel {
|
||||
*/
|
||||
@JvmStatic
|
||||
fun completeTask() {
|
||||
|
||||
RepositoryManager
|
||||
|
||||
OCHThreadPoolManager.getsInstance().execute {
|
||||
d(M_BUS + TAG, "结束当前路线abortTask")
|
||||
|
||||
@@ -215,37 +246,48 @@ object OrderModel {
|
||||
return
|
||||
}
|
||||
|
||||
LineModel.leaveStation()
|
||||
?.subscribeOn(Schedulers.io())
|
||||
?.observeOn(AndroidSchedulers.mainThread())
|
||||
?.subscribe(object : Observer<Boolean> {
|
||||
override fun onSubscribe(d: Disposable) {
|
||||
d(TAG, "onSubscribe")
|
||||
}
|
||||
LineManager.getStations().first?.let {startStation->
|
||||
startStation.drivingStatus = TaskSiteDataBean.drivingStatusCurrent
|
||||
startStation.isLeaving = true
|
||||
LineModel.currentTask?.let { task->
|
||||
RepositoryManager.leaveStation(
|
||||
startStation.seq,
|
||||
startStation.siteId.toLong(),
|
||||
task.taskId?:0L,
|
||||
task.lineId?:0L,
|
||||
task.taskStartTime?:System.currentTimeMillis())
|
||||
?.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 onError(e: Throwable) {
|
||||
d(TAG, "onError${e.printStackTrace()}")
|
||||
if (e is DataException) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onComplete() {
|
||||
d(TAG, "onComplete")
|
||||
}
|
||||
override fun onComplete() {
|
||||
d(TAG, "onComplete")
|
||||
}
|
||||
|
||||
override fun onNext(data: Boolean) {
|
||||
if (data) {
|
||||
LineModel.leaveStationSuccess()
|
||||
isArrivedStation = false
|
||||
onStartAutopilot()
|
||||
override fun onNext(data: Boolean) {
|
||||
if (data) {
|
||||
LineModel.leaveStationSuccess()
|
||||
isArrivedStation = false
|
||||
onStartAutopilot()
|
||||
|
||||
ThirdDeviceData.leaveStation()
|
||||
ThirdDeviceData.leaveStation()
|
||||
|
||||
updateBusStatus()
|
||||
}
|
||||
}
|
||||
})
|
||||
updateBusStatus()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -371,9 +413,48 @@ object OrderModel {
|
||||
isArrivedStation = true
|
||||
isGoingToNextStation = false
|
||||
|
||||
ThirdDeviceData.arriveStation()
|
||||
LineModel.arrivedStation()
|
||||
updateBusStatus()
|
||||
LineManager.getStations { start, end ->
|
||||
start.drivingStatus = TaskSiteDataBean.drivingStatusPassed
|
||||
start.isLeaving = false
|
||||
end.drivingStatus = TaskSiteDataBean.drivingStatusCurrent
|
||||
RepositoryManager.arriveStation(end.seq,end.siteId.toLong(), LineModel.currentTask?.taskId?:0L)
|
||||
?.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() {
|
||||
ThirdDeviceData.arriveStation()
|
||||
d(TAG, "arrivedStation onComplete")
|
||||
LineModel.stationList?.let {
|
||||
LineModel.startStationIndex +=1
|
||||
val startStation = LineManager.getStations().second
|
||||
if(LineModel.startStationIndex +1< it.size){
|
||||
val endStation = it[LineModel.startStationIndex +1]
|
||||
LineManager.setStartAndEndStation(startStation,endStation)
|
||||
}
|
||||
}
|
||||
LineModel.arrivedStationSuccess()
|
||||
updateBusStatus()
|
||||
}
|
||||
|
||||
override fun onNext(data: Boolean) {
|
||||
if (data) {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -30,4 +30,8 @@ interface TaskSiteDataDao {
|
||||
@Query("DELETE FROM ${TaskSiteDataBean.usedTaskDataTable} WHERE event_save_time < :zeroTime")
|
||||
fun deleteObsoleteData(zeroTime: Long = DateTimeUtil.getCurrentDateZero()):Int
|
||||
|
||||
// 根据taskId删除所属站点信息
|
||||
@Query("DELETE FROM ${TaskSiteDataBean.usedTaskDataTable} WHERE task_id = :taskId")
|
||||
fun deleteErrorDataByTaskId(taskId: Long)
|
||||
|
||||
}
|
||||
|
||||
@@ -74,6 +74,10 @@ object TaskSiteDb {
|
||||
return taskSiteDataDao?.queryRunningTask(taskId)
|
||||
}
|
||||
|
||||
fun deleteErrorData(taskId: Long){
|
||||
taskSiteDataDao?.deleteErrorDataByTaskId(taskId)
|
||||
}
|
||||
|
||||
fun deleteObsoleteData(){
|
||||
taskSiteDataDao?.deleteObsoleteData()?.let {
|
||||
OchChainLogManager.writeChainLogDb("删除临时数据","rurnning Task删除数量:${it}")
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
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
|
||||
|
||||
interface IRepository {
|
||||
|
||||
fun loadCurrentTaskInfo():Observable<Boolean>?
|
||||
|
||||
fun queryCanUseLine(): Observable<List<LineDataBean>?>?
|
||||
|
||||
fun queryCanUserTask(lineId:Long): Observable<List<TaskDataBean>?>?
|
||||
@@ -15,4 +15,8 @@ interface IRepository {
|
||||
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>?
|
||||
|
||||
fun arriveStation( seq: Int, siteId: Long, taskId: Long): Observable<Boolean>?
|
||||
|
||||
fun endTask( taskId: Long): Observable<Boolean>?
|
||||
}
|
||||
@@ -7,9 +7,7 @@ import com.mogo.och.weaknet.repository.db.bean.LineDataBean
|
||||
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
|
||||
import com.mogo.och.weaknet.repository.net.impl.bus.BusRepository
|
||||
import com.mogo.och.weaknet.repository.net.impl.bussaas.BusSaasRepository
|
||||
import com.mogo.och.weaknet.repository.net.impl.shuttle.OrderServiceManager
|
||||
import com.mogo.och.weaknet.repository.net.impl.shuttle.ShuttleRepository
|
||||
import com.mogo.och.weaknet.repository.net.impl.shuttlesaas.ShuttleSaasRepository
|
||||
import io.reactivex.Observable
|
||||
|
||||
object RepositoryManager {
|
||||
@@ -33,6 +31,10 @@ object RepositoryManager {
|
||||
}
|
||||
}
|
||||
|
||||
fun loadCurrentTaskInfo():Observable<Boolean>?{
|
||||
return repository.loadCurrentTaskInfo()
|
||||
}
|
||||
|
||||
fun queryCanUseLine() : Observable<List<LineDataBean>?>? {
|
||||
return repository.queryCanUseLine()
|
||||
}
|
||||
@@ -50,4 +52,13 @@ object RepositoryManager {
|
||||
return repository.leaveStation(seq,siteId,taskId,lineId,taskStartTime)
|
||||
}
|
||||
|
||||
fun arriveStation(seq: Int, siteId: Long, taskId: Long): Observable<Boolean>?{
|
||||
return repository.arriveStation(seq,siteId,taskId)
|
||||
}
|
||||
|
||||
fun endTask(taskId: Long): Observable<Boolean>?{
|
||||
return repository.endTask(taskId)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -9,9 +9,9 @@ import com.mogo.och.common.module.utils.DateTimeUtil;
|
||||
public class BusCloseTaskRequest {
|
||||
|
||||
private String sn;
|
||||
private int taskId;
|
||||
private long taskId;
|
||||
private long writeVersion;
|
||||
public BusCloseTaskRequest(int taskId) {
|
||||
public BusCloseTaskRequest(long taskId) {
|
||||
this.sn = SharedPrefsMgr.getInstance().getSn();
|
||||
this.taskId = taskId;
|
||||
this.writeVersion = DateTimeUtil.getCurrentTimeStamp();
|
||||
|
||||
@@ -1,15 +1,9 @@
|
||||
package com.mogo.och.weaknet.repository.net.impl.bus
|
||||
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.utils.ResourcesUtils
|
||||
import com.mogo.och.shuttle.weaknet.R
|
||||
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
|
||||
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
|
||||
import com.mogo.och.weaknet.repository.net.IRepository
|
||||
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLinesResponse
|
||||
import io.reactivex.Observable
|
||||
|
||||
class BusRepository: IRepository {
|
||||
@@ -20,6 +14,10 @@ class BusRepository: IRepository {
|
||||
|
||||
}
|
||||
|
||||
override fun loadCurrentTaskInfo(): Observable<Boolean>? {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun queryCanUseLine(): Observable<List<LineDataBean>?>? {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
@@ -47,5 +45,13 @@ class BusRepository: IRepository {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun arriveStation(seq: Int, siteId: Long, taskId: Long): Observable<Boolean>? {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun endTask(taskId: Long): Observable<Boolean>? {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -2,7 +2,6 @@ package com.mogo.och.weaknet.repository.net.impl.bus
|
||||
|
||||
import android.content.Context
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.eagle.core.network.MoGoRetrofitFactory
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
@@ -16,7 +15,6 @@ import com.mogo.och.weaknet.bean.response.BusRoutesResponse
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.BusCloseTaskRequest
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.BusResetDrivingLineRequest
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.BusRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.BusUpdateSiteStatusRequest
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.CarHeartbeatReqBean
|
||||
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLineTaskResponse
|
||||
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLinesResponse
|
||||
@@ -79,7 +77,7 @@ object OrderServiceManager {
|
||||
* @param callback
|
||||
*/
|
||||
@JvmStatic
|
||||
fun abortTask(context: Context, taskId: Int, callback: OchCommonServiceCallback<BaseData>?) {
|
||||
fun abortTask(context: Context, taskId: Long, callback: OchCommonServiceCallback<BaseData>?) {
|
||||
M_SERVICE.abortTask(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
@@ -96,7 +94,7 @@ object OrderServiceManager {
|
||||
* @param callback
|
||||
*/
|
||||
@JvmStatic
|
||||
fun endTask(context: Context, taskId: Int, callback: OchCommonServiceCallback<BaseData>?) {
|
||||
fun endTask(context: Context, taskId: Long, callback: OchCommonServiceCallback<BaseData>?) {
|
||||
M_SERVICE.endTask(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
|
||||
@@ -1,15 +1,9 @@
|
||||
package com.mogo.och.weaknet.repository.net.impl.bussaas
|
||||
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.utils.ResourcesUtils
|
||||
import com.mogo.och.shuttle.weaknet.R
|
||||
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
|
||||
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
|
||||
import com.mogo.och.weaknet.repository.net.IRepository
|
||||
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLinesResponse
|
||||
import io.reactivex.Observable
|
||||
|
||||
class BusSaasRepository: IRepository {
|
||||
@@ -20,6 +14,10 @@ class BusSaasRepository: IRepository {
|
||||
|
||||
}
|
||||
|
||||
override fun loadCurrentTaskInfo(): Observable<Boolean>? {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun queryCanUseLine(): Observable<List<LineDataBean>?>? {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
@@ -47,5 +45,13 @@ class BusSaasRepository: IRepository {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun arriveStation(seq: Int, siteId: Long, taskId: Long): Observable<Boolean>? {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun endTask(taskId: Long): Observable<Boolean>? {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -2,7 +2,6 @@ package com.mogo.och.weaknet.repository.net.impl.bussaas
|
||||
|
||||
import android.content.Context
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.eagle.core.network.MoGoRetrofitFactory
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
@@ -15,7 +14,6 @@ import com.mogo.och.weaknet.bean.response.BusRoutesResponse
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.BusCloseTaskRequest
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.BusResetDrivingLineRequest
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.BusRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.BusUpdateSiteStatusRequest
|
||||
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLineTaskResponse
|
||||
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLinesResponse
|
||||
|
||||
@@ -76,7 +74,7 @@ object OrderServiceManager {
|
||||
* @param callback
|
||||
*/
|
||||
@JvmStatic
|
||||
fun abortTask(context: Context, taskId: Int, callback: OchCommonServiceCallback<BaseData>?) {
|
||||
fun abortTask(context: Context, taskId: Long, callback: OchCommonServiceCallback<BaseData>?) {
|
||||
|
||||
M_SAAS_SERVICE.abortTask(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
@@ -95,7 +93,7 @@ object OrderServiceManager {
|
||||
* @param callback
|
||||
*/
|
||||
@JvmStatic
|
||||
fun endTask(context: Context, taskId: Int, callback: OchCommonServiceCallback<BaseData>?) {
|
||||
fun endTask(context: Context, taskId: Long, callback: OchCommonServiceCallback<BaseData>?) {
|
||||
|
||||
M_SAAS_SERVICE.endTask(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
|
||||
@@ -11,15 +11,14 @@ import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.network.OchCommonSubscribeImpl
|
||||
import com.mogo.och.common.module.network.interceptor.transformIoTry
|
||||
import com.mogo.och.common.module.network.interceptor.transformTry
|
||||
import com.mogo.och.data.bean.BusRoutesResult
|
||||
import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest
|
||||
import com.mogo.och.weaknet.bean.response.BusRoutesResponse
|
||||
import com.mogo.och.weaknet.bean.response.WriteOffCountResponse
|
||||
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
|
||||
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.BusCloseTaskRequest
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.BusResetDrivingLineRequest
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.BusUpdateSiteStatusRequest
|
||||
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLineTaskResponse
|
||||
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLinesResponse
|
||||
import io.reactivex.Observable
|
||||
|
||||
@@ -40,15 +39,16 @@ object OrderServiceManager {
|
||||
* @param callback
|
||||
*/
|
||||
@JvmStatic
|
||||
fun queryBusRoutes(context: Context, callback: OchCommonServiceCallback<BusRoutesResponse>?) {
|
||||
//获取当前高德坐标
|
||||
mService.queryBusRoutes(
|
||||
fun queryBusRoutes(): Observable<BusRoutesResult>? {
|
||||
return mService.queryBusRoutes(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
BusQueryLineStationsRequest()
|
||||
)
|
||||
.transformTry()
|
||||
.subscribe(OchCommonSubscribeImpl(context, callback, "queryBusRoutes"))
|
||||
) .transformTry()
|
||||
.flatMap(OchCommonNet("queryBusRoutes",false))
|
||||
.flatMap {
|
||||
Observable.just(it.data?: BusRoutesResult())
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -79,7 +79,7 @@ object OrderServiceManager {
|
||||
* @param callback
|
||||
*/
|
||||
@JvmStatic
|
||||
fun abortTask(context: Context, taskId: Int, callback: OchCommonServiceCallback<BaseData>?) {
|
||||
fun abortTask(context: Context, taskId: Long, callback: OchCommonServiceCallback<BaseData>?) {
|
||||
mService.abortTask(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
@@ -96,14 +96,16 @@ object OrderServiceManager {
|
||||
* @param callback
|
||||
*/
|
||||
@JvmStatic
|
||||
fun endTask(context: Context, taskId: Int, callback: OchCommonServiceCallback<BaseData>?) {
|
||||
mService.endTask(
|
||||
fun endTask(taskId: Long): Observable<Boolean>? {
|
||||
return mService.endTask(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
BusCloseTaskRequest(taskId)
|
||||
)
|
||||
.transformTry()
|
||||
.subscribe(OchCommonSubscribeImpl(context, callback, "endTask"))
|
||||
) .transformTry()
|
||||
.flatMap(OchCommonNet("endTask",true))
|
||||
.flatMap {
|
||||
Observable.just(true)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -140,16 +142,18 @@ object OrderServiceManager {
|
||||
*/
|
||||
@JvmStatic
|
||||
fun arriveSiteStation(
|
||||
context: Context, seq: Int, siteId: Long, taskId: Long, writeVersion: Long,
|
||||
callback: OchCommonServiceCallback<BaseData>?
|
||||
) {
|
||||
mService.arriveSiteStation(
|
||||
seq: Int, siteId: Long, taskId: Long, writeVersion: Long,
|
||||
): Observable<Boolean>? {
|
||||
return mService.arriveSiteStation(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
BusUpdateSiteStatusRequest(taskId, siteId, seq, writeVersion)
|
||||
)
|
||||
.transformTry()
|
||||
.subscribe(OchCommonSubscribeImpl(context, callback, "arriveSiteStation"))
|
||||
.flatMap(OchCommonNet("arriveSiteStation",false))
|
||||
.flatMap {
|
||||
Observable.just(true)
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
|
||||
@@ -1,11 +1,77 @@
|
||||
package com.mogo.och.weaknet.repository.net.impl.shuttle
|
||||
|
||||
import com.mogo.och.common.module.manager.autopilot.line.LineManager
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import com.mogo.och.data.bean.LineInfo
|
||||
import com.mogo.och.weaknet.model.LineModel
|
||||
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.net.IRepository
|
||||
import io.reactivex.Observable
|
||||
|
||||
class ShuttleRepository: IRepository {
|
||||
override fun loadCurrentTaskInfo(): Observable<Boolean>? {
|
||||
return OrderServiceManager.queryBusRoutes()
|
||||
?.flatMap { busRoutesResult ->
|
||||
if (!busRoutesResult.sites.isNullOrEmpty() && busRoutesResult.sites.size > 1) {
|
||||
OchChainLogManager.writeChainLogDb(
|
||||
"业务数据",
|
||||
"本地没有正在运行的数据,服务器端有${busRoutesResult}"
|
||||
)
|
||||
val result = mutableListOf<BusStationBean>()
|
||||
var temp: BusStationBean? = null
|
||||
var currentStationIndex = -1
|
||||
var lineInfo:LineInfo?=null
|
||||
busRoutesResult.sites.forEachIndexed { index, taskAndsite ->
|
||||
temp = BusStationBean()
|
||||
temp?.drivingStatus = (taskAndsite.drivingStatus ?: 0)
|
||||
temp?.lat = (taskAndsite.lat ?: 0.0)
|
||||
temp?.lon = (taskAndsite.lon ?: 0.0)
|
||||
temp?.gcjLat = (taskAndsite.gcjLat ?: 0.0)
|
||||
temp?.gcjLon = (taskAndsite.gcjLon ?: 0.0)
|
||||
temp?.introduction = taskAndsite.introduction
|
||||
temp?.isLeaving = taskAndsite.isLeaving
|
||||
temp?.name = taskAndsite.name
|
||||
temp?.nameKr = taskAndsite.nameKr
|
||||
temp?.isPlayTts = java.lang.Boolean.TRUE == taskAndsite.isPlayTts
|
||||
temp?.seq = (taskAndsite.seq ?: 0)
|
||||
temp?.siteId = if (taskAndsite.siteId == null) 0 else taskAndsite.siteId!!.toInt()
|
||||
result.add(temp!!)
|
||||
// 正在进行中的任务
|
||||
if (temp!!.drivingStatus == TaskSiteDataBean.drivingStatusCurrent) {
|
||||
currentStationIndex = index
|
||||
}
|
||||
// 线路信息
|
||||
if (lineInfo == null && busRoutesResult.name != null) {
|
||||
lineInfo = LineInfo(busRoutesResult.lineId.toLong(), taskAndsite.name)
|
||||
}
|
||||
lineInfo?.multiMap?.put("taskInfo",LineModel.getTaskTime())
|
||||
}
|
||||
LineManager.setLineInfo(lineInfo)
|
||||
|
||||
|
||||
val tempTask =TaskDataBean()
|
||||
tempTask.taskId = busRoutesResult.taskId.toLong()
|
||||
tempTask.taskStartTime = busRoutesResult.taskTime
|
||||
tempTask.lineId = busRoutesResult.lineId.toLong()
|
||||
LineModel.currentTask = tempTask
|
||||
|
||||
LineModel.stationList = result
|
||||
LineModel.startStationIndex = currentStationIndex
|
||||
LineModel.stationList?.let { stationlist->
|
||||
val startStation = stationlist[LineModel.startStationIndex]
|
||||
if (LineModel.startStationIndex < stationlist.size-1) {
|
||||
val endStation = stationlist[LineModel.startStationIndex + 1]
|
||||
LineManager.setStartAndEndStation(startStation,endStation)
|
||||
}
|
||||
}
|
||||
return@flatMap Observable.just(true)
|
||||
}
|
||||
return@flatMap Observable.just(false)
|
||||
}
|
||||
}
|
||||
|
||||
override fun queryCanUseLine(): Observable<List<LineDataBean>?> {
|
||||
return OrderServiceManager.queryBusLines()
|
||||
@@ -29,4 +95,12 @@ class ShuttleRepository: IRepository {
|
||||
return OrderServiceManager.leaveStation(seq,siteId,taskId,System.currentTimeMillis())
|
||||
}
|
||||
|
||||
override fun arriveStation(seq: Int, siteId: Long, taskId: Long, ): Observable<Boolean>? {
|
||||
return OrderServiceManager.arriveSiteStation(seq,siteId,taskId,System.currentTimeMillis())
|
||||
}
|
||||
|
||||
override fun endTask(taskId: Long): Observable<Boolean>? {
|
||||
return OrderServiceManager.endTask(taskId)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,14 +6,16 @@ import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.eagle.core.network.MoGoRetrofitFactory
|
||||
import com.mogo.och.common.module.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.network.OchCommonNet
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.network.OchCommonSubscribeImpl
|
||||
import com.mogo.och.common.module.network.interceptor.transformIoTry
|
||||
import com.mogo.och.data.bean.BusRoutesResult
|
||||
import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest
|
||||
import com.mogo.och.weaknet.bean.response.BusRoutesResponse
|
||||
import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse
|
||||
import com.mogo.och.weaknet.bean.request.ShuttleEventRequest
|
||||
import com.mogo.och.weaknet.bean.response.WriteOffCountResponse
|
||||
import io.reactivex.Observable
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
@@ -32,15 +34,17 @@ object OrderServiceManager {
|
||||
* @param callback
|
||||
*/
|
||||
@JvmStatic
|
||||
fun queryBusRoutes(context: Context, callback: OchCommonServiceCallback<BusRoutesResponse>?) {
|
||||
fun queryBusRoutes(): Observable<BusRoutesResult?>? {
|
||||
//获取当前高德坐标
|
||||
mService.queryBusRoutes(
|
||||
return mService.queryBusRoutes(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
BusQueryLineStationsRequest()
|
||||
)
|
||||
.transformIoTry()
|
||||
.subscribe(OchCommonSubscribeImpl(context, callback, "queryBusRoutes"))
|
||||
) .transformIoTry()
|
||||
.flatMap(OchCommonNet("queryBusRoutes",false))
|
||||
.flatMap {
|
||||
Observable.just(it.data?:BusRoutesResult())
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,11 +1,17 @@
|
||||
package com.mogo.och.weaknet.repository.net.impl.shuttlesaas
|
||||
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.common.module.manager.autopilot.line.LineManager
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.weaknet.bean.response.BusRoutesResponse
|
||||
import com.mogo.och.weaknet.model.LineModel
|
||||
import com.mogo.och.weaknet.model.LineModel.currentTask
|
||||
import com.mogo.och.weaknet.repository.db.bean.ContrailDataBean
|
||||
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.ContraiDb
|
||||
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
|
||||
@@ -14,6 +20,131 @@ import com.mogo.och.weaknet.repository.net.IRepository
|
||||
import io.reactivex.Observable
|
||||
|
||||
class ShuttleSaasRepository : IRepository {
|
||||
private val TAG = "ShuttleSaasRepository"
|
||||
private val context = AbsMogoApplication.getApp()
|
||||
override fun loadCurrentTaskInfo(): Observable<Boolean>? {
|
||||
|
||||
return Observable.just(123)
|
||||
.flatMap {
|
||||
// 获取正在运行的任务
|
||||
val runningTaskInfo = TaskDb.queryRunningTask()
|
||||
if (runningTaskInfo.isNullOrEmpty()) {
|
||||
// 本地没有进行中的任务
|
||||
CallerLogger.d(TAG, "没有查询到正在运行的任务")
|
||||
return@flatMap loadServerRuningTask()
|
||||
} else if (runningTaskInfo.size > 1) {
|
||||
// 本地有多条正在进行的任务 需要check event
|
||||
// 1 比对event表 1 清理错误数据 2 加载后台数据
|
||||
return@flatMap selectRightData(runningTaskInfo)
|
||||
} else {
|
||||
// 只有一条进行中的任务
|
||||
currentTask = runningTaskInfo.first()
|
||||
// 恢复站点信息
|
||||
currentTask?.taskId?.let {
|
||||
// 获取正在进行中的具体信息
|
||||
val runnintTaskAndSites = TaskSiteDb.queryRunningTask(it)
|
||||
if(runnintTaskAndSites.isNullOrEmpty()||runnintTaskAndSites.size<2){
|
||||
OchChainLogManager.writeChainLogDb("加载任务", "异常情况:有任务:${runningTaskInfo} runningTask 表格没有对应的数据:${runnintTaskAndSites}")
|
||||
TaskSiteDb.deleteErrorData(it)
|
||||
return@flatMap loadServerRuningTask()
|
||||
}
|
||||
val db2Beans = BusRoutesResponse.db2Beans(runnintTaskAndSites)
|
||||
LineModel.stationList = db2Beans.first
|
||||
LineModel.startStationIndex = db2Beans.second
|
||||
LineModel.stationList?.let { stationlist->
|
||||
val startStation = stationlist[LineModel.startStationIndex]
|
||||
if (LineModel.startStationIndex < stationlist.size-1) {
|
||||
val endStation = stationlist[LineModel.startStationIndex + 1]
|
||||
LineManager.setStartAndEndStation(startStation,endStation)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// 设置自动驾驶信息
|
||||
currentTask?.lineId?.let {
|
||||
val contraiInfoTemp = ContraiDb.queryAutopilotInfoByLineid(it)
|
||||
ContrailDataBean.save2Common(contraiInfoTemp)
|
||||
}
|
||||
return@flatMap Observable.just(true)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private fun selectRightData(runningTaskInfo: List<TaskDataBean>):Observable<Boolean>? {
|
||||
return Observable.just(123)
|
||||
.flatMap {
|
||||
// 查找最新已经上报的任务
|
||||
val sorted = runningTaskInfo.sortedBy {
|
||||
it.startTime
|
||||
}
|
||||
val tempList = sorted.toMutableList()
|
||||
val possible = tempList.removeFirst()
|
||||
val queryLastData = EventDb.queryLastData()
|
||||
if(queryLastData!=null){
|
||||
if(possible.taskId==queryLastData.taskId){
|
||||
// 最后一个事件和最新的task一直 恢复数据
|
||||
tempList.forEach {
|
||||
it.status = TaskDataBean.used
|
||||
}
|
||||
TaskDb.addOrUpdate(*tempList.toTypedArray())
|
||||
OchChainLogManager.writeChainLogDb("加载任务", "异常情况:多个正在进行的任务 task:${runningTaskInfo} event:${queryLastData.taskId}有一个和event表对应使用相同的一个 另一个置为已使用")
|
||||
return@flatMap loadServerRuningTask()
|
||||
}
|
||||
}
|
||||
// 全部置为已使用 通过接口恢复数据
|
||||
runningTaskInfo.forEach {
|
||||
it.status = TaskDataBean.used
|
||||
}
|
||||
OchChainLogManager.writeChainLogDb("加载任务", "异常情况:多个正在进行的任务 task:${runningTaskInfo} 全部置为已使用 从后台加载正在使用的任务")
|
||||
TaskDb.addOrUpdate(*runningTaskInfo.toTypedArray())
|
||||
return@flatMap loadCurrentTaskInfo()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun loadServerRuningTask(): Observable<Boolean>? {
|
||||
return OrderServiceManager.queryBusRoutes()?.flatMap {busRoutesResult->
|
||||
if (!busRoutesResult.sites.isNullOrEmpty() && busRoutesResult.sites.size > 1) {
|
||||
val queryTaskById = TaskDb.queryTaskById(busRoutesResult.taskId.toLong())
|
||||
if (queryTaskById == null || queryTaskById.status != TaskDataBean.used) {
|
||||
OchChainLogManager.writeChainLogDb(
|
||||
"业务数据",
|
||||
"本地没有正在运行的数据,服务器端有${busRoutesResult}"
|
||||
)
|
||||
LineDb.saveRunningInfo(
|
||||
busRoutesResult.lineId,
|
||||
busRoutesResult.name,
|
||||
busRoutesResult.sites.last().name
|
||||
)
|
||||
TaskDb.saveRunningInfo(
|
||||
busRoutesResult.lineId,
|
||||
busRoutesResult.taskId,
|
||||
busRoutesResult.taskTime
|
||||
)
|
||||
ContraiDb.saveRunningInfo(
|
||||
busRoutesResult.lineId,
|
||||
busRoutesResult.csvFileMd5,
|
||||
busRoutesResult.csvFileUrl,
|
||||
busRoutesResult.txtFileUrl,
|
||||
busRoutesResult.txtFileMd5,
|
||||
busRoutesResult.contrailSaveTime
|
||||
)
|
||||
BusRoutesResponse.bean2Db(
|
||||
busRoutesResult.sites,
|
||||
busRoutesResult.lineId.toLong(),
|
||||
busRoutesResult.name,
|
||||
busRoutesResult.taskId.toLong()
|
||||
)
|
||||
return@flatMap loadCurrentTaskInfo()
|
||||
} else {
|
||||
return@flatMap Observable.just(false)
|
||||
}
|
||||
}
|
||||
return@flatMap Observable.just(false)
|
||||
}
|
||||
}
|
||||
|
||||
override fun queryCanUseLine(): Observable<List<LineDataBean>?>? {
|
||||
return LineDb.queryCanUseLine()
|
||||
@@ -66,4 +197,76 @@ class ShuttleSaasRepository : IRepository {
|
||||
|
||||
}
|
||||
|
||||
override fun arriveStation(seq: Int, siteId: Long, taskId: Long): Observable<Boolean>? {
|
||||
// 开始站点:leaving true->false drivingStatus 2->1
|
||||
return Observable.just(taskId)
|
||||
.flatMap {
|
||||
LineManager.getStations { start, end ->
|
||||
if (currentTask != null && currentTask!!.taskId != null) {
|
||||
currentTask?.let { task ->
|
||||
if (task.taskId != null && task.lineId != null) {
|
||||
TaskSiteDb.updateDrivingStatusAndLeave(
|
||||
task.taskId!!,
|
||||
start.siteId.toLong(),
|
||||
TaskSiteDataBean.drivingStatusPassed,
|
||||
false
|
||||
)
|
||||
// 设置到站任务
|
||||
LineManager.getLineInfo { lineInfo ->
|
||||
EventDb.saveEventTaskArriveSite(
|
||||
task.taskId!!,
|
||||
task.lineId!!,
|
||||
start.siteId.toLong(),
|
||||
start.seq,
|
||||
task.taskStartTime,
|
||||
lineInfo.lineName
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
OchChainLogManager.writeChainLog(
|
||||
"到站_数据更新_error",
|
||||
"task:${currentTask}__taskId:${currentTask?.taskId}"
|
||||
)
|
||||
}
|
||||
// 结束站点: drivingStatus 3-2
|
||||
if (currentTask != null && currentTask!!.taskId != null) {
|
||||
currentTask?.taskId?.let { taskId ->
|
||||
TaskSiteDb.updateDrivingStatus(
|
||||
taskId,
|
||||
end.siteId.toLong(),
|
||||
TaskSiteDataBean.drivingStatusCurrent
|
||||
)
|
||||
}
|
||||
} else {
|
||||
OchChainLogManager.writeChainLog(
|
||||
"到站_数据更新_error",
|
||||
"task:${currentTask}__taskId:${currentTask?.taskId}"
|
||||
)
|
||||
}
|
||||
val changeInfo =
|
||||
"taskId:${currentTask?.taskId}--lineId:${currentTask?.lineId}--currentStationName:${start.name}--finalNextStationName:${end.name}"
|
||||
OchChainLogManager.writeChainLog("到站", changeInfo)
|
||||
}
|
||||
return@flatMap Observable.just(true)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
override fun endTask(taskId: Long): Observable<Boolean>? {
|
||||
return Observable.just(taskId).flatMap {
|
||||
currentTask?.let {task->
|
||||
if (task.taskId!=null&&task.lineId!=null) {
|
||||
TaskDb.endTask(task.taskId!!)
|
||||
LineManager.getLineInfo { lineInfo ->
|
||||
EventDb.saveEventTaskEnd(task.taskId!!,task.lineId!!,task.taskStartTime,lineInfo.lineName)
|
||||
}
|
||||
}
|
||||
}
|
||||
return@flatMap Observable.just(true)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -109,9 +109,9 @@ class TaskRunningView: ConstraintLayout, TaskRunningModel.SwtichLineViewCallback
|
||||
|
||||
override fun showRunningTaskInfo() {
|
||||
LineManager.getLineInfo {lineInfo ->
|
||||
bus_task_running_line_name.text = "班次:${lineInfo.lineName}"
|
||||
bus_task_running_line_name.text = lineInfo.lineName
|
||||
}
|
||||
actv_running_task_time.text = LineModel.getTaskTime()
|
||||
actv_running_task_time.text = "班次:${LineModel.getTaskTime()}"
|
||||
LineModel.stationList?.takeIf { it.size>2 }?.let {
|
||||
actv_running_task_last_station.text = "往${it.last().name ?: ""}"
|
||||
mAdapter.setDataList(it,LineModel.startStationIndex)
|
||||
|
||||
Reference in New Issue
Block a user