From 8745eec4a14a4d44bea8639b4814e93535342eba Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Wed, 23 Oct 2024 15:10:52 +0800 Subject: [PATCH 1/3] =?UTF-8?q?[6.7.0]=E4=BF=AE=E5=A4=8D=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E9=80=89=E6=8B=A9=E2=80=9C=E6=95=85=E9=9A=9C?= =?UTF-8?q?=E5=8E=9F=E5=9B=A0=E2=80=9D=E5=90=8E=E5=87=BA=E7=8E=B0=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt | 8 ++++++-- .../eagle/core/function/hmi/bone/tab/FaultReasonView.kt | 2 ++ .../src/main/res/layout/view_fault_reason.xml | 9 +++++---- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt index 77a49ee323..3cf42d5370 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt @@ -107,13 +107,17 @@ class BoneTabLayout @JvmOverloads constructor( faultReasonView.setClickListener(object: FaultReasonView.ClickListener{ override fun closeFaultReasonView() { - updateTabType(TabType.REPORT_INFO) + if(tabType == TabType.REPORT_INFO){ + updateTabType(TabType.REPORT_INFO) + } } }) workOrderView.setClickListener(object: WorkOrderView.ClickListener{ override fun closeWorkOrderView() { - updateTabType(TabType.REPORT_INFO) + if(tabType == TabType.REPORT_INFO){ + updateTabType(TabType.REPORT_INFO) + } } }) } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/FaultReasonView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/FaultReasonView.kt index fab38a6847..48d414a11d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/FaultReasonView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/FaultReasonView.kt @@ -580,6 +580,8 @@ class FaultReasonView @JvmOverloads constructor( level2Name = "" level3Name = "" reportNote = "" //上报描述 + tvUploadSuccess.visibility = View.GONE + faultReasonGroup.visibility = View.VISIBLE } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_fault_reason.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_fault_reason.xml index 6e8e28b552..8a70f38525 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_fault_reason.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_fault_reason.xml @@ -38,7 +38,8 @@ android:textSize="@dimen/sp_32" app:layout_constraintTop_toTopOf="@id/tvFaultTitle" app:layout_constraintBottom_toBottomOf="@id/tvFaultTitle" - app:layout_constraintRight_toRightOf="@id/tvFaultType" + app:layout_constraintRight_toRightOf="@id/viewTitleBg" + android:layout_marginEnd="@dimen/dp_40" /> \ No newline at end of file From 63dc124902b35caab5eb6df4fa578f4c94e1efb4 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 23 Oct 2024 10:53:57 +0800 Subject: [PATCH 2/3] =?UTF-8?q?[6.7.2]=20[fix]=20[=E7=AB=99=E7=82=B9?= =?UTF-8?q?=E9=87=8D=E5=A4=8D]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/weaknet/model/EventModel.kt | 6 ++++++ .../weaknet/repository/db/dao/SiteDataDao.kt | 8 ++++++++ .../weaknet/repository/db/repository/SiteDb.kt | 17 +++++++++++++++++ .../repository/db/repository/TaskSiteDb.kt | 2 +- 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/EventModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/EventModel.kt index 2c78d450e8..a7e85831a0 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/EventModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/EventModel.kt @@ -13,6 +13,7 @@ import com.mogo.och.weaknet.repository.net.shuttlesaas.ShuttleSaasServiceManager import com.mogo.och.weaknet.repository.db.bean.EventDataBean import com.mogo.och.weaknet.repository.db.repository.EventDb import com.mogo.och.weaknet.repository.RepositoryManager +import com.mogo.och.weaknet.repository.db.repository.SiteDb import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers @@ -43,6 +44,11 @@ object EventModel : EventDb.EventCallback { override fun notifySyn() { BizLoopManager.removeCallback(loopUpdateInfo) updateEvent() + checkDbData() + } + + private fun checkDbData() { + SiteDb.checkData() } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/SiteDataDao.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/SiteDataDao.kt index 4860806608..736aea9fdb 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/SiteDataDao.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/SiteDataDao.kt @@ -1,6 +1,7 @@ package com.mogo.och.weaknet.repository.db.dao import androidx.room.Dao +import androidx.room.Delete import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query @@ -12,6 +13,10 @@ interface SiteDataDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(vararg lineDataBean: SiteDataBean) + @Delete() + fun deleteById(vararg siteDataBean: SiteDataBean) + + // 线路删除时同步删除所属站点 @Query("DELETE FROM ${SiteDataBean.siteDataTable} WHERE line_id = :lineId") fun deleteByLineId(lineId: Long) @@ -26,6 +31,9 @@ interface SiteDataDao { @Query("SELECT * FROM ${SiteDataBean.siteDataTable} WHERE line_id = :lineId") fun querySitesByLineId(lineId: Long):List? + @Query("SELECT * FROM ${SiteDataBean.siteDataTable} GROUP by md5 HAVING count(1) > 1") + fun checkData():List? + fun querySiteByLineIdAndSiteId(lineId: Long,siteId:Long): SiteDataBean?{ val queryContrailByLineId = querySitesByLineIdAndSiteId(lineId,siteId) return if(queryContrailByLineId.isNullOrEmpty()){ diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/SiteDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/SiteDb.kt index 8dd6856a00..9a335dad7e 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/SiteDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/SiteDb.kt @@ -1,6 +1,9 @@ package com.mogo.och.weaknet.repository.db.repository import com.mogo.eagle.core.network.utils.digest.DigestUtils +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.util.TAG +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.MyDataBase import com.mogo.och.weaknet.repository.db.bean.SiteDataBean @@ -31,11 +34,25 @@ object SiteDb { siteDataDao.insert(it) } } + checkData() } } BizLoopManager.runInIoThread(runnable) } + fun checkData() { + CallerLogger.d(TAG,"检测站点数据") + siteDataDao?.checkData()?.let { list -> + list.forEach { + siteDataDao?.deleteById(it) + } + if (list.isNotEmpty()) { + OchChainLogManager.writeChainLogDb("数据检测", "有重复数据${list}") + checkData() + } + } + } + fun deleteByLineId(lineId: Long) { siteDataDao?.deleteByLineId(lineId) } 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 d7b5f784fa..4c1fb09a55 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 @@ -25,7 +25,7 @@ object TaskSiteDb { fun startTask(taskId: Long, linId: Long,lineName:String):Int? { // 获取线路的站点 var startTime = System.currentTimeMillis() - val querySites = SiteDb.querySiteByLineId(linId) + val querySites = SiteDb.querySiteByLineId(linId)?.distinctBy { it.siteId } if(querySites.isNullOrEmpty()){ throw DbException("没有站点数据") } From 820d87d10181fe2ecf37d5a597f1f1e74cf29592 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 23 Oct 2024 15:14:52 +0800 Subject: [PATCH 3/3] =?UTF-8?q?[6.7.2]=20[fix]=20[=E6=9C=89=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E7=9A=84=E4=BD=BF=E7=94=A8=E7=BC=93=E5=AD=98]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/biz/login/LoginProvider.kt | 4 +-- .../mogo/och/biz/login/model/LoginModel.kt | 27 ++++++++++++------- .../och/biz/login/presenter/LoginPresenter.kt | 3 ++- .../common/module/biz/login/LoginService.kt | 2 +- .../module/biz/login/LoginStatusManager.kt | 4 +-- .../och/facade/route/FacadeDriverProvider.kt | 3 ++- .../repository/net/bus/BusServiceManager.kt | 2 +- .../net/bussaas/BusShuttleServiceManager.kt | 2 +- .../net/shuttle/ShuttleServiceManager.kt | 2 +- .../shuttlesaas/ShuttleSaasServiceManager.kt | 2 +- 10 files changed, 31 insertions(+), 20 deletions(-) diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/LoginProvider.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/LoginProvider.kt index 7ea43aa64b..10393d6dc3 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/LoginProvider.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/LoginProvider.kt @@ -99,9 +99,9 @@ class LoginProvider : LoginService { } } - override fun queryLoginStatusByNet() { + override fun queryLoginStatusByNet(readCatche:Boolean) { CallerLogger.d(tag, "queryLoginStatusByNet") - LoginModel.queryCarStatus() + LoginModel.queryCarStatus(readCatche) } override fun loginOut() { 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 0aea55136f..df85bc73ed 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 @@ -48,7 +48,7 @@ import java.util.concurrent.TimeUnit @SuppressLint("StaticFieldLeak") object LoginModel { - private const val TAG = "TaxiLoginModel" + private const val TAG = "LoginModel" private var mContext: Context? = null var iTaxiLoginCallback: ITaxiLoginCallback? = null private var subscribe: Disposable? = null @@ -59,6 +59,7 @@ object LoginModel { d(TAG, "onIntentReceived = %s", intentStr) if (ConnectivityManager.CONNECTIVITY_ACTION == intentStr) { if (NetworkUtils.isConnected(mContext)) { + // 网络链接成功可以先读取本地再获取服务器 queryCarStatus() } } @@ -135,7 +136,8 @@ object LoginModel { if (null != data && 0 == data.code) { // 获取验证码成功 ToastCharterUtils.showToastShort(mContext?.getString(R.string.module_och_taxi_login_login_success)) - queryCarStatus() + // 登录成功需要新的值 + queryCarStatus(false) } else { if (data != null) { ToastCharterUtils.showToastShort(data.code.toString()) @@ -169,20 +171,22 @@ object LoginModel { * 7、网络状态变更后查询 * 8、登录页面关闭后查下状态 */ - fun queryCarStatus() { + fun queryCarStatus(readCatche:Boolean = true) { mContext?.let { + if(readCatche){ val logingInfoJson = OchSPManager.getString(loginInfoKey) val timeText = DateTimeUtils.getTimeText(DateTimeUtils.yyyy_MM_dd) logingInfoJson?.let {logininfo-> if(logininfo.startsWith(timeText)){ val json = logingInfoJson.replace(timeText,"" ) val oldLoginInfo = GsonUtils.fromJson(json, DriverStatusQueryRespBean::class.java) - go2LoginInfo(oldLoginInfo) + go2LoginInfo(oldLoginInfo,"缓存获取") } } + } OchCommonServiceManager.queryDriverServiceStatus(it, object : OchCommonServiceCallback { override fun onSuccess(data: DriverStatusQueryRespBean?) { - go2LoginInfo(data) + go2LoginInfo(data,"接口获取") } override fun onError() { @@ -192,15 +196,17 @@ object LoginModel { ToastCharterUtils.showToastShort(mContext!!.getString(R.string.request_error_tip)) } LoginStatusManager.setLoginError(-10012,"网络错误") + // 依赖参数 subscribe = Observable.timer(5, TimeUnit.SECONDS) - .subscribe { _: Long? -> queryCarStatus() } + .subscribe { _: Long? -> queryCarStatus(readCatche) } } override fun onFail(code: Int, msg: String) { LoginStatusManager.setLoginError(code,"msg:${msg}") ToastUtilsOch.showWithCodeMessage(code, msg) + // 依赖参数 subscribe = Observable.timer(3, TimeUnit.SECONDS) - .subscribe { _: Long? -> queryCarStatus() } + .subscribe { _: Long? -> queryCarStatus(readCatche) } // if (code == OchCommonConst.WAIT_TAKEN) { // // } else { @@ -211,7 +217,9 @@ object LoginModel { } } - private fun go2LoginInfo(data: DriverStatusQueryRespBean?) { + @Synchronized + private fun go2LoginInfo(data: DriverStatusQueryRespBean?, source: String) { + CallerLogger.d(TAG,"设置源:${source}") data?.let { LoginStatusManager.setLoginInfo(data.data) } @@ -258,7 +266,8 @@ object LoginModel { if (null != data && 0 == data.code) { loginFail(false) OchSPManager.remove(loginInfoKey) - queryCarStatus() + // 退出登录成功需要查询新的 + queryCarStatus(false) } } diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/presenter/LoginPresenter.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/presenter/LoginPresenter.kt index 61ef3c31f6..ed54218c96 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/presenter/LoginPresenter.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/presenter/LoginPresenter.kt @@ -112,7 +112,8 @@ class LoginPresenter(view: LoginFragment?) : Presenter(view), IT gotoOfflineMode() return } - LoginModel.queryCarStatus() + // 需要实时查询新的 + LoginModel.queryCarStatus(false) mView?.closeSoftInput() this.phone = phone this.code = code diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/login/LoginService.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/login/LoginService.kt index ab10bd835c..f0bd4ae005 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/login/LoginService.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/login/LoginService.kt @@ -20,7 +20,7 @@ interface LoginService :CommonService { fun getBusinessType():BusinessEnum - fun queryLoginStatusByNet() + fun queryLoginStatusByNet(readCatche:Boolean=false) /** * 登出 diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/login/LoginStatusManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/login/LoginStatusManager.kt index c3af1361b0..dae3228544 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/login/LoginStatusManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/login/LoginStatusManager.kt @@ -43,8 +43,8 @@ object LoginStatusManager : CallerBase() { } @JvmStatic - fun queryLoginStatusByNet() { - loginService?.queryLoginStatusByNet() + fun queryLoginStatusByNet(readCatche:Boolean=false) { + loginService?.queryLoginStatusByNet(readCatche) } @JvmStatic fun getPurpose(): RoleEnum { diff --git a/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeDriverProvider.kt b/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeDriverProvider.kt index be14092795..eda61eeabd 100644 --- a/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeDriverProvider.kt +++ b/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeDriverProvider.kt @@ -34,7 +34,8 @@ class FacadeDriverProvider : FacadeProvider() { sweeperFacadeProvider.init(context) }else { super.init(context) - LoginStatusManager.queryLoginStatusByNet() + // 初始化先读取客户端 让客户尽快进入 + LoginStatusManager.queryLoginStatusByNet(true) LanSocketManager.load() LoginLanDriverSocket.load() CheckVinManager.load() diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bus/BusServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bus/BusServiceManager.kt index 738b6f7793..93f1376ea7 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bus/BusServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bus/BusServiceManager.kt @@ -37,7 +37,7 @@ object BusServiceManager { SharedPrefsMgr.getInstance().token, BusQueryLineStationsRequest() ) .transformTry() - .flatMap(OchCommonNet("queryBusRoutes",false)) + .flatMap(OchCommonNet("mogo/dali bus queryBusRoutes",false)) .flatMap { Observable.just(it.data?: BusRoutesResult()) } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bussaas/BusShuttleServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bussaas/BusShuttleServiceManager.kt index 283a3f6c28..fdefc0b791 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bussaas/BusShuttleServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bussaas/BusShuttleServiceManager.kt @@ -37,7 +37,7 @@ object BusShuttleServiceManager { SharedPrefsMgr.getInstance().token, SharedPrefsMgr.getInstance().getSn(), ) .transformTry() - .flatMap(OchCommonNet("queryBusRoutes",false)) + .flatMap(OchCommonNet("saas bus queryBusRoutes",false)) .flatMap { Observable.just(it.data?: BusRoutesResult()) } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/shuttle/ShuttleServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/shuttle/ShuttleServiceManager.kt index 61ccb73086..c95952a91f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/shuttle/ShuttleServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/shuttle/ShuttleServiceManager.kt @@ -43,7 +43,7 @@ object ShuttleServiceManager { SharedPrefsMgr.getInstance().token, BusQueryLineStationsRequest() ) .transformTry() - .flatMap(OchCommonNet("queryBusRoutes",false)) + .flatMap(OchCommonNet("mogo/dali shuttle queryBusRoutes",false)) .flatMap { Observable.just(it.data?: BusRoutesResult()) } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/shuttlesaas/ShuttleSaasServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/shuttlesaas/ShuttleSaasServiceManager.kt index f91ef3eadd..b23cb8a183 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/shuttlesaas/ShuttleSaasServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/shuttlesaas/ShuttleSaasServiceManager.kt @@ -41,7 +41,7 @@ object ShuttleSaasServiceManager { SharedPrefsMgr.getInstance().token, BusQueryLineStationsRequest() ) .transformIoTry() - .flatMap(OchCommonNet("queryBusRoutes",false)) + .flatMap(OchCommonNet("saas shuttle queryBusRoutes",false)) .flatMap { Observable.just(it.data?:BusRoutesResult()) }