diff --git a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/manager/CharterTrajectoryManager.kt b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/manager/CharterTrajectoryManager.kt index af7bbc52d3..b63b9da27c 100644 --- a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/manager/CharterTrajectoryManager.kt +++ b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/manager/CharterTrajectoryManager.kt @@ -71,7 +71,6 @@ object CharterTrajectoryManager : ITrajectoryListListener { } override fun onDownLoadReady(lineId: Long) { - super.onDownLoadReady(lineId) DriverM1Model.get().getBusOrderResult()?.lineId?.let { syncTrajectoryInfo(it, DriverM1Model.get().getBusOrderResult()?.lineName!!) } diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt index 542d805d98..0aa0f0470d 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt @@ -15,6 +15,7 @@ import com.mogo.eagle.core.utilcode.mogo.Product import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON import com.mogo.eagle.core.utilcode.util.DateTimeUtils import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.eagle.core.utilcode.util.NetworkUtils @@ -38,8 +39,6 @@ import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.ToastUtilsOch import com.mogo.och.common.module.wigets.toast.ToastCharterUtils import com.mogo.och.data.manager.cache.CacheDataManager -import com.mogo.skin.Skin -import com.mogo.skin.SkinManager import io.reactivex.Observable import io.reactivex.disposables.Disposable import java.util.concurrent.TimeUnit @@ -54,7 +53,7 @@ import java.util.concurrent.TimeUnit @SuppressLint("StaticFieldLeak") object LoginModel { - private const val TAG = "LoginModel" + private const val TAG = "${M_OCHCOMMON}LoginModel" private var mContext: Context? = null var iTaxiLoginCallback: ITaxiLoginCallback? = null private var subscribe: Disposable? = null @@ -182,8 +181,8 @@ object LoginModel { * 8、登录页面关闭后查下状态 */ fun queryCarStatus(readCatche:Boolean = true) { - Log.d("登录","设置源:queryCarStatus") mContext?.let { + Log.d(TAG,"设置源:queryCarStatus") if(readCatche){ val logingInfoJson = OchSPManager.getString(loginInfoKey) val timeText = DateTimeUtils.getTimeText(DateTimeUtils.yyyy_MM_dd) @@ -242,8 +241,7 @@ object LoginModel { @Synchronized private fun go2LoginInfo(data: DriverStatusQueryRespBean?, source: String) { - CallerLogger.d(TAG,"设置源:${source}") - Log.d("登录","设置源:${source}") + d(TAG,"设置源:${source}") data?.let { LoginStatusManager.setLoginInfo(data.data) } @@ -269,7 +267,7 @@ object LoginModel { val loginInfo4Json = GsonUtils.toJson(data) OchSPManager.putString(loginInfoKey,timeText+loginInfo4Json) LoginStatusManager.setOpenOrderType(data.data.servingStatus) - d(SceneConstant.M_TAXI + TAG, "登录信息:$data") + d(TAG, "登录信息:$data") loginSuccess(data) } } @@ -278,7 +276,7 @@ object LoginModel { fun logout() { val location4Login = TaxiLogoutReqBean.Location4Login() if (FunctionBuildConfig.isOffLine) { - CallerLogger.d(TAG, "离线模式登录后退出 setLoginStatus:${LoginStatusEnum.Logout}") + d(TAG, "离线模式登录后退出 setLoginStatus:${LoginStatusEnum.Logout}") LoginStatusManager.setLoginStatus(LoginStatusEnum.Logout) FunctionBuildConfig.isOffLine = false return @@ -313,7 +311,7 @@ object LoginModel { } fun loginSuccess(data: DriverStatusQueryRespBean?) { - CallerLogger.d(SceneConstant.M_TAXI + TAG, "loginSuccess:${LoginStatusManager.isLogin()}") + d(TAG, "loginSuccess:${LoginStatusManager.isLogin()}") if (LoginStatusManager.isLogin()) { SharedPrefsMgr.getInstance().putString("och_account", data?.data?.phone) } else { @@ -334,13 +332,13 @@ object LoginModel { fun loginFail(isLogin: Boolean) { - CallerLogger.d(SceneConstant.M_TAXI + TAG, "loginFail:$isLogin") + d(TAG, "loginFail:$isLogin") updateLoginLocalStatus(0) } fun gotoOfflineMode() { FunctionBuildConfig.isOffLine = true - CallerLogger.d(TAG, "离线模式登录 setLoginStatus:${LoginStatusEnum.Login}") + d(TAG, "离线模式登录 setLoginStatus:${LoginStatusEnum.Login}") LoginStatusManager.setLoginStatus(LoginStatusEnum.Login) } diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/net/OchCommonServiceManager.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/net/OchCommonServiceManager.kt index 9706f1c66b..520b89c17b 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/net/OchCommonServiceManager.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/net/OchCommonServiceManager.kt @@ -20,6 +20,7 @@ import com.mogo.och.common.module.network.OchCommonSubscribeImpl import com.mogo.och.common.module.network.interceptor.transformTry import com.mogo.commons.env.ProjectUtils import com.mogo.och.common.module.manager.cache.OchSPManager +import com.mogo.och.common.module.utils.RxUtils object OchCommonServiceManager { diff --git a/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt b/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt index c84d05ca58..db07b47f75 100644 --- a/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt +++ b/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt @@ -254,6 +254,10 @@ object OchAutoPilotStatusListenerManager : CallerBase? + //查询线路对应的轨迹信息 + @Query("SELECT * FROM ${TaskDataBean.taskDataTable}") + fun queryAllTask(): List? + + // 删除过时数据 @Query("DELETE FROM ${TaskDataBean.taskDataTable} WHERE task_get_time < :zeroTime") fun deleteObsoleteData(zeroTime: Long = DateTimeUtil.getCurrentDateZero()): Int diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/LineDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/LineDb.kt index a078f8e25d..ff793c26fd 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/LineDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/LineDb.kt @@ -29,10 +29,14 @@ object LineDb: IDbRepository { lineDao?.deleteWeltData() } + fun queryCanUserLine(): List? { + return lineDao?.loadData() + } + /** * 读取可用线路 */ - fun queryCanUseLine(): Observable?>? { + fun queryCanUseLineRx(): Observable?>? { return lineDao?.loadDataRx() } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskDb.kt index 498976cf3f..92312f89b0 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskDb.kt @@ -151,6 +151,10 @@ object TaskDb : IDbRepository { return taskDataDao?.queryTaskByTaskIdOne(taskId) } + fun queryAllTask(): List? { + return taskDataDao?.queryAllTask() + } + fun endTask(taskId: Long) { BizLoopManager.runInIoThread{ @@ -191,5 +195,16 @@ object TaskDb : IDbRepository { } } + fun restoreTask(taskId: Long) { + // 更新task状态 + taskDataDao?.queryTaskByTaskIdOne(taskId)?.let { + it.startTime = System.currentTimeMillis() + it.status = TaskDataBean.useing + // 更新任务状态 + taskDataDao?.updateStatus(System.currentTimeMillis(),TaskDataBean.useing,it.id) + OchChainLogManager.writeChainLogDb("恢复任务", "线路任务改为正在执行的状态") + } + } + } \ No newline at end of file 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 0506cece69..f7eef5c184 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 @@ -6,17 +6,18 @@ import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.weaknet.repository.db.IDbRepository import com.mogo.och.weaknet.repository.db.MyDataBase +import com.mogo.och.weaknet.repository.db.bean.LineDataBean import com.mogo.och.weaknet.repository.db.bean.TaskSiteDataBean import com.mogo.och.weaknet.repository.db.dao.TaskSiteDataDao import com.mogo.och.weaknet.repository.db.exception.DbException -object TaskSiteDb: IDbRepository { +object TaskSiteDb : IDbRepository { private const val TAG = "${M_BUS}TaskSiteDb" private var taskSiteDataDao: TaskSiteDataDao? = null get() { - if(field==null){ + if (field == null) { field = MyDataBase.instance?.taskSiteDataDao register() } @@ -28,56 +29,66 @@ object TaskSiteDb: IDbRepository { } - fun addOrUpdate(vararg lineDataBean: TaskSiteDataBean){ + fun addOrUpdate(vararg lineDataBean: TaskSiteDataBean) { taskSiteDataDao?.insert(*lineDataBean) } // 开始线路 - fun startTask(taskId: Long, linId: Long,lineName:String):Int? { + fun startTask(taskId: Long, linId: Long, lineName: String): Int? { // 获取线路的站点 var startTime = System.currentTimeMillis() val querySites = SiteDb.querySiteByLineId(linId)?.distinctBy { it.siteId } - if(querySites.isNullOrEmpty()){ + if (querySites.isNullOrEmpty()) { throw DbException("没有站点数据") } - CallerLogger.d(TAG,"查询站点用时:${System.currentTimeMillis()-startTime}") + CallerLogger.d(TAG, "查询站点用时:${System.currentTimeMillis() - startTime}") startTime = System.currentTimeMillis() val toTaskSiteDatas = TaskSiteDataBean.toTaskSiteDatas( querySites, taskId, lineName ) - CallerLogger.d(TAG,"数据转换用时:${System.currentTimeMillis()-startTime}") - if(toTaskSiteDatas.size<2){ + CallerLogger.d(TAG, "数据转换用时:${System.currentTimeMillis() - startTime}") + if (toTaskSiteDatas.size < 2) { throw DbException("站点数据不全请稍后再试") } // 把线路所有的站点搬迁到运行中表格中 startTime = System.currentTimeMillis() - val result = taskSiteDataDao?.insert(*toTaskSiteDatas.toTypedArray()) - CallerLogger.d(TAG,"数据插入用时:${System.currentTimeMillis()-startTime}") - return if(result.isNullOrEmpty()){ + val result = taskSiteDataDao?.insert(*toTaskSiteDatas.toTypedArray()) + CallerLogger.d(TAG, "数据插入用时:${System.currentTimeMillis() - startTime}") + return if (result.isNullOrEmpty()) { null - }else{ + } else { result.size } } // 滑动出发 - fun updateLeave(taskId: Long, siteId: Long, leave:Boolean) { - BizLoopManager.runInIoThread{ - taskSiteDataDao?.updateLeave(taskId,siteId,if(leave) 1 else 0) + fun updateLeave(taskId: Long, siteId: Long, leave: Boolean) { + BizLoopManager.runInIoThread { + taskSiteDataDao?.updateLeave(taskId, siteId, if (leave) 1 else 0) } } - fun updateDrivingStatus(taskId: Long, siteId: Long, drivingStatus: Int){ - BizLoopManager.runInIoThread{ - taskSiteDataDao?.updateDrivingStatus(taskId,siteId,drivingStatus) + fun updateDrivingStatus(taskId: Long, siteId: Long, drivingStatus: Int) { + BizLoopManager.runInIoThread { + taskSiteDataDao?.updateDrivingStatus(taskId, siteId, drivingStatus) } } - fun updateDrivingStatusAndLeave(taskId: Long, siteId: Long, drivingStatus: Int, leave: Boolean){ - BizLoopManager.runInIoThread{ - taskSiteDataDao?.updateDrivingStatusANdLeave(taskId,siteId,drivingStatus,if(leave) 1 else 0) + fun updateDrivingStatusAndLeave( + taskId: Long, + siteId: Long, + drivingStatus: Int, + leave: Boolean + ) { + BizLoopManager.runInIoThread { + taskSiteDataDao?.updateDrivingStatusANdLeave( + taskId, + siteId, + drivingStatus, + if (leave) 1 else 0 + ) } } @@ -85,15 +96,71 @@ object TaskSiteDb: IDbRepository { return taskSiteDataDao?.queryRunningTask(taskId) } - fun deleteErrorData(taskId: Long){ + fun deleteErrorData(taskId: Long) { taskSiteDataDao?.deleteErrorDataByTaskId(taskId) } - fun deleteObsoleteData(){ + fun deleteObsoleteData() { taskSiteDataDao?.deleteObsoleteData()?.let { - OchChainLogManager.writeChainLogDb("删除临时数据","rurnning Task删除数量:${it}") + OchChainLogManager.writeChainLogDb("删除临时数据", "rurnning Task删除数量:${it}") } } + /** + * 从后台恢复正在执行的任务 + */ + fun restoreRunningTask( + taskId: Long, + currentSiteId: Long, + leaving: Boolean, + lineInfo: LineDataBean + ) { + val taskHistory = queryRunningTask(taskId) + if (!taskHistory.isNullOrEmpty()) { + //有错误数据 + deleteErrorData(taskId) + } + // 获取线路的站点 + val querySites = SiteDb.querySiteByLineId(lineInfo.lineId!!)?.distinctBy { it.siteId } + if (querySites.isNullOrEmpty()) { + throw DbException("没有站点数据") + } + val toTaskSiteDatas = TaskSiteDataBean.toTaskSiteDatas( + querySites, + taskId, + lineInfo.lineName!! + ) + val resetData = resetInfo(currentSiteId, leaving, toTaskSiteDatas) + // 把线路所有的站点搬迁到运行中表格中 + taskSiteDataDao?.insert(*resetData.toTypedArray()) + } + + fun resetInfo( + currentSiteId: Long, + leaving: Boolean, + runningSite: MutableList + ): MutableList { + var currentSeq = 0 + runningSite.forEach { + if (it.siteId == currentSiteId) { + currentSeq = it.seq ?: 0 + it.drivingStatus = TaskSiteDataBean.drivingStatusCurrent + it.leaving = leaving + return@forEach + } + } + runningSite.forEach { + val seq = it.seq ?: 0 + if (seq < currentSeq) { + it.drivingStatus = TaskSiteDataBean.drivingStatusPassed + it.leaving = true + } else if (seq > currentSeq) { + it.drivingStatus = TaskSiteDataBean.drivingStatusNotArrived + it.leaving = false + } + } + return runningSite + } + } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt index 50a93f0bfe..2add5a800e 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt @@ -11,12 +11,15 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.bridge.autopilot.line.LineManager +import com.mogo.och.common.module.biz.login.LoginStatusManager import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.data.bean.ContraiInfo import com.mogo.och.weaknet.bean.request.ShuttleEventRequest import com.mogo.och.weaknet.bean.response.BusRoutesResponse import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse +import com.mogo.och.weaknet.constant.BusConst import com.mogo.och.weaknet.model.LineModel import com.mogo.och.weaknet.model.LineModel.currentTask import com.mogo.och.weaknet.repository.db.bean.LineDataBean @@ -25,6 +28,7 @@ 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.SiteDb import com.mogo.och.weaknet.repository.db.repository.TaskDb import com.mogo.och.weaknet.repository.db.repository.TaskSiteDb import com.mogo.och.weaknet.repository.line.ILineRepository @@ -79,7 +83,7 @@ class WeaknetRepository : ILineRepository { if (runningTaskInfo.isNullOrEmpty()) { // 本地没有进行中的任务 CallerLogger.d(TAG, "loadCurrentTaskInfo 没有查询到正在运行的任务") - return@flatMap loadServerRuningTask() + return@flatMap loadServerRuningTask(1) } else if (runningTaskInfo.size > 1) { // 本地有多条正在进行的任务 需要check event // 1 比对event表 1 清理错误数据 2 加载后台数据 @@ -96,7 +100,7 @@ class WeaknetRepository : ILineRepository { CallerLogger.d(TAG, "异常情况:有任务:${runningTaskInfo} runningTask 表格没有对应的数据:${runnintTaskAndSites}") OchChainLogManager.writeChainLogDb("加载任务", "异常情况:有任务:${runningTaskInfo} runningTask 表格没有对应的数据:${runnintTaskAndSites}") TaskSiteDb.deleteErrorData(it) - return@flatMap loadServerRuningTask() + return@flatMap loadServerRuningTask(1) } val db2Beans = BusRoutesResponse.db2Beans(runnintTaskAndSites) LineModel.stationList = db2Beans.first @@ -148,7 +152,7 @@ class WeaknetRepository : ILineRepository { TaskDb.addOrUpdate(*tempList.toTypedArray()) CallerLogger.d(TAG,"异常情况:多个正在进行的任务 task:${runningTaskInfo} event:${queryLastData.taskId}有一个和event表对应使用相同的一个 另一个置为已使用") OchChainLogManager.writeChainLogDb("加载任务", "异常情况:多个正在进行的任务 task:${runningTaskInfo} event:${queryLastData.taskId}有一个和event表对应使用相同的一个 另一个置为已使用") - return@flatMap loadServerRuningTask() + return@flatMap loadServerRuningTask(1) } } // 全部置为已使用 通过接口恢复数据 @@ -163,51 +167,163 @@ class WeaknetRepository : ILineRepository { } - private fun loadServerRuningTask(): Observable? { - return weakNetInterface?.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}" - ) - CallerLogger.d(TAG,"本地没有正在运行的数据,服务器端有${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 { + private fun loadServerRuningTask(loadCount:Int): Observable? { + if(ProjectUtils.isSaas()){ + // 从登录接口获取数据 + // 1、从登录接口获取业务数据 + // 2、check 数据库数据 + // 3、数据库没有数据 做延迟等待同步接口同步基础数据 ?? 等待基础数据同步完在进行 + // 4、恢复本地正在运行的数据 + val loginInfo = LoginStatusManager.getLoginInfo() + return Observable.just(loginInfo).flatMap { + // check数据 是否正在之心 + + val taskId = if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)|| + AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)){ + it.taskId + }else{ + it.detailId + } + val taskDate = it.taskDate + val currentSiteId = it.currentSite + val leaving = it.leaving + val lineId = it.lineId + + if(lineId<=0){ return@flatMap Observable.just(false) } + if(taskId<=0||currentSiteId<=0||taskDate<=0){ + return@flatMap Observable.just(false) + } + // 日期是否正确 + if (!DateTimeUtil.isSameDay(System.currentTimeMillis(),taskDate)) { + return@flatMap Observable.just(false) + } + + // region 任务本地是否存在 + val allTask = TaskDb.queryAllTask() + if(allTask.isNullOrEmpty()){ + if(loadCount== BusConst.waitCount) + return@flatMap Observable.just(false) + CallerLogger.d(TAG,"本地没有任务等待2s后 重新查询") + Thread.sleep(BusConst.waitSysAllData) + return@flatMap loadServerRuningTask(loadCount+1) + } + // 服务端任务已被删除 + val queryTaskById = TaskDb.queryTaskById(taskId) + if(queryTaskById==null){ + CallerLogger.d(TAG,"服务端正在执行${taskId},本地没有此任务") + OchChainLogManager.writeChainLogDb("错误信息","服务端正在执行${taskId},本地没有此任务") + return@flatMap Observable.just(false) + } + // endregion + + // region 检查线路 + val allLineData = LineDb.queryCanUserLine() + if(allLineData.isNullOrEmpty()){ + if(loadCount == BusConst.waitCount) + return@flatMap Observable.just(false) + CallerLogger.d(TAG,"本地没有线路等待2s后 重新查询") + Thread.sleep(BusConst.waitSysAllData) + if(loadCount>1) { + return@flatMap loadServerRuningTask(1) + } + else { + return@flatMap loadServerRuningTask(loadCount + 1) + } + } + // 正在执行的站点是否在此线路中 + var containLine = false + var lineInfo:LineDataBean?=null + allLineData.forEach {lineItem-> + if (lineItem.lineId==lineId) { + containLine = true + lineInfo = lineItem + } + } + if(!containLine){ + CallerLogger.d(TAG,"服务端正在执行${lineId},线路已被删除") + OchChainLogManager.writeChainLogDb("错误信息","服务端正在执行${lineId},线路已被删除") + return@flatMap Observable.just(false) + } + // endregion + + // region 检查站点 包括个数和是否包含 currentSite + val siteWithLine = SiteDb.querySiteByLineId(lineId) + if(siteWithLine.isNullOrEmpty()||siteWithLine.size<2){ + CallerLogger.d(TAG,"服务端正在执行${taskId},线路站点错误${siteWithLine}") + OchChainLogManager.writeChainLogDb("错误信息","服务端正在执行${taskId},线路站点错误${siteWithLine}") + return@flatMap Observable.just(false) + } + // 正在执行的站点是否在此线路中 + var containSite = false + siteWithLine.forEach { + if (it.siteId==currentSiteId) { + containSite = true + } + } + if(!containSite){ + CallerLogger.d(TAG,"服务端正在执行${taskId},线路站点错误${siteWithLine}") + OchChainLogManager.writeChainLogDb("错误信息","服务端正在执行${taskId},${siteWithLine}站点不包含正在执行的站点:${currentSiteId}") + return@flatMap Observable.just(false) + } + // endregion + + // 恢复任务 + TaskDb.restoreTask(taskId) + + // 恢复正在执行任务表 + TaskSiteDb.restoreRunningTask(taskId,currentSiteId,leaving,lineInfo!!) + + return@flatMap loadCurrentTaskInfo() + } + }else { + // 从特定接口回复数据 + return weakNetInterface?.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}" + ) + CallerLogger.d(TAG, "本地没有正在运行的数据,服务器端有${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) } - return@flatMap Observable.just(false) } } override fun queryCanUseLine(): Observable?>? { - return LineDb.queryCanUseLine() + return LineDb.queryCanUseLineRx() } override fun queryCanUserTask(lineId: Long): Observable?>? { diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt index 605a791148..196819f7e6 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt @@ -6,7 +6,6 @@ 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.manager.cache.OchSPManager import com.mogo.och.common.module.network.OchCommonNet import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.network.OchCommonSubscribeImpl @@ -14,7 +13,6 @@ import com.mogo.och.common.module.network.interceptor.transformIoTry import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse import com.mogo.och.weaknet.bean.request.ShuttleEventRequest -import com.mogo.och.weaknet.repository.net.bean.request.WriteOffCountReqBean import com.mogo.och.weaknet.repository.net.NetInterface import io.reactivex.Observable diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/writeoff/WriteOffViewModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/writeoff/WriteOffViewModel.kt index 9c4ef835fd..5e1ffb6d2b 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/writeoff/WriteOffViewModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/writeoff/WriteOffViewModel.kt @@ -55,7 +55,6 @@ class WriteOffViewModel : ViewModel() { val showText = AbsMogoApplication.getApp() .getString(R.string.shuttle_write_off_count, t.second) - CallerLogger.d(SceneConstant.M_BUS + TAG, "显示文案:${showText}") Observable.just(Pair(showText, t.first)) } .observeOn(AndroidSchedulers.mainThread()) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/util/BusTrajectoryManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/util/BusTrajectoryManager.kt index 1c9048e0bc..d5900b5e94 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/util/BusTrajectoryManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/util/BusTrajectoryManager.kt @@ -165,6 +165,11 @@ object BusTrajectoryManager : ITrajectoryListListener { } } + /** + * download 加orderid + * fsm 回传orderid + * 下载轨迹 添加回执超时处理 + */ private fun sendTrajectoryReq() { if (mAutopilotControlParameters == null || mAutopilotControlParameters!!.autoPilotLine == null || mAutopilotControlParameters!!.autoPilotLine!!.lineId == -1L) { e(TAG, "sendTrajectoryReq(): mAutoPilotLine is null!!!")