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 2c78d450e8..a7e85831a0 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 @@ -13,6 +13,7 @@ import com.mogo.och.weaknet.repository.net.shuttlesaas.ShuttleSaasServiceManager import com.mogo.och.weaknet.repository.db.bean.EventDataBean import com.mogo.och.weaknet.repository.db.repository.EventDb import com.mogo.och.weaknet.repository.RepositoryManager +import com.mogo.och.weaknet.repository.db.repository.SiteDb import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers @@ -43,6 +44,11 @@ object EventModel : EventDb.EventCallback { override fun notifySyn() { BizLoopManager.removeCallback(loopUpdateInfo) updateEvent() + checkDbData() + } + + private fun checkDbData() { + SiteDb.checkData() } 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 4860806608..736aea9fdb 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 @@ -1,6 +1,7 @@ package com.mogo.och.weaknet.repository.db.dao import androidx.room.Dao +import androidx.room.Delete import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query @@ -12,6 +13,10 @@ interface SiteDataDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(vararg lineDataBean: SiteDataBean) + @Delete() + fun deleteById(vararg siteDataBean: SiteDataBean) + + // 线路删除时同步删除所属站点 @Query("DELETE FROM ${SiteDataBean.siteDataTable} WHERE line_id = :lineId") fun deleteByLineId(lineId: Long) @@ -26,6 +31,9 @@ interface SiteDataDao { @Query("SELECT * FROM ${SiteDataBean.siteDataTable} WHERE line_id = :lineId") fun querySitesByLineId(lineId: Long):List? + @Query("SELECT * FROM ${SiteDataBean.siteDataTable} GROUP by md5 HAVING count(1) > 1") + fun checkData():List? + fun querySiteByLineIdAndSiteId(lineId: Long,siteId:Long): SiteDataBean?{ val queryContrailByLineId = querySitesByLineIdAndSiteId(lineId,siteId) return if(queryContrailByLineId.isNullOrEmpty()){ 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 8dd6856a00..9a335dad7e 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,6 +1,9 @@ package com.mogo.och.weaknet.repository.db.repository 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 +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.MyDataBase import com.mogo.och.weaknet.repository.db.bean.SiteDataBean @@ -31,11 +34,25 @@ object SiteDb { siteDataDao.insert(it) } } + checkData() } } BizLoopManager.runInIoThread(runnable) } + fun checkData() { + CallerLogger.d(TAG,"检测站点数据") + siteDataDao?.checkData()?.let { list -> + list.forEach { + siteDataDao?.deleteById(it) + } + if (list.isNotEmpty()) { + OchChainLogManager.writeChainLogDb("数据检测", "有重复数据${list}") + checkData() + } + } + } + fun deleteByLineId(lineId: Long) { siteDataDao?.deleteByLineId(lineId) } 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 d7b5f784fa..4c1fb09a55 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 @@ -25,7 +25,7 @@ object TaskSiteDb { fun startTask(taskId: Long, linId: Long,lineName:String):Int? { // 获取线路的站点 var startTime = System.currentTimeMillis() - val querySites = SiteDb.querySiteByLineId(linId) + val querySites = SiteDb.querySiteByLineId(linId)?.distinctBy { it.siteId } if(querySites.isNullOrEmpty()){ throw DbException("没有站点数据") }