[6.8.4]
[fea] [saas 公交、接驳、班车 从登录状态接口 恢复业务数据]
This commit is contained in:
@@ -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!!)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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{" +
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
@@ -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("恢复任务", "线路任务改为正在执行的状态")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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>?>? {
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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!!!")
|
||||
|
||||
Reference in New Issue
Block a user