From 8de4bb649fcfd9b6e90856bb004a3f3e2288c171 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Mon, 16 Dec 2024 17:21:25 +0800 Subject: [PATCH] =?UTF-8?q?[6.8.4]=20[fea]=20[room=20=E9=87=8D=E5=86=99=20?= =?UTF-8?q?update]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/db/dao/ContrailDataDao.kt | 7 ++++ .../weaknet/repository/db/dao/EventDataDao.kt | 4 ++ .../weaknet/repository/db/dao/LineDataDao.kt | 3 ++ .../weaknet/repository/db/dao/SiteDataDao.kt | 8 ++++ .../weaknet/repository/db/dao/TaskDataDao.kt | 40 ++++++++++++------- .../repository/db/repository/ContraiDb.kt | 6 ++- .../repository/db/repository/EventDb.kt | 6 ++- .../repository/db/repository/LineDb.kt | 10 ++++- .../repository/db/repository/SiteDb.kt | 10 ++++- .../repository/db/repository/TaskDb.kt | 5 ++- .../writeoff/impl/WriteOffCacheRepository.kt | 3 ++ 11 files changed, 81 insertions(+), 21 deletions(-) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/ContrailDataDao.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/ContrailDataDao.kt index 63a94fff6e..d0d33794b9 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/ContrailDataDao.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/ContrailDataDao.kt @@ -4,6 +4,7 @@ import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query +import androidx.room.Update import com.mogo.och.weaknet.repository.db.bean.ContrailDataBean @Dao @@ -13,6 +14,10 @@ interface ContrailDataDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(vararg contrailDataBean: ContrailDataBean) + @Query("UPDATE ${ContrailDataBean.ContrailDataTable} SET csv_file_url = :csv_file_url ,csv_file_md5 = :csv_file_md5 ,txt_file_url = :txt_file_url " + + ",txt_file_md5 = :txt_file_md5 ,contrail_save_time = :contrail_save_time,md5 = :md5 WHERE id = :id") + fun update(csv_file_url: String,csv_file_md5: String,txt_file_url: String,txt_file_md5: String,contrail_save_time: Long,md5: String,id:Int) + // 线路删除时同步删除所属轨迹信息 @Query("DELETE FROM ${ContrailDataBean.ContrailDataTable} WHERE line_id = :lineId") fun deleteByLineId(lineId: Long) @@ -35,4 +40,6 @@ interface ContrailDataDao { } } + + } 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 b16842740f..5701978c2a 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,6 +20,10 @@ interface EventDataDao { @Delete fun delete(vararg eventDataBean: EventDataBean) + @Query("UPDATE ${EventDataBean.evnetDataTable} SET update_status = :status WHERE id = :id") + fun updateUpdateSatus(id:Int,status:Int):Int + + // 删除过时数据 @Query("DELETE FROM ${EventDataBean.evnetDataTable} WHERE event_save_time < :zeroTime") fun deleteObsoleteData(zeroTime: Long = DateTimeUtil.getCurrentDateZero()):Int diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/LineDataDao.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/LineDataDao.kt index d34d6a988a..fe6481751a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/LineDataDao.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/LineDataDao.kt @@ -19,6 +19,9 @@ interface LineDataDao { @Delete fun delete(vararg lineDataBean: LineDataBean) + @Query("UPDATE ${LineDataBean.lineDataTable} SET line_name = :lineName ,end_station_name = :endStationName WHERE id = :id") + fun updateInfo(lineName: String?, endStationName: String?, id: Long) + // 删除过时数据 @Query("DELETE FROM ${LineDataBean.lineDataTable} WHERE line_get_time < :zeroTime") fun deleteObsoleteData(zeroTime: Long = DateTimeUtil.getCurrentDateZero()):Int diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/SiteDataDao.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/SiteDataDao.kt index 76005efb7f..3f24c6a222 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/SiteDataDao.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/SiteDataDao.kt @@ -16,6 +16,14 @@ interface SiteDataDao { @Delete() fun deleteById(vararg siteDataBean: SiteDataBean) + @Query("UPDATE ${SiteDataBean.siteDataTable} SET site_id = :site_id ,line_id = :lineId,name = :name,name_kr = :nameKr,seq = :seq," + + "gcj_lon = :gcjLon,gcj_lat = :gcjLat,lon = :lon,lat = :lat,introduction = :introduction," + + "is_play_tts = :isPlayTts,md5 = :md5,videoList = :videoListDB WHERE id = :id") + fun updateInfo(site_id: Long?, lineId: Long?, name: String?,nameKr:String?,seq:Int?, + gcjLon:Double?, gcjLat:Double?,lon:Double?,lat:Double?,introduction:String?, + isPlayTts:Boolean?,md5:String?,videoListDB:String?,id:Int + ) + // 线路删除时同步删除所属站点 @Query("DELETE FROM ${SiteDataBean.siteDataTable} WHERE line_id = :lineId") diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/TaskDataDao.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/TaskDataDao.kt index 8ac85696f1..f588f3627f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/TaskDataDao.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/TaskDataDao.kt @@ -19,51 +19,63 @@ interface TaskDataDao { @Delete fun delete(vararg lineDataBean: TaskDataBean) + @Query("UPDATE ${TaskDataBean.taskDataTable} SET start_time = :currentTimeMillis ,status = :useing WHERE id = :id") + fun updateStatus(currentTimeMillis: Long, useing: Long, id: Int) + //删除非昨天添加的数据 @Query("DELETE FROM ${TaskDataBean.taskDataTable} WHERE task_get_time < :zeroTime") - fun deleteDataByZero(zeroTime:Long): Int + fun deleteDataByZero(zeroTime: Long): Int @Query("UPDATE ${TaskDataBean.taskDataTable} SET end_time = :endTime,status = ${TaskDataBean.used} WHERE task_id = :taskId") - fun endTask(taskId: Long,endTime:Long = DateTimeUtil.getCurrentTimeStamp()) + fun endTask(taskId: Long, endTime: Long = DateTimeUtil.getCurrentTimeStamp()) //查询当天插入的所有数据 @Query("SELECT * FROM ${TaskDataBean.taskDataTable} WHERE task_get_time > :zeroTime") - fun loadAllData(zeroTime:Long): List? + fun loadAllData(zeroTime: Long): List? // 查询当天特定线路正在执行的任务 @Query("SELECT * FROM ${TaskDataBean.taskDataTable} WHERE task_get_time > :zeroTime and status = ${TaskDataBean.useing} and line_id = :lineId") - fun queryRunningTaskByLineId(lineId: Long, zeroTime:Long = DateTimeUtil.getCurrentDateZero()): List? + fun queryRunningTaskByLineId( + lineId: Long, + zeroTime: Long = DateTimeUtil.getCurrentDateZero() + ): List? // 查询当天特定线路正在执行的任务 @Query("SELECT * FROM ${TaskDataBean.taskDataTable} WHERE task_get_time > :zeroTime and status = ${TaskDataBean.useing}") - fun queryRunningTaskByStatus(zeroTime:Long = DateTimeUtil.getCurrentDateZero()): List? + fun queryRunningTaskByStatus(zeroTime: Long = DateTimeUtil.getCurrentDateZero()): List? @Query("SELECT * FROM ${TaskDataBean.taskDataTable} WHERE task_get_time > :zeroTime and status = ${TaskDataBean.unUse} and line_id = :lineId order by task_start_time") - fun queryUnuseTask(lineId: Long,zeroTime:Long = DateTimeUtil.getCurrentDateZero()): Observable?> + fun queryUnuseTask( + lineId: Long, + zeroTime: Long = DateTimeUtil.getCurrentDateZero() + ): Observable?> @Query("DELETE FROM ${TaskDataBean.taskDataTable} WHERE task_get_time > :zeroTime and line_id = :lineId") - fun deleteByLineId(lineId: Long,zeroTime:Long = DateTimeUtil.getCurrentDateZero()) + fun deleteByLineId(lineId: Long, zeroTime: Long = DateTimeUtil.getCurrentDateZero()) @Query("SELECT * FROM ${TaskDataBean.taskDataTable} WHERE line_id = :lineId and task_get_time > :zeroTime") - fun querySitesByLineId(lineId: Long?,zeroTime:Long = DateTimeUtil.getCurrentDateZero()):List? + fun querySitesByLineId( + lineId: Long?, + zeroTime: Long = DateTimeUtil.getCurrentDateZero() + ): List? //查询线路对应的轨迹信息 @Query("SELECT * FROM ${TaskDataBean.taskDataTable} WHERE task_id = :taskId") - fun queryContrailByLineId(taskId:Long): List? + fun queryContrailByLineId(taskId: Long): List? // 删除过时数据 @Query("DELETE FROM ${TaskDataBean.taskDataTable} WHERE task_get_time < :zeroTime") - fun deleteObsoleteData(zeroTime: Long = DateTimeUtil.getCurrentDateZero()):Int - + fun deleteObsoleteData(zeroTime: Long = DateTimeUtil.getCurrentDateZero()): Int //查询线路对应的轨迹信息 只要一个结果 - fun queryTaskByTaskIdOne(taskId: Long): TaskDataBean?{ + fun queryTaskByTaskIdOne(taskId: Long): TaskDataBean? { val queryContrailByLineId = queryContrailByLineId(taskId) - return if(queryContrailByLineId.isNullOrEmpty()){ + return if (queryContrailByLineId.isNullOrEmpty()) { null - }else{ + } else { queryContrailByLineId.first() } } + } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/ContraiDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/ContraiDb.kt index 16a9642ec6..90e301ebe7 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/ContraiDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/ContraiDb.kt @@ -33,10 +33,12 @@ object ContraiDb : IDbRepository { if(queryContrailByMd5.isNullOrEmpty()){// 没有值或者值有变化 val needUpdate = contrailDao.queryContrailByLineIdOne(it.lineId!!) it.md5 = md5Hex - if(needUpdate!=null){ + if(needUpdate!=null){// 更新 it.id = needUpdate.id + contrailDao.update(it.csvFileUrl?:"",it.csvFileMd5?:"",it.txtFileUrl?:"",it.txtFileMd5?:"",System.currentTimeMillis(),md5Hex,needUpdate.id) + }else{// 插入新的 + contrailDao.insert(it) } - contrailDao.insert(it) } } } 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 3941fe0ac9..d6c077becf 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 @@ -1,5 +1,6 @@ package com.mogo.och.weaknet.repository.db.repository +import androidx.room.Transaction import com.mogo.och.common.module.biz.login.LoginStatusManager import com.mogo.och.common.module.manager.cache.OchSPManager import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager @@ -147,8 +148,11 @@ object EventDb: IDbRepository { return queryLastDataByWaritData.first() } + @Transaction fun saveUpdateSuccess(waitUpdateEvent: List) { - eventDataDao?.insert(*waitUpdateEvent.toTypedArray()) + waitUpdateEvent.forEach { + eventDataDao?.updateUpdateSatus(it.id,it.updateStatus) + } } fun deleteObsoleteData() { diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/LineDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/LineDb.kt index b6c8690728..a078f8e25d 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/LineDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/LineDb.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.common.module.manager.loop.BizLoopManager import com.mogo.och.weaknet.repository.db.IDbRepository @@ -37,11 +38,13 @@ object LineDb: IDbRepository { fun checkAndUpdate(serverDatalist:List){ val runable = object :Runnable{ + @Transaction override fun run() { // 校验数据个数 lineDao?.let { lineDao-> val loadData = lineDao.loadData() if(loadData.isNullOrEmpty()){ + // 插入新的值 lineDao.insert(*serverDatalist.toTypedArray()) // TODO: Ui展示需要动态刷新UI去 return @@ -97,13 +100,18 @@ object LineDb: IDbRepository { needUpDate.add(it) } }else{ + // 站点多了 需要删除 needDelete.add(lineBean) } } } } lineDao.delete(*needDelete.toTypedArray()) - lineDao.insert(*needUpDate.toTypedArray()) + + needUpDate.forEach { updateItem-> + // 跟新数据 + lineDao.updateInfo(updateItem.lineName,updateItem.endStationName,updateItem.id) + } } } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/SiteDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/SiteDb.kt index 726b0692e9..8051316aa9 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/SiteDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/SiteDb.kt @@ -1,5 +1,6 @@ package com.mogo.och.weaknet.repository.db.repository +import androidx.room.Transaction import com.mogo.eagle.core.network.utils.digest.DigestUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.util.TAG @@ -27,10 +28,12 @@ object SiteDb: IDbRepository { fun addOrUpdate(serverDataList: List) { val runnable = object :Runnable { + @Transaction override fun run() { siteDataDao?.let { siteDataDao -> val localAllSites = siteDataDao.queryAllSites() if (localAllSites.isNullOrEmpty()) { + // 插入新数据 siteDataDao.insert(*serverDataList.toTypedArray()) return } @@ -46,6 +49,7 @@ object SiteDb: IDbRepository { val md5Hex = DigestUtils.md5Hex(md5Source) it.md5 = md5Hex } + // 新增插入新数据 siteDataDao.insert(*needAddDatas.toTypedArray()) } @@ -86,7 +90,11 @@ object SiteDb: IDbRepository { } } } - siteDataDao.insert(*needUpDate.toTypedArray()) + needUpDate.forEach {updateDateItem-> + siteDataDao.updateInfo(updateDateItem.siteId,updateDateItem.lineId,updateDateItem.name,updateDateItem.nameKr, + updateDateItem.seq,updateDateItem.gcjLon,updateDateItem.gcjLat,updateDateItem.lon,updateDateItem.lat, + updateDateItem.introduction,updateDateItem.isPlayTts,updateDateItem.md5,updateDateItem.videoListDB,updateDateItem.id) + } siteDataDao.deleteById(*needDelete.toTypedArray()) checkData() } 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 a6992fda30..498976cf3f 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 @@ -32,6 +32,7 @@ object TaskDb : IDbRepository { } fun addOrUpdate(vararg lineDataBean: TaskDataBean){ + // 从接口恢复数据 taskDataDao?.insert(*lineDataBean) } @@ -99,7 +100,7 @@ object TaskDb : IDbRepository { it.startTime = System.currentTimeMillis() it.status = TaskDataBean.useing // 更新任务状态 - taskDataDao?.insert(it) + taskDataDao?.updateStatus(System.currentTimeMillis(),TaskDataBean.useing,it.id) OchChainLogManager.writeChainLogDb("开始任务", "变更线路:${lineId}_${lineName}_task:${taskId} 为正在使用的状态") } CallerLogger.d(TAG,"更新任务状态用时:${System.currentTimeMillis()-startTime}") @@ -115,7 +116,7 @@ object TaskDb : IDbRepository { it.startTime = null it.status = TaskDataBean.unUse // 更新任务状态 - taskDataDao?.insert(it) + taskDataDao?.updateStatus(System.currentTimeMillis(),TaskDataBean.unUse,it.id) OchChainLogManager.writeChainLogDb("开始任务", "异常情况${lineId}_${lineName}_task:${taskId} 为未使用的状态 原因:${e.message}") } } 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 1fc2c1c8fc..323951bf3e 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 @@ -223,6 +223,9 @@ class WriteOffCacheRepository : IWriteOffRepository { ?.observeOn(AndroidSchedulers.mainThread()) } + /** + * 小程序核销的乘客插入到计算核销人数的包中 + */ override fun writeOffEvent4Socket(passenger: WriteOffPassenger) { val addWrite = WriteOffDataBean() //addWrite.expiryTime = it.expiryTime