diff --git a/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/6.json b/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/6.json index 90b5eed5db..68154b9555 100644 --- a/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/6.json +++ b/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/6.json @@ -2,7 +2,7 @@ "formatVersion": 1, "database": { "version": 6, - "identityHash": "1d1af100293dd1557307b49359621a5f", + "identityHash": "a2451ba8fe1fb6312258d93e3c2c2c8c", "entities": [ { "tableName": "contrail_data_table", @@ -258,7 +258,7 @@ }, { "tableName": "task_data_table", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `task_id` INTEGER, `line_id` INTEGER, `task_data` INTEGER, `task_start_time` INTEGER, `start_time` INTEGER, `end_time` INTEGER, `task_get_time` INTEGER NOT NULL, `status` INTEGER)", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `shifts_id` INTEGER, `task_id` INTEGER, `line_id` INTEGER, `task_data` INTEGER, `task_start_time` INTEGER, `start_time` INTEGER, `end_time` INTEGER, `task_get_time` INTEGER NOT NULL, `status` INTEGER)", "fields": [ { "fieldPath": "id", @@ -266,6 +266,12 @@ "affinity": "INTEGER", "notNull": true }, + { + "fieldPath": "shiftsId", + "columnName": "shifts_id", + "affinity": "INTEGER", + "notNull": false + }, { "fieldPath": "taskId", "columnName": "task_id", @@ -345,7 +351,7 @@ }, { "tableName": "used_task_data_table", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `task_id` INTEGER, `line_id` INTEGER, `site_id` INTEGER, `line_name` TEXT, `name` TEXT, `name_kr` TEXT, `seq` INTEGER, `gcj_lon` REAL, `gcj_lat` REAL, `lon` REAL, `lat` REAL, `driving_status` INTEGER, `leaving` INTEGER, `arrived_time` INTEGER, `leave_time` INTEGER, `introduction` TEXT, `is_play_tts` INTEGER, `event_save_time` INTEGER NOT NULL, `videoList` TEXT)", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `task_id` INTEGER, `shifts_id` INTEGER, `line_id` INTEGER, `site_id` INTEGER, `line_name` TEXT, `name` TEXT, `name_kr` TEXT, `seq` INTEGER, `gcj_lon` REAL, `gcj_lat` REAL, `lon` REAL, `lat` REAL, `driving_status` INTEGER, `leaving` INTEGER, `arrived_time` INTEGER, `leave_time` INTEGER, `introduction` TEXT, `is_play_tts` INTEGER, `event_save_time` INTEGER NOT NULL, `videoList` TEXT)", "fields": [ { "fieldPath": "id", @@ -359,6 +365,12 @@ "affinity": "INTEGER", "notNull": false }, + { + "fieldPath": "shiftsId", + "columnName": "shifts_id", + "affinity": "INTEGER", + "notNull": false + }, { "fieldPath": "lineId", "columnName": "line_id", @@ -479,7 +491,7 @@ }, { "tableName": "event_data_table", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `event_type` TEXT, `lineId` INTEGER, `task_date` INTEGER, `lineName` TEXT, `task_id` INTEGER, `task_start_time` INTEGER, `business_time` INTEGER, `write_version` INTEGER, `site_id` INTEGER, `seq` INTEGER, `driver_id` INTEGER, `event_save_time` INTEGER NOT NULL, `update_status` INTEGER NOT NULL, `msg_id` TEXT, `update_time` INTEGER)", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `event_type` TEXT, `shifts_id` INTEGER, `lineId` INTEGER, `task_date` INTEGER, `lineName` TEXT, `task_id` INTEGER, `task_start_time` INTEGER, `business_time` INTEGER, `write_version` INTEGER, `site_id` INTEGER, `seq` INTEGER, `driver_id` INTEGER, `event_save_time` INTEGER NOT NULL, `update_status` INTEGER NOT NULL, `msg_id` TEXT, `update_time` INTEGER)", "fields": [ { "fieldPath": "id", @@ -493,6 +505,12 @@ "affinity": "TEXT", "notNull": false }, + { + "fieldPath": "shiftsId", + "columnName": "shifts_id", + "affinity": "INTEGER", + "notNull": false + }, { "fieldPath": "lineId", "columnName": "lineId", @@ -599,7 +617,7 @@ }, { "tableName": "writeoff_data_table", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `msg_id` TEXT, `expiry_time` INTEGER, `booking_time` INTEGER, `type` INTEGER, `task_id` INTEGER, `task_date` INTEGER, `line_id` INTEGER, `site_id` INTEGER, `driver_id` INTEGER, `available_times` INTEGER, `order_no` TEXT, `uid` TEXT, `seq` TEXT, `business_time` INTEGER, `tick_size` INTEGER, `tick_name` TEXT, `event_save_time` INTEGER NOT NULL, `update_status` INTEGER NOT NULL, `update_time` INTEGER)", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `msg_id` TEXT, `expiry_time` INTEGER, `booking_time` INTEGER, `type` INTEGER, `shifts_id` INTEGER, `task_id` INTEGER, `task_date` INTEGER, `line_id` INTEGER, `site_id` INTEGER, `driver_id` INTEGER, `available_times` INTEGER, `order_no` TEXT, `uid` TEXT, `seq` TEXT, `business_time` INTEGER, `tick_size` INTEGER, `tick_name` TEXT, `event_save_time` INTEGER NOT NULL, `update_status` INTEGER NOT NULL, `update_time` INTEGER)", "fields": [ { "fieldPath": "id", @@ -631,6 +649,12 @@ "affinity": "INTEGER", "notNull": false }, + { + "fieldPath": "shiftsId", + "columnName": "shifts_id", + "affinity": "INTEGER", + "notNull": false + }, { "fieldPath": "taskId", "columnName": "task_id", @@ -745,7 +769,7 @@ "views": [], "setupQueries": [ "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '1d1af100293dd1557307b49359621a5f')" + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'a2451ba8fe1fb6312258d93e3c2c2c8c')" ] } } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/response/CarExecutableTaskResponse.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/response/CarExecutableTaskResponse.kt index 190deefc95..36c476313a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/response/CarExecutableTaskResponse.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/response/CarExecutableTaskResponse.kt @@ -1,6 +1,8 @@ package com.mogo.och.weaknet.bean.response import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.och.data.bean.SiteIntroduce import com.mogo.och.weaknet.repository.db.bean.ContrailDataBean @@ -82,6 +84,10 @@ data class CarExecutableTaskResponse(val data: List?) : BaseData(){ dataInfo.taskList?.let { taskInfs -> taskInfs.forEach { it.lineId = lineId + if(AppIdentityModeUtils.isScheduled(FunctionBuildConfig.appIdentityMode)) { + // 班车需要前台生产任务Id 前台规则 任务id 等同模板id + it.taskId = it.shiftsId + } } TaskDb.addOrUpdate(taskInfs,lineId) } 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 97a018c811..8adedf39fd 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 @@ -98,11 +98,7 @@ object EventModel { } waitUpdateWriteOffEvent?.let {writeOffEvents-> - writeOffEvents.forEach { - it.updateStatus = EventDataBean.updated - it.upDateTime = System.currentTimeMillis() - } - WriteOffDb.saveUpdateSuccess(writeOffEvents) + WriteOffDb.saveUpdateSuccess(writeOffEvents,EventDataBean.updated,System.currentTimeMillis()) } isUpdating.set(false) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt index 3a0102681c..5f38145f53 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt @@ -211,8 +211,8 @@ object LineModel { fun commitSwitchLineId(task: TaskDataBean, line: LineDataBean) { RxUtils.disposeSubscribe(startTaskDisposable) line.getLineIdAndName { lineId, lineName -> - task.getLineIdAndName { taskId, taskTime,taskDate -> - RepositoryManager.startTask(taskId, lineId, taskTime, lineName) + task.getLineIdAndName { shiftsId,taskId, taskTime,taskDate -> + RepositoryManager.startTask(shiftsId,taskId, lineId, taskTime, lineName) ?.subscribeOn(Schedulers.io()) ?.observeOn(AndroidSchedulers.mainThread()) ?.subscribe(object : Observer { @@ -247,7 +247,7 @@ object LineModel { override fun onNext(data: Boolean) { d(TAG, "commitSwitchLineId onNext ${data}") if (data) { - EventDb.saveEventTaskStart(taskId, lineId, taskTime, lineName,taskDate) + EventDb.saveEventTaskStart(shiftsId,taskId, lineId, taskTime, lineName,taskDate) OrderModel.queryBusRoutes() BizLoopManager.runInIoThread{ val querySiteByLineId = SiteDb.querySiteByLineId(lineId) @@ -311,8 +311,8 @@ object LineModel { } fun endTask() { - currentTask?.taskId?.let { taskId -> - RepositoryManager.endTask(taskId) + currentTask?.getLineIdAndName { shiftsId, taskId, taskTime, taskDate -> + RepositoryManager.endTask(shiftsId,taskId) ?.subscribeOn(Schedulers.io()) ?.observeOn(AndroidSchedulers.mainThread()) ?.subscribe(object : Observer { diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt index 09cbe4267b..a0d422aa66 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt @@ -264,6 +264,7 @@ object OrderModel { RepositoryManager.leaveStation( startStation.seq, startStation.siteId.toLong(), + task.shiftsId?:0L, task.taskId?:0L, task.lineId?:0L, task.taskStartTime?:System.currentTimeMillis(), diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt index b9be4d96bb..6873585fec 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt @@ -118,22 +118,22 @@ object RepositoryManager { return lineRepository?.queryCanUserTask(lineId) } - fun startTask(taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable? { - return lineRepository?.startTask(taskId,lineId,taskTime,lineName) + fun startTask(shiftsId:Long,taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable? { + return lineRepository?.startTask(shiftsId,taskId,lineId,taskTime,lineName) } fun leaveStation( - seq: Int, siteId: Long, taskId: Long, lineId: Long, taskStartTime: Long, taskDate: Long + seq: Int, siteId: Long,shiftsId:Long ,taskId: Long, lineId: Long, taskStartTime: Long, taskDate: Long ): Observable?{ - return lineRepository?.leaveStation(seq,siteId,taskId,lineId,taskStartTime,taskDate) + return lineRepository?.leaveStation(seq,siteId,shiftsId,taskId,lineId,taskStartTime,taskDate) } fun arriveStation(seq: Int, siteId: Long, taskId: Long): Observable?{ return lineRepository?.arriveStation(seq,siteId,taskId) } - fun endTask(taskId: Long): Observable?{ - return lineRepository?.endTask(taskId) + fun endTask(shiftsId:Long,taskId: Long): Observable?{ + return lineRepository?.endTask(shiftsId,taskId) } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt index 3e38f47065..571f1eaa91 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt @@ -91,7 +91,11 @@ abstract class MyDataBase : RoomDatabase() { private val MIGRATION_5_6 = object : Migration(5, 6) { override fun migrate(database: SupportSQLiteDatabase) { database.execSQL("ALTER TABLE ${EventDataBean.tableName} ADD COLUMN task_date INTEGER") + database.execSQL("ALTER TABLE ${EventDataBean.tableName} ADD COLUMN shifts_id INTEGER") database.execSQL("ALTER TABLE ${WriteOffDataBean.tableName} ADD COLUMN task_date INTEGER") + database.execSQL("ALTER TABLE ${WriteOffDataBean.tableName} ADD COLUMN shifts_id INTEGER") + database.execSQL("ALTER TABLE ${TaskDataBean.tableName} ADD COLUMN shifts_id INTEGER") + database.execSQL("ALTER TABLE ${TaskSiteDataBean.tableName} ADD COLUMN shifts_id INTEGER") } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/EventDataBean.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/EventDataBean.kt index c4d72d70eb..e44776478e 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/EventDataBean.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/EventDataBean.kt @@ -18,6 +18,12 @@ data class EventDataBean( @ColumnInfo(name = "event_type", typeAffinity = ColumnInfo.TEXT) var eventType: String? = null, + /** + * 生成任务的模板id + */ + @ColumnInfo(name = "shifts_id", typeAffinity = ColumnInfo.INTEGER) + var shiftsId: Long? = null, + /** * 任务id、模板id */ diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskDataBean.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskDataBean.kt index b93ea1c079..4470f588ee 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskDataBean.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskDataBean.kt @@ -12,11 +12,17 @@ data class TaskDataBean( @SerializedName("idtemp") var id: Int = 0, + /** + * 生成任务的模板id + */ + @ColumnInfo(name = "shifts_id", typeAffinity = ColumnInfo.INTEGER) + var shiftsId: Long? = null, + /** * 任务id */ @ColumnInfo(name = "task_id", typeAffinity = ColumnInfo.INTEGER, index = true) - @SerializedName("id", alternate = ["shiftsId"]) + @SerializedName("id") var taskId: Long? = null, /** @@ -87,11 +93,13 @@ data class TaskDataBean( return result } - fun getLineIdAndName(function: (taskId: Long, taskTime: Long , taskDate:Long) -> Unit) { + fun getLineIdAndName(function: (shiftsId:Long,taskId: Long, taskTime: Long , taskDate:Long) -> Unit) { taskId?.let { id -> taskStartTime?.let { time -> taskDate?.let { date -> - function(id, time, date) + shiftsId?.let {shiftsId-> + function(shiftsId,id, time, date) + } } } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskSiteDataBean.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskSiteDataBean.kt index 457b9ba23f..4151a6f017 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskSiteDataBean.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskSiteDataBean.kt @@ -15,6 +15,12 @@ data class TaskSiteDataBean( @ColumnInfo(name = "task_id", typeAffinity = ColumnInfo.INTEGER) var taskId: Long? = null, + /** + * 生成任务的模板id + */ + @ColumnInfo(name = "shifts_id", typeAffinity = ColumnInfo.INTEGER) + var shiftsId: Long? = null, + /** * 线路id */ @@ -129,12 +135,13 @@ data class TaskSiteDataBean( /** * 开始任务 并把第一站置为 2 当前站 */ - fun toTaskSiteDatas(querySites: List, taskId:Long, lineName: String): MutableList { + fun toTaskSiteDatas(querySites: List,shiftsId:Long, taskId:Long, lineName: String): MutableList { val result = mutableListOf() var temp: TaskSiteDataBean?=null querySites.forEach { temp = TaskSiteDataBean() temp?.taskId = taskId + temp?.shiftsId = shiftsId temp?.lineId = it.lineId temp?.lineName = lineName temp?.siteId = it.siteId diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/WriteOffDataBean.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/WriteOffDataBean.kt index c49cc5801f..8d0a68de4d 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/WriteOffDataBean.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/WriteOffDataBean.kt @@ -36,6 +36,13 @@ data class WriteOffDataBean( @ColumnInfo(name = "type", typeAffinity = ColumnInfo.INTEGER) var type: Int? = null, + + /** + * 生成任务的模板id + */ + @ColumnInfo(name = "shifts_id", typeAffinity = ColumnInfo.INTEGER) + var shiftsId: Long? = null, + /** * 当前的任务id、模板id */ diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/EventDataDao.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/EventDataDao.kt index 52f32f1de6..dbf7a07e4f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/EventDataDao.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/EventDataDao.kt @@ -20,8 +20,8 @@ interface EventDataDao { @Delete fun delete(vararg eventDataBean: EventDataBean) - @Query("UPDATE ${EventDataBean.tableName} SET update_status = :status WHERE id = :id") - fun updateUpdateSatus(id:Int,status:Int):Int + @Query("UPDATE ${EventDataBean.tableName} SET update_status = :status,update_time = :currentTimeMillis WHERE id = :id") + fun updateUpdateSatus(id: Int, status: Int, currentTimeMillis: Long):Int // 删除过时数据 diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/WriteOffDataDao.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/WriteOffDataDao.kt index fab9d29d9b..5eb927069d 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/WriteOffDataDao.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/WriteOffDataDao.kt @@ -39,5 +39,8 @@ interface WriteOffDataDao { @Query("SELECT count(1) FROM ${WriteOffDataBean.tableName} WHERE update_status = ${WriteOffDataBean.notUpdate}") fun queryWriteOffByStatusWithPageCount(): Int + @Query("UPDATE ${WriteOffDataBean.tableName} SET update_status = :updated ,update_time = :currentTimeMillis WHERE id = :id") + fun updateStatusAndTime(updated: Int, currentTimeMillis: Long, id: Int) + } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/exception/DbException.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/exception/DbException.kt index 82958f81a1..c0b1315536 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/exception/DbException.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/exception/DbException.kt @@ -1,6 +1,15 @@ package com.mogo.och.weaknet.repository.db.exception class DbException: RuntimeException { + var code:Int = 0 + var msg:String = "" constructor() : super() - constructor(message: String?) : super(message) + constructor(code:Int, message: String) : super("${code}_${message}"){ + this.code = code + this.msg = message + } + + companion object{ + const val NEEDSYNDATA = 10001 + } } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/EventDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/EventDb.kt index d6c077becf..80dbb67b1f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/EventDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/EventDb.kt @@ -30,11 +30,12 @@ object EventDb: IDbRepository { eventDataDao = null } - fun saveEventTaskStart(taskId: Long, lineId: Long, taskStartTime: Long, name: String,taskDate:Long) { + fun saveEventTaskStart(shiftsId:Long,taskId: Long, lineId: Long, taskStartTime: Long, name: String,taskDate:Long) { val event = EventDataBean() event.eventType = EventDataBean.TaskStart event.lineId = lineId event.taskId = taskId + event.shiftsId = shiftsId event.taskDate = taskDate event.lineName = name event.taskStartTime = taskStartTime @@ -51,6 +52,7 @@ object EventDb: IDbRepository { } fun saveEventTaskArriveSite( + shiftsId:Long, taskId: Long, lineId: Long, siteId: Long, @@ -62,6 +64,7 @@ object EventDb: IDbRepository { val event = EventDataBean() event.eventType = EventDataBean.TaskArriveSite event.lineId = lineId + event.shiftsId = shiftsId event.taskStartTime = taskStartTime event.lineName = lineName event.taskId = taskId @@ -79,6 +82,7 @@ object EventDb: IDbRepository { } fun saveEventTaskLeaveSite( + shiftsId:Long, taskId: Long, lineId: Long, siteId: Long, @@ -90,6 +94,7 @@ object EventDb: IDbRepository { val event = EventDataBean() event.eventType = EventDataBean.TaskLeaveSite event.lineId = lineId + event.shiftsId = shiftsId event.taskId = taskId event.taskDate = taskDate event.taskStartTime = taskStartTime @@ -107,6 +112,7 @@ object EventDb: IDbRepository { } fun saveEventTaskEnd( + shiftsId: Long, taskId: Long, lineId: Long, taskStartTime: Long?, @@ -116,6 +122,7 @@ object EventDb: IDbRepository { val event = EventDataBean() event.eventType = EventDataBean.TaskEnd event.lineId = lineId + event.shiftsId = shiftsId event.taskId = taskId event.taskDate = taskDate event.lineName = lineName @@ -151,7 +158,7 @@ object EventDb: IDbRepository { @Transaction fun saveUpdateSuccess(waitUpdateEvent: List) { waitUpdateEvent.forEach { - eventDataDao?.updateUpdateSatus(it.id,it.updateStatus) + eventDataDao?.updateUpdateSatus(it.id,it.updateStatus,System.currentTimeMillis()) } } 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 92312f89b0..7fba0fa3e4 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 @@ -6,6 +6,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.weaknet.model.LineModel import com.mogo.och.weaknet.repository.db.IDbRepository import com.mogo.och.weaknet.repository.db.MyDataBase import com.mogo.och.weaknet.repository.db.bean.TaskDataBean @@ -89,7 +90,7 @@ object TaskDb : IDbRepository { return null } - fun startTask(taskId: Long, lineId: Long,lineName:String): Observable? { + fun startTask(shiftsId:Long,taskId: Long, lineId: Long,lineName:String): Observable? { return Observable.just(taskId) .flatMap { var updateCount:Int? = 0 @@ -105,19 +106,30 @@ object TaskDb : IDbRepository { } CallerLogger.d(TAG,"更新任务状态用时:${System.currentTimeMillis()-startTime}") startTime = System.currentTimeMillis() - updateCount = TaskSiteDb.startTask(taskId, lineId, lineName) + updateCount = TaskSiteDb.startTask(shiftsId,taskId, lineId, lineName) OchChainLogManager.writeChainLogDb("开始任务", "把正在使用的数据更新到RunningTask表格一共${updateCount}行数据") CallerLogger.d(TAG,"插入正在运行的线路用时:${System.currentTimeMillis()-startTime}") } catch (e: Exception) { if (e is DbException) { - println("数据不全") - // 恢复数据 - taskDataDao?.queryTaskByTaskIdOne(taskId)?.let { - it.startTime = null - it.status = TaskDataBean.unUse - // 更新任务状态 - taskDataDao?.updateStatus(System.currentTimeMillis(),TaskDataBean.unUse,it.id) - OchChainLogManager.writeChainLogDb("开始任务", "异常情况${lineId}_${lineName}_task:${taskId} 为未使用的状态 原因:${e.message}") + if(e.code==DbException.NEEDSYNDATA) { + // 重新同步 信息 + LineModel.refreshTask() + println("数据不全") + // 恢复数据 + taskDataDao?.queryTaskByTaskIdOne(taskId)?.let { + it.startTime = null + it.status = TaskDataBean.unUse + // 更新任务状态 + taskDataDao?.updateStatus( + System.currentTimeMillis(), + TaskDataBean.unUse, + it.id + ) + OchChainLogManager.writeChainLogDb( + "开始任务", + "异常情况${lineId}_${lineName}_task:${taskId} 为未使用的状态 原因:${e.message}" + ) + } } } return@flatMap Observable.error(DataException(DataException.startTaskErrorCode,e.message?:"")) 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 f7eef5c184..c5381a7bad 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 @@ -34,28 +34,28 @@ object TaskSiteDb : IDbRepository { } // 开始线路 - fun startTask(taskId: Long, linId: Long, lineName: String): Int? { + fun startTask(shiftsId:Long,taskId: Long, linId: Long, lineName: String): Int? { // 获取线路的站点 - var startTime = System.currentTimeMillis() - val querySites = SiteDb.querySiteByLineId(linId)?.distinctBy { it.siteId } + val querySites = SiteDb.querySiteByLineId(linId)?.distinctBy { it.siteId }?.sortedBy { it.seq } if (querySites.isNullOrEmpty()) { - throw DbException("没有站点数据") + throw DbException(DbException.NEEDSYNDATA,"没有站点数据") + } + querySites.forEachIndexed { index, siteDataBean -> + if(index+1!=siteDataBean.seq){ + throw DbException(DbException.NEEDSYNDATA,"站点数据排序不对") + } } - CallerLogger.d(TAG, "查询站点用时:${System.currentTimeMillis() - startTime}") - startTime = System.currentTimeMillis() val toTaskSiteDatas = TaskSiteDataBean.toTaskSiteDatas( querySites, + shiftsId, taskId, lineName ) - CallerLogger.d(TAG, "数据转换用时:${System.currentTimeMillis() - startTime}") if (toTaskSiteDatas.size < 2) { - throw DbException("站点数据不全请稍后再试") + throw DbException(DbException.NEEDSYNDATA,"站点数据不全请稍后再试") } // 把线路所有的站点搬迁到运行中表格中 - startTime = System.currentTimeMillis() val result = taskSiteDataDao?.insert(*toTaskSiteDatas.toTypedArray()) - CallerLogger.d(TAG, "数据插入用时:${System.currentTimeMillis() - startTime}") return if (result.isNullOrEmpty()) { null } else { @@ -110,6 +110,7 @@ object TaskSiteDb : IDbRepository { * 从后台恢复正在执行的任务 */ fun restoreRunningTask( + shiftsId:Long, taskId: Long, currentSiteId: Long, leaving: Boolean, @@ -123,10 +124,11 @@ object TaskSiteDb : IDbRepository { // 获取线路的站点 val querySites = SiteDb.querySiteByLineId(lineInfo.lineId!!)?.distinctBy { it.siteId } if (querySites.isNullOrEmpty()) { - throw DbException("没有站点数据") + throw DbException(DbException.NEEDSYNDATA,"没有站点数据") } val toTaskSiteDatas = TaskSiteDataBean.toTaskSiteDatas( querySites, + shiftsId, taskId, lineInfo.lineName!! ) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/WriteOffDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/WriteOffDb.kt index 769d4a29c6..7f438ee55a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/WriteOffDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/WriteOffDb.kt @@ -1,5 +1,6 @@ package com.mogo.och.weaknet.repository.db.repository +import androidx.room.Transaction import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.weaknet.model.EventModel import com.mogo.och.weaknet.repository.db.IDbRepository @@ -38,8 +39,15 @@ object WriteOffDb: IDbRepository { return writeOffDataDao?.queryWriteOffEventByStatusWithPage() } - fun saveUpdateSuccess(writeOffEvents: List) { - writeOffDataDao?.insert(*writeOffEvents.toTypedArray()) + @Transaction + fun saveUpdateSuccess( + writeOffEvents: List, + updated: Int, + currentTimeMillis: Long + ) { + writeOffEvents.forEach { + writeOffDataDao?.updateStatusAndTime(updated,currentTimeMillis,it.id) + } } fun queryWaitUpdateEventByTaskId(taskId: Long): List? { diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/ILineRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/ILineRepository.kt index 5d122f8fd8..0a7987c998 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/ILineRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/ILineRepository.kt @@ -17,11 +17,12 @@ interface ILineRepository { fun queryCanUserTask(lineId:Long): Observable?>? - fun startTask(taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable? + fun startTask(shiftsId:Long,taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable? fun leaveStation( seq: Int, siteId: Long, + shiftsId:Long, taskId: Long, lineId: Long, taskStartTime: Long, @@ -30,7 +31,7 @@ interface ILineRepository { fun arriveStation( seq: Int, siteId: Long, taskId: Long): Observable? - fun endTask( taskId: Long): Observable? + fun endTask(shiftsId:Long, taskId: Long): Observable? fun queryCarExecutableTaskList(ochCommonServiceCallback: OchCommonServiceCallback) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/NormalRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/NormalRepository.kt index 30a448a927..df8c19db80 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/NormalRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/NormalRepository.kt @@ -144,6 +144,7 @@ class NormalRepository: ILineRepository { } override fun startTask( + shiftsId:Long, taskId: Long, lineId: Long, taskTime: Long, @@ -155,6 +156,7 @@ class NormalRepository: ILineRepository { override fun leaveStation( seq: Int, siteId: Long, + shiftsId:Long, taskId: Long, lineId: Long, taskStartTime: Long, @@ -172,7 +174,7 @@ class NormalRepository: ILineRepository { ) } - override fun endTask(taskId: Long): Observable? { + override fun endTask(shiftsId:Long,taskId: Long): Observable? { return normalLineInterface?.endTask(taskId) } 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 c9ef187c91..d501117d9f 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 @@ -95,7 +95,7 @@ class WeaknetRepository : ILineRepository { // 恢复站点信息 currentTask?.taskId?.let { // 获取正在进行中的具体信息 - val runnintTaskAndSites = TaskSiteDb.queryRunningTask(it) + val runnintTaskAndSites = TaskSiteDb.queryRunningTask(it)?.distinctBy { it.siteId } if(runnintTaskAndSites.isNullOrEmpty()||runnintTaskAndSites.size<2){ CallerLogger.d(TAG, "异常情况:有任务:${runningTaskInfo} runningTask 表格没有对应的数据:${runnintTaskAndSites}") OchChainLogManager.writeChainLogDb("加载任务", "异常情况:有任务:${runningTaskInfo} runningTask 表格没有对应的数据:${runnintTaskAndSites}") @@ -191,12 +191,14 @@ class WeaknetRepository : ILineRepository { if(lineId<=0){ return@flatMap Observable.just(false) } - if(taskId<=0||currentSiteId<=0||taskDate<=0){ + if(taskId<=0||currentSiteId<=0){ return@flatMap Observable.just(false) } // 日期是否正确 - if (!DateTimeUtil.isSameDay(System.currentTimeMillis(),taskDate)) { - return@flatMap Observable.just(false) + if (AppIdentityModeUtils.isScheduled(FunctionBuildConfig.appIdentityMode)) { + if (!DateTimeUtil.isSameDay(System.currentTimeMillis(),taskDate)) { + return@flatMap Observable.just(false) + } } // region 任务本地是否存在 @@ -277,7 +279,7 @@ class WeaknetRepository : ILineRepository { TaskDb.restoreTask(taskId) // 恢复正在执行任务表 - TaskSiteDb.restoreRunningTask(taskId,currentSiteId,leaving,lineInfo!!) + TaskSiteDb.restoreRunningTask(it.shiftsId,taskId,currentSiteId,leaving,lineInfo!!) return@flatMap loadCurrentTaskInfo() } @@ -335,17 +337,19 @@ class WeaknetRepository : ILineRepository { } override fun startTask( + shiftsId:Long, taskId: Long, lineId: Long, taskTime: Long, lineName: String ): Observable? { - return TaskDb.startTask(taskId, lineId, lineName) + return TaskDb.startTask(shiftsId,taskId, lineId, lineName) } override fun leaveStation( seq: Int, siteId: Long, + shiftsId:Long, taskId: Long, lineId: Long, taskStartTime: Long, @@ -364,6 +368,7 @@ class WeaknetRepository : ILineRepository { // 设置滑动出发任务 LineManager.getLineInfo { lineInfo -> EventDb.saveEventTaskLeaveSite( + shiftsId, taskId, lineId, it.siteId.toLong(), @@ -404,6 +409,7 @@ class WeaknetRepository : ILineRepository { // 设置到站任务 LineManager.getLineInfo { lineInfo -> EventDb.saveEventTaskArriveSite( + task.shiftsId!!, task.taskId!!, task.lineId!!, end.siteId.toLong(), @@ -449,13 +455,13 @@ class WeaknetRepository : ILineRepository { } - override fun endTask(taskId: Long): Observable? { + override fun endTask(shiftsId:Long,taskId: Long): Observable? { return Observable.just(taskId).flatMap { currentTask?.let {task-> if (task.taskId!=null&&task.lineId!=null) { TaskDb.endTask(task.taskId!!) LineManager.getLineInfo { lineInfo -> - EventDb.saveEventTaskEnd(task.taskId!!,task.lineId!!,task.taskStartTime,lineInfo.lineName,task.taskDate?:0L) + EventDb.saveEventTaskEnd(shiftsId,task.taskId!!,task.lineId!!,task.taskStartTime,lineInfo.lineName,task.taskDate?:0L) } } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt index f88505f3b8..5956ebdb79 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt @@ -189,6 +189,7 @@ class WriteOffCacheRepository : IWriteOffRepository { addWrite.expiryTime = it.expiryTime addWrite.bookingTime = it.bookingTime addWrite.type = it.type + addWrite.shiftsId = it.shiftsId addWrite.taskId = LineModel.currentTask?.taskId addWrite.taskDate = LineModel.currentTask?.taskDate addWrite.lineId = lineId @@ -246,6 +247,7 @@ class WriteOffCacheRepository : IWriteOffRepository { //addWrite.bookingTime = it.bookingTime //addWrite.type = it.type addWrite.taskId = LineModel.currentTask?.taskId + addWrite.shiftsId = LineModel.currentTask?.shiftsId LineManager.getStationsWithLine { start, end, lineInfo -> addWrite.siteId = start.siteId.toLong() addWrite.lineId = lineInfo.lineId