From 29927acaf652ad5c4928397b87d3e3ecb070f130 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Mon, 11 Nov 2024 15:59:42 +0800 Subject: [PATCH] =?UTF-8?q?[6.7.3]=20[fix]=20[=E7=BA=BF=E8=B7=AF=E5=92=8C?= =?UTF-8?q?=E7=AB=99=E7=82=B9=E6=9B=B4=E6=96=B0=E9=80=BB=E8=BE=91=E5=8F=98?= =?UTF-8?q?=E6=9B=B4]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/db/repository/LineDb.kt | 35 +++++++++++++++---- .../repository/db/repository/SiteDb.kt | 14 ++++++-- 2 files changed, 39 insertions(+), 10 deletions(-) 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 a3cb252780..b6c8690728 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 @@ -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() - 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() + val needUpDate = mutableListOf() + + 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()) } } } 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 7fea6ce643..726b0692e9 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 @@ -59,6 +59,10 @@ object SiteDb: IDbRepository { // 交集 本地数据库 val oldDataList = localAllSites-needMinusDatas + val needDelete = mutableListOf() + val needUpDate = mutableListOf() + + 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() } }