[fea]
[有未上传核销数据 不能结束任务]
This commit is contained in:
yangyakun
2024-11-19 18:02:18 +08:00
parent 93f6e9b72d
commit 8af7cfd017
6 changed files with 91 additions and 62 deletions

View File

@@ -300,75 +300,83 @@ object LineModel {
}
fun endTask() {
currentTask?.let { task ->
RepositoryManager.endTask(task.taskId?:0L)
?.subscribeOn(Schedulers.io())
?.observeOn(AndroidSchedulers.mainThread())
?.subscribe(object : Observer<Boolean> {
override fun onSubscribe(d: Disposable) {
startTaskDisposable
d(TAG, "endTask onSubscribe")
}
override fun onError(e: Throwable) {
d(TAG, "endTask onError${e.printStackTrace()}")
if (e is DataException) {
currentTask?.taskId?.let { taskId ->
if (RepositoryManager.canCanEndTask(taskId)) {
RepositoryManager.endTask(taskId)
?.subscribeOn(Schedulers.io())
?.observeOn(AndroidSchedulers.mainThread())
?.subscribe(object : Observer<Boolean> {
override fun onSubscribe(d: Disposable) {
startTaskDisposable
d(TAG, "endTask onSubscribe")
}
if (RepositoryManager.supportDb()) {
isGoingToNextStation = false
ThirdDeviceData.endTask()
ThirdDeviceData.sendTaskDetailsToClients()
ShuttleVoiceManager.endOrderBus()
// 取消自驾
CallerAutoPilotControlManager.cancelAutoPilot()
currentTask = null
LineManager.setLineInfo(null)
LineManager.setStartAndEndStation(null,null)
stationList = mutableListOf()
startStationIndex = 0
mBusLinesCallbackMap.forEach {
it.value.onCompleteTask()
override fun onError(e: Throwable) {
d(TAG, "endTask onError${e.printStackTrace()}")
if (e is DataException) {
}
val changeInfo = "taskId:${currentTask?.taskId}--lineInfo:${LineManager.lineInfos}"
OchChainLogManager.writeChainLog("结束任务", changeInfo)
}else{
ToastUtils.showShort("结束任务失败请稍后再试")
mBusLinesCallbackMap.forEach {
it.value.onCompleteTaskFail()
if (RepositoryManager.supportDb()) {
isGoingToNextStation = false
ThirdDeviceData.endTask()
ThirdDeviceData.sendTaskDetailsToClients()
ShuttleVoiceManager.endOrderBus()
// 取消自驾
CallerAutoPilotControlManager.cancelAutoPilot()
currentTask = null
LineManager.setLineInfo(null)
LineManager.setStartAndEndStation(null, null)
stationList = mutableListOf()
startStationIndex = 0
mBusLinesCallbackMap.forEach {
it.value.onCompleteTask()
}
val changeInfo =
"taskId:${currentTask?.taskId}--lineInfo:${LineManager.lineInfos}"
OchChainLogManager.writeChainLog("结束任务", changeInfo)
} else {
ToastUtils.showShort("结束任务失败请稍后再试")
mBusLinesCallbackMap.forEach {
it.value.onCompleteTaskFail()
}
}
}
}
override fun onComplete() {
d(TAG, "endTask onComplete")
}
override fun onNext(data: Boolean) {
d(TAG, "endTask onNext ${data}")
if (data) {
isGoingToNextStation = false
ThirdDeviceData.endTask()
ThirdDeviceData.sendTaskDetailsToClients()
ShuttleVoiceManager.endOrderBus()
// 取消自驾
CallerAutoPilotControlManager.cancelAutoPilot()
currentTask = null
LineManager.setLineInfo(null)
LineManager.setStartAndEndStation(null,null)
stationList = mutableListOf()
startStationIndex = 0
mBusLinesCallbackMap.forEach {
it.value.onCompleteTask()
}
val changeInfo = "taskId:${currentTask?.taskId}--lineInfo:${LineManager.lineInfos}"
OchChainLogManager.writeChainLog("结束任务", changeInfo)
override fun onComplete() {
d(TAG, "endTask onComplete")
}
onComplete()
}
})
override fun onNext(data: Boolean) {
d(TAG, "endTask onNext ${data}")
if (data) {
isGoingToNextStation = false
ThirdDeviceData.endTask()
ThirdDeviceData.sendTaskDetailsToClients()
ShuttleVoiceManager.endOrderBus()
// 取消自驾
CallerAutoPilotControlManager.cancelAutoPilot()
currentTask = null
LineManager.setLineInfo(null)
LineManager.setStartAndEndStation(null, null)
stationList = mutableListOf()
startStationIndex = 0
mBusLinesCallbackMap.forEach {
it.value.onCompleteTask()
}
val changeInfo =
"taskId:${currentTask?.taskId}--lineInfo:${LineManager.lineInfos}"
OchChainLogManager.writeChainLog("结束任务", changeInfo)
}
onComplete()
}
})
}else{
ToastUtils.showShort("有待上传核销数据请稍等")
// 主动上报一次
EventModel.notifySyn()
}
}
}

View File

@@ -186,6 +186,11 @@ object RepositoryManager {
return writeOffRepository?.writeOffEvent(writeOffDetialMsg)
}
fun canCanEndTask(taskId: Long): Boolean {
return writeOffRepository?.canCanEndTask(taskId)?:true
}
fun closeDb() {
if (supportDb()) {
MyDataBase.instance?.close()

View File

@@ -22,6 +22,9 @@ interface WriteOffDataDao {
@Query("SELECT * FROM ${WriteOffDataBean.writeoffDataTable} WHERE event_save_time > :zeroTime and order_no = :orderNo")
fun queryWriteOffByOrderNo(zeroTime: Long = DateTimeUtil.getCurrentDateZero(),orderNo:String): List<WriteOffDataBean>?
@Query("SELECT * FROM ${WriteOffDataBean.writeoffDataTable} WHERE event_save_time > :zeroTime and task_id = :taskId and update_status = ${WriteOffDataBean.notUpdate}")
fun queryWaitWriteOffByTaskId(taskId:Long,zeroTime: Long = DateTimeUtil.getCurrentDateZero()): List<WriteOffDataBean>?
@Query("SELECT * FROM ${WriteOffDataBean.writeoffDataTable} order by event_save_time LIMIT 5 OFFSET 0")
fun queryLastDataByWaritData():List<WriteOffDataBean>?

View File

@@ -44,5 +44,9 @@ object WriteOffDb: IDbRepository {
writeOffDataDao?.insert(*writeOffEvents.toTypedArray())
}
fun queryWaitUpdateEventByTaskId(taskId: Long): List<WriteOffDataBean>? {
return writeOffDataDao?.queryWaitWriteOffByTaskId(taskId)
}
}

View File

@@ -15,4 +15,8 @@ interface IWriteOffRepository {
fun release()
fun canCanEndTask(taskId: Long): Boolean {
return true
}
}

View File

@@ -175,6 +175,11 @@ class WriteOffCacheRepository : IWriteOffRepository {
}
}
override fun canCanEndTask(taskId: Long): Boolean {
val queryWaitUpdateEventByTaskId = WriteOffDb.queryWaitUpdateEventByTaskId(taskId)
return queryWaitUpdateEventByTaskId.isNullOrEmpty()
}
override fun release() {
weakNetInterface = null
CallerLogger.d(TAG,"重置 weakNetInterface")