[fix]
[全局添加shiftsId]
This commit is contained in:
yangyakun
2024-12-25 19:15:54 +08:00
parent 300e4b2b39
commit 24563d2c2d
22 changed files with 176 additions and 65 deletions

View File

@@ -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')"
]
}
}

View File

@@ -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<Result>?) : 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)
}

View File

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

View File

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

View File

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

View File

@@ -118,22 +118,22 @@ object RepositoryManager {
return lineRepository?.queryCanUserTask(lineId)
}
fun startTask(taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable<Boolean>? {
return lineRepository?.startTask(taskId,lineId,taskTime,lineName)
fun startTask(shiftsId:Long,taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable<Boolean>? {
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<Boolean>?{
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<Boolean>?{
return lineRepository?.arriveStation(seq,siteId,taskId)
}
fun endTask(taskId: Long): Observable<Boolean>?{
return lineRepository?.endTask(taskId)
fun endTask(shiftsId:Long,taskId: Long): Observable<Boolean>?{
return lineRepository?.endTask(shiftsId,taskId)
}

View File

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

View File

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

View File

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

View File

@@ -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<SiteDataBean>, taskId:Long, lineName: String): MutableList<TaskSiteDataBean> {
fun toTaskSiteDatas(querySites: List<SiteDataBean>,shiftsId:Long, taskId:Long, lineName: String): MutableList<TaskSiteDataBean> {
val result = mutableListOf<TaskSiteDataBean>()
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

View File

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

View File

@@ -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
// 删除过时数据

View File

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

View File

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

View File

@@ -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<EventDataBean>) {
waitUpdateEvent.forEach {
eventDataDao?.updateUpdateSatus(it.id,it.updateStatus)
eventDataDao?.updateUpdateSatus(it.id,it.updateStatus,System.currentTimeMillis())
}
}

View File

@@ -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<Boolean>? {
fun startTask(shiftsId:Long,taskId: Long, lineId: Long,lineName:String): Observable<Boolean>? {
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?:""))

View File

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

View File

@@ -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<WriteOffDataBean>) {
writeOffDataDao?.insert(*writeOffEvents.toTypedArray())
@Transaction
fun saveUpdateSuccess(
writeOffEvents: List<WriteOffDataBean>,
updated: Int,
currentTimeMillis: Long
) {
writeOffEvents.forEach {
writeOffDataDao?.updateStatusAndTime(updated,currentTimeMillis,it.id)
}
}
fun queryWaitUpdateEventByTaskId(taskId: Long): List<WriteOffDataBean>? {

View File

@@ -17,11 +17,12 @@ interface ILineRepository {
fun queryCanUserTask(lineId:Long): Observable<List<TaskDataBean>?>?
fun startTask(taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable<Boolean>?
fun startTask(shiftsId:Long,taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable<Boolean>?
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<Boolean>?
fun endTask( taskId: Long): Observable<Boolean>?
fun endTask(shiftsId:Long, taskId: Long): Observable<Boolean>?
fun queryCarExecutableTaskList(ochCommonServiceCallback: OchCommonServiceCallback<CarExecutableTaskResponse>)

View File

@@ -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<Boolean>? {
override fun endTask(shiftsId:Long,taskId: Long): Observable<Boolean>? {
return normalLineInterface?.endTask(taskId)
}

View File

@@ -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<Boolean>? {
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<Boolean>? {
override fun endTask(shiftsId:Long,taskId: Long): Observable<Boolean>? {
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)
}
}
}

View File

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