From 8af7cfd0171dffcfbe4cdcb0869f779e823f6f01 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Tue, 19 Nov 2024 18:02:18 +0800 Subject: [PATCH] =?UTF-8?q?[6.8.0]=20[fea]=20[=E6=9C=89=E6=9C=AA=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E6=A0=B8=E9=94=80=E6=95=B0=E6=8D=AE=20=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E7=BB=93=E6=9D=9F=E4=BB=BB=E5=8A=A1]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/weaknet/model/LineModel.kt | 132 ++++++++++-------- .../weaknet/repository/RepositoryManager.kt | 5 + .../repository/db/dao/WriteOffDataDao.kt | 3 + .../repository/db/repository/WriteOffDb.kt | 4 + .../writeoff/IWriteOffRepository.kt | 4 + .../writeoff/impl/WriteOffCacheRepository.kt | 5 + 6 files changed, 91 insertions(+), 62 deletions(-) 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 c5f5c4a9c9..635b965e5b 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 @@ -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 { - 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 { + 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() + } } } 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 84ae3e5b1f..54cca622f4 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 @@ -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() 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 1babcaf15f..7eeef6e2a1 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 @@ -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? + @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? + @Query("SELECT * FROM ${WriteOffDataBean.writeoffDataTable} order by event_save_time LIMIT 5 OFFSET 0") fun queryLastDataByWaritData():List? 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 9d53a99b05..70b46a921d 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 @@ -44,5 +44,9 @@ object WriteOffDb: IDbRepository { writeOffDataDao?.insert(*writeOffEvents.toTypedArray()) } + fun queryWaitUpdateEventByTaskId(taskId: Long): List? { + return writeOffDataDao?.queryWaitWriteOffByTaskId(taskId) + } + } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt index aa7c7f0275..3649040bad 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt @@ -15,4 +15,8 @@ interface IWriteOffRepository { fun release() + fun canCanEndTask(taskId: Long): Boolean { + return true + } + } \ No newline at end of file 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 3ff320eb2e..34cafdbad1 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 @@ -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")