[fix]
[线路和站点更新逻辑变更]
This commit is contained in:
yangyakun
2024-11-11 15:59:42 +08:00
parent 36d1132931
commit 29927acaf6
2 changed files with 39 additions and 10 deletions

View File

@@ -46,13 +46,6 @@ object LineDb: IDbRepository {
// TODO: Ui展示需要动态刷新UI去
return
}
val tempList = loadData.groupBy { it.lineId }.filter { it.value.size > 1 }
val needDelete = mutableListOf<LineDataBean>()
tempList.forEach {multData->
needDelete.add(multData.value.first())
}
// 删除本地重复的
lineDao.delete(*needDelete.toTypedArray())
// 后台新增数据
val needAddDatas = serverDatalist-loadData
// 后台没有本地数据库有的未分配线路
@@ -83,6 +76,34 @@ object LineDb: IDbRepository {
}
}
}
// 交集 服务器端
val needUpdateByMd5 = serverDatalist-needAddDatas
// 交集 本地数据库
val oldDataList = loadData-needMinusDatas
val needDelete = mutableListOf<LineDataBean>()
val needUpDate = mutableListOf<LineDataBean>()
needUpdateByMd5.forEach {
val oldList = oldDataList.filter { local -> local.lineId == it.lineId }
if(oldList.isNotEmpty()){
oldList.forEachIndexed { index, lineBean ->
if(index==0){
if (lineBean.lineName == it.lineName && lineBean.endStationName == it.endStationName) {
// 数据没有变化
}else{
it.id = lineBean.id
needUpDate.add(it)
}
}else{
needDelete.add(lineBean)
}
}
}
}
lineDao.delete(*needDelete.toTypedArray())
lineDao.insert(*needUpDate.toTypedArray())
}
}
}

View File

@@ -59,6 +59,10 @@ object SiteDb: IDbRepository {
// 交集 本地数据库
val oldDataList = localAllSites-needMinusDatas
val needDelete = mutableListOf<SiteDataBean>()
val needUpDate = mutableListOf<SiteDataBean>()
needUpdateByMd5.forEach {
val md5Source = it.toString()
val md5Hex = DigestUtils.md5Hex(md5Source)
@@ -67,19 +71,23 @@ object SiteDb: IDbRepository {
if(oldList.isNotEmpty()){
oldList.forEachIndexed { index, siteDataBean ->
if(index==0){
if(siteDataBean.md5==md5Hex){
if (siteDataBean.md5 == md5Hex) {
// 数据没有变化
}else{
it.id = siteDataBean.id
it.md5 = md5Hex
siteDataDao.insert(it)
needUpDate.add(it)
}
}else{
siteDataDao.deleteById(siteDataBean)
needDelete.add(siteDataBean)
}
}
}
}
siteDataDao.insert(*needUpDate.toTypedArray())
siteDataDao.deleteById(*needDelete.toTypedArray())
checkData()
}
}