[fix]
[站点重复]
This commit is contained in:
yangyakun
2024-10-23 10:53:57 +08:00
parent 8745eec4a1
commit 63dc124902
4 changed files with 32 additions and 1 deletions

View File

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

View File

@@ -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<SiteDataBean>?
@Query("SELECT * FROM ${SiteDataBean.siteDataTable} GROUP by md5 HAVING count(1) > 1")
fun checkData():List<SiteDataBean>?
fun querySiteByLineIdAndSiteId(lineId: Long,siteId:Long): SiteDataBean?{
val queryContrailByLineId = querySitesByLineIdAndSiteId(lineId,siteId)
return if(queryContrailByLineId.isNullOrEmpty()){

View File

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

View File

@@ -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("没有站点数据")
}