From 22da0e6775c42363a8ebd3dc9785a3e76169240e Mon Sep 17 00:00:00 2001 From: yangyakun Date: Tue, 24 Sep 2024 23:00:11 +0800 Subject: [PATCH] [6.7.0] [shuttle] --- .../och/common/module/network/OchCommonNet.kt | 2 +- .../com/mogo/och/weaknet/model/LineModel.kt | 266 +++--------------- .../com/mogo/och/weaknet/model/OrderModel.kt | 161 ++++++++--- .../repository/db/dao/TaskSiteDataDao.kt | 4 + .../repository/db/repository/TaskSiteDb.kt | 4 + .../och/weaknet/repository/net/IRepository.kt | 10 +- .../repository/net/RepositoryManager.kt | 15 +- .../net/bean/request/BusCloseTaskRequest.java | 4 +- .../repository/net/impl/bus/BusRepository.kt | 18 +- .../net/impl/bus/OrderServiceManager.kt | 6 +- .../net/impl/bussaas/BusSaasRepository.kt | 18 +- .../net/impl/bussaas/OrderServiceManager.kt | 6 +- .../net/impl/shuttle/OrderServiceManager.kt | 42 +-- .../net/impl/shuttle/ShuttleRepository.kt | 74 +++++ .../impl/shuttlesaas/OrderServiceManager.kt | 16 +- .../impl/shuttlesaas/ShuttleSaasRepository.kt | 203 +++++++++++++ .../weaknet/ui/taskrunning/TaskRunningView.kt | 4 +- 17 files changed, 536 insertions(+), 317 deletions(-) diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/network/OchCommonNet.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/network/OchCommonNet.kt index 38de7a812d..4bca11506e 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/network/OchCommonNet.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/network/OchCommonNet.kt @@ -20,7 +20,7 @@ class OchCommonNet(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}") } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt index dde4c03f9d..a9b5ee63d6 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt @@ -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) { - // 查找最新已经上报的任务 - 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{ - 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? { - 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 { + 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) + } + } + }) } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt index 01abfbb83f..f915feba4d 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt @@ -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 { + 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 { - 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 { + 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 { + 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) { + + } + } + }) + } + } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/TaskSiteDataDao.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/TaskSiteDataDao.kt index 2823bbc741..3f939e52dd 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/TaskSiteDataDao.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/TaskSiteDataDao.kt @@ -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) + } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskSiteDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskSiteDb.kt index b960c5e857..d7b5f784fa 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskSiteDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskSiteDb.kt @@ -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}") diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/IRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/IRepository.kt index 254bcf5f20..dc7f8970d8 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/IRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/IRepository.kt @@ -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? + fun queryCanUseLine(): Observable?>? fun queryCanUserTask(lineId:Long): Observable?>? @@ -15,4 +15,8 @@ interface IRepository { fun startTask(taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable? fun leaveStation(seq: Int, siteId: Long, taskId: Long, lineId: Long, taskStartTime:Long): Observable? + + fun arriveStation( seq: Int, siteId: Long, taskId: Long): Observable? + + fun endTask( taskId: Long): Observable? } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/RepositoryManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/RepositoryManager.kt index 45863b4860..4252b0a604 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/RepositoryManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/RepositoryManager.kt @@ -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?{ + return repository.loadCurrentTaskInfo() + } + fun queryCanUseLine() : Observable?>? { 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?{ + return repository.arriveStation(seq,siteId,taskId) + } + + fun endTask(taskId: Long): Observable?{ + return repository.endTask(taskId) + } + + } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bean/request/BusCloseTaskRequest.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bean/request/BusCloseTaskRequest.java index 2450a0c9d3..657446581e 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bean/request/BusCloseTaskRequest.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bean/request/BusCloseTaskRequest.java @@ -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(); diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/bus/BusRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/bus/BusRepository.kt index eebcf00c3d..d8e805efb3 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/bus/BusRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/bus/BusRepository.kt @@ -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? { + TODO("Not yet implemented") + } + override fun queryCanUseLine(): Observable?>? { 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? { + TODO("Not yet implemented") + } + + override fun endTask(taskId: Long): Observable? { + TODO("Not yet implemented") + } + } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/bus/OrderServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/bus/OrderServiceManager.kt index efa6e496f0..2fe72c47ea 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/bus/OrderServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/bus/OrderServiceManager.kt @@ -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?) { + fun abortTask(context: Context, taskId: Long, callback: OchCommonServiceCallback?) { 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?) { + fun endTask(context: Context, taskId: Long, callback: OchCommonServiceCallback?) { M_SERVICE.endTask( MoGoAiCloudClientConfig.getInstance().serviceAppId, SharedPrefsMgr.getInstance().token, diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/bussaas/BusSaasRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/bussaas/BusSaasRepository.kt index 45cd9db6c6..25cb5a3eed 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/bussaas/BusSaasRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/bussaas/BusSaasRepository.kt @@ -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? { + TODO("Not yet implemented") + } + override fun queryCanUseLine(): Observable?>? { 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? { + TODO("Not yet implemented") + } + + override fun endTask(taskId: Long): Observable? { + TODO("Not yet implemented") + } + } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/bussaas/OrderServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/bussaas/OrderServiceManager.kt index c07b371ef7..6ef1b87935 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/bussaas/OrderServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/bussaas/OrderServiceManager.kt @@ -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?) { + fun abortTask(context: Context, taskId: Long, callback: OchCommonServiceCallback?) { M_SAAS_SERVICE.abortTask( MoGoAiCloudClientConfig.getInstance().serviceAppId, @@ -95,7 +93,7 @@ object OrderServiceManager { * @param callback */ @JvmStatic - fun endTask(context: Context, taskId: Int, callback: OchCommonServiceCallback?) { + fun endTask(context: Context, taskId: Long, callback: OchCommonServiceCallback?) { M_SAAS_SERVICE.endTask( MoGoAiCloudClientConfig.getInstance().serviceAppId, diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/shuttle/OrderServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/shuttle/OrderServiceManager.kt index 5b335e743b..47e48f0043 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/shuttle/OrderServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/shuttle/OrderServiceManager.kt @@ -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?) { - //获取当前高德坐标 - mService.queryBusRoutes( + fun queryBusRoutes(): Observable? { + 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?) { + fun abortTask(context: Context, taskId: Long, callback: OchCommonServiceCallback?) { 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?) { - mService.endTask( + fun endTask(taskId: Long): Observable? { + 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? - ) { - mService.arriveSiteStation( + seq: Int, siteId: Long, taskId: Long, writeVersion: Long, + ): Observable? { + 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 diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/shuttle/ShuttleRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/shuttle/ShuttleRepository.kt index 6985c3f964..c4bdeb7659 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/shuttle/ShuttleRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/shuttle/ShuttleRepository.kt @@ -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? { + return OrderServiceManager.queryBusRoutes() + ?.flatMap { busRoutesResult -> + if (!busRoutesResult.sites.isNullOrEmpty() && busRoutesResult.sites.size > 1) { + OchChainLogManager.writeChainLogDb( + "业务数据", + "本地没有正在运行的数据,服务器端有${busRoutesResult}" + ) + val result = mutableListOf() + 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?> { 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? { + return OrderServiceManager.arriveSiteStation(seq,siteId,taskId,System.currentTimeMillis()) + } + + override fun endTask(taskId: Long): Observable? { + return OrderServiceManager.endTask(taskId) + } + } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/shuttlesaas/OrderServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/shuttlesaas/OrderServiceManager.kt index 367d1c86d2..71daa3963b 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/shuttlesaas/OrderServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/shuttlesaas/OrderServiceManager.kt @@ -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?) { + fun queryBusRoutes(): Observable? { //获取当前高德坐标 - 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()) + } } /** diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/shuttlesaas/ShuttleSaasRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/shuttlesaas/ShuttleSaasRepository.kt index c6f6b514db..8c3aa7d0b3 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/shuttlesaas/ShuttleSaasRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/impl/shuttlesaas/ShuttleSaasRepository.kt @@ -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? { + + 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):Observable? { + 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? { + 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?>? { return LineDb.queryCanUseLine() @@ -66,4 +197,76 @@ class ShuttleSaasRepository : IRepository { } + override fun arriveStation(seq: Int, siteId: Long, taskId: Long): Observable? { + // 开始站点: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? { + 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) + } + } + } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningView.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningView.kt index b8dba0274a..842f08d54f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningView.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningView.kt @@ -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)