[fea]
[saas 公交、接驳、班车 从登录状态接口 恢复业务数据]
This commit is contained in:
yangyakun
2024-12-17 11:00:07 +08:00
parent 8de4bb649f
commit af4b016f10
15 changed files with 363 additions and 108 deletions

View File

@@ -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!!)
}

View File

@@ -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)
}

View File

@@ -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 {

View File

@@ -254,6 +254,10 @@ object OchAutoPilotStatusListenerManager : CallerBase<IOchAutopilotStatusListene
_canStartAutopilotFromFSM = fsmState.pilotStandbyFlag
}
/**
* 消息发送 5s后超时回执
*
*/
override fun onReceiveReceivedAck(receivedAck: ReceivedAck) {
if (receivedAck.messageType == MessageType.TYPE_SEND_SET_AUTOPILOT_MODE_REQ) {
OchAutopilotAnalytics.triggerStartAutopilotParametersAck(

View File

@@ -11,9 +11,13 @@ public class LoginInfo {
private String sn;
private String plateNumber;//车牌号
private String phone;//手机号
private Integer lineId;//线路id
private Integer taskId;//任务id
private Integer siteId;//任务id
private Long lineId;//线路id
private Long taskId;//任务id
private Long siteId;//站点id 包车使用
private Long currentSite;//当前站点 接驳、公交、班车使用
private Boolean leaving;// 当前站点是否出发
private Long detailId;//模板id
private Long taskDate;// 任务或模板的日期
private String vin;//车辆唯一识别码
private String cityCode;//城市编码
private String brand;//东风
@@ -75,22 +79,6 @@ public class LoginInfo {
this.phone = phone;
}
public Integer getLineId() {
return lineId;
}
public void setLineId(Integer lineId) {
this.lineId = lineId;
}
public Integer getTaskId() {
return taskId;
}
public void setTaskId(Integer taskId) {
this.taskId = taskId;
}
public int getServingStatus() {
return servingStatus;
}
@@ -163,13 +151,6 @@ public class LoginInfo {
this.driverId = driverId;
}
public Integer getSiteId() {
return siteId;
}
public void setSiteId(Integer siteId) {
this.siteId = siteId;
}
public long getBusinessStatus() {
return businessStatus;
@@ -179,6 +160,64 @@ public class LoginInfo {
this.businessStatus = businessStatus;
}
public Long getCurrentSite() {
return currentSite;
}
public void setCurrentSite(Long currentSite) {
this.currentSite = currentSite;
}
public Boolean getLeaving() {
return leaving;
}
public void setLeaving(Boolean leaving) {
this.leaving = leaving;
}
public Long getTaskDate() {
return taskDate;
}
public void setTaskDate(Long taskDate) {
this.taskDate = taskDate;
}
public Long getLineId() {
return lineId;
}
public void setLineId(Long lineId) {
this.lineId = lineId;
}
public Long getTaskId() {
return taskId;
}
public void setTaskId(Long taskId) {
this.taskId = taskId;
}
public Long getSiteId() {
return siteId;
}
public void setSiteId(Long siteId) {
this.siteId = siteId;
}
public Long getDetailId() {
return detailId;
}
public void setDetailId(Long detailId) {
this.detailId = detailId;
}
@Override
public String toString() {
return "LoginInfo{" +

View File

@@ -70,7 +70,6 @@ object OffLineTrajectoryManager : com.mogo.och.bridge.autopilot.trajectory.ITraj
}
override fun onDownLoadReady(lineId: Long) {
super.onDownLoadReady(lineId)
// 收到ssm的自动驾驶变为ready再次下发轨迹下载.解决域控重启或者102域控启动太早107节点初始化未完成导致的轨迹未进行下载。
syncTrajectoryInfo()
}

View File

@@ -25,6 +25,12 @@ class BusConst {
const val SEND_OUTVOICE_DISTANCES_TARTSTATIONE = 15
// 恢复数据时 等待同步基础数据等待2s
const val waitSysAllData = 2_000L
// 最多等待5次
const val waitCount= 5
//起点UUID
const val BUS_START_MAP_MAKER = "bus_start_map_maker";
//终点UUID

View File

@@ -63,6 +63,11 @@ interface TaskDataDao {
@Query("SELECT * FROM ${TaskDataBean.taskDataTable} WHERE task_id = :taskId")
fun queryContrailByLineId(taskId: Long): List<TaskDataBean>?
//查询线路对应的轨迹信息
@Query("SELECT * FROM ${TaskDataBean.taskDataTable}")
fun queryAllTask(): List<TaskDataBean>?
// 删除过时数据
@Query("DELETE FROM ${TaskDataBean.taskDataTable} WHERE task_get_time < :zeroTime")
fun deleteObsoleteData(zeroTime: Long = DateTimeUtil.getCurrentDateZero()): Int

View File

@@ -29,10 +29,14 @@ object LineDb: IDbRepository {
lineDao?.deleteWeltData()
}
fun queryCanUserLine(): List<LineDataBean>? {
return lineDao?.loadData()
}
/**
* 读取可用线路
*/
fun queryCanUseLine(): Observable<List<LineDataBean>?>? {
fun queryCanUseLineRx(): Observable<List<LineDataBean>?>? {
return lineDao?.loadDataRx()
}

View File

@@ -151,6 +151,10 @@ object TaskDb : IDbRepository {
return taskDataDao?.queryTaskByTaskIdOne(taskId)
}
fun queryAllTask(): List<TaskDataBean>? {
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("恢复任务", "线路任务改为正在执行的状态")
}
}
}

View File

@@ -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<TaskSiteDataBean>
): MutableList<TaskSiteDataBean> {
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
}
}

View File

@@ -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<Boolean>? {
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<Boolean>? {
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<List<LineDataBean>?>? {
return LineDb.queryCanUseLine()
return LineDb.queryCanUseLineRx()
}
override fun queryCanUserTask(lineId: Long): Observable<List<TaskDataBean>?>? {

View File

@@ -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

View File

@@ -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())

View File

@@ -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!!!")