Merge branch 'refs/heads/dev_robotaxi-d_240912_6.7.2_local' into dev_robobus-d_241028_6.7.3
This commit is contained in:
@@ -49,6 +49,10 @@ android {
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: "libs", include: ["*.jar"])
|
||||
|
||||
testImplementation 'junit:junit:4.12'
|
||||
testImplementation project(path: ':OCH:shuttle:driver_weaknet')
|
||||
|
||||
implementation rootProject.ext.dependencies.kotlinstdlib
|
||||
implementation rootProject.ext.dependencies.androidxappcompat
|
||||
implementation rootProject.ext.dependencies.arouter
|
||||
|
||||
@@ -99,5 +99,23 @@ data class SiteDataBean(
|
||||
return "SiteDataBean(siteId=$siteId, lineId=$lineId, name=$name, nameKr=$nameKr, seq=$seq, gcjLon=$gcjLon, gcjLat=$gcjLat, lon=$lon, lat=$lat, introduction=$introduction, isPlayTts=$isPlayTts, videoList=$videoListDB)"
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (this === other) return true
|
||||
if (javaClass != other?.javaClass) return false
|
||||
|
||||
other as SiteDataBean
|
||||
|
||||
if (siteId != other.siteId) return false
|
||||
if (lineId != other.lineId) return false
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
var result = siteId?.hashCode() ?: 0
|
||||
result = 31 * result + (lineId?.hashCode() ?: 0)
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -25,6 +25,11 @@ interface SiteDataDao {
|
||||
@Query("SELECT * FROM ${SiteDataBean.siteDataTable} WHERE md5 = :md5")
|
||||
fun querySitesByMd5(md5:String): List<SiteDataBean>?
|
||||
|
||||
//查询线路对应的轨迹信息
|
||||
@Query("SELECT * FROM ${SiteDataBean.siteDataTable}")
|
||||
fun queryAllSites(): List<SiteDataBean>?
|
||||
|
||||
|
||||
@Query("SELECT * FROM ${SiteDataBean.siteDataTable} WHERE line_id = :lineId and site_id = :siteId")
|
||||
fun querySitesByLineIdAndSiteId(lineId: Long,siteId:Long):List<SiteDataBean>?
|
||||
|
||||
|
||||
@@ -25,25 +25,65 @@ object SiteDb: IDbRepository {
|
||||
siteDataDao = null
|
||||
}
|
||||
|
||||
fun addOrUpdate(siteDateList: List<SiteDataBean>) {
|
||||
val runnable = Runnable {
|
||||
siteDataDao?.let { siteDataDao ->
|
||||
siteDateList.forEach {
|
||||
val md5Source = it.toString()
|
||||
val md5Hex = DigestUtils.md5Hex(md5Source)
|
||||
val queryContrailByMd5 = siteDataDao.querySitesByMd5(md5Hex)
|
||||
if (queryContrailByMd5.isNullOrEmpty()) {// 没有值或者值有变化
|
||||
val needUpdate =
|
||||
siteDataDao.querySiteByLineIdAndSiteId(it.lineId!!, it.siteId!!)
|
||||
it.md5 = md5Hex
|
||||
if (needUpdate != null) {
|
||||
it.id = needUpdate.id
|
||||
}
|
||||
siteDataDao.insert(it)
|
||||
fun addOrUpdate(serverDataList: List<SiteDataBean>) {
|
||||
val runnable = object :Runnable {
|
||||
override fun run() {
|
||||
siteDataDao?.let { siteDataDao ->
|
||||
val localAllSites = siteDataDao.queryAllSites()
|
||||
if (localAllSites.isNullOrEmpty()) {
|
||||
siteDataDao.insert(*serverDataList.toTypedArray())
|
||||
return
|
||||
}
|
||||
// 后台新增数据
|
||||
val needAddDatas = serverDataList-localAllSites
|
||||
// 后台没有本地数据库有的未分配线路
|
||||
val needMinusDatas = localAllSites - serverDataList
|
||||
|
||||
if (needAddDatas.isNotEmpty()) {
|
||||
// 新增线路
|
||||
needAddDatas.forEach {
|
||||
val md5Source = it.toString()
|
||||
val md5Hex = DigestUtils.md5Hex(md5Source)
|
||||
it.md5 = md5Hex
|
||||
}
|
||||
siteDataDao.insert(*needAddDatas.toTypedArray())
|
||||
}
|
||||
|
||||
if (needMinusDatas.isNotEmpty()) {
|
||||
// 删除线路
|
||||
siteDataDao.deleteById(*needMinusDatas.toTypedArray())
|
||||
}
|
||||
|
||||
// 交集 服务器端
|
||||
val needUpdateByMd5 = serverDataList-needAddDatas
|
||||
// 交集 本地数据库
|
||||
val oldDataList = localAllSites-needMinusDatas
|
||||
|
||||
needUpdateByMd5.forEach {
|
||||
val md5Source = it.toString()
|
||||
val md5Hex = DigestUtils.md5Hex(md5Source)
|
||||
val oldList =
|
||||
oldDataList.filter { local -> local.siteId == it.siteId && local.lineId == it.lineId }
|
||||
if(oldList.isNotEmpty()){
|
||||
oldList.forEachIndexed { index, siteDataBean ->
|
||||
if(index==0){
|
||||
if(siteDataBean.md5==md5Hex){
|
||||
// 数据没有变化
|
||||
}else{
|
||||
it.id = siteDataBean.id
|
||||
it.md5 = md5Hex
|
||||
siteDataDao.insert(it)
|
||||
}
|
||||
}else{
|
||||
siteDataDao.deleteById(siteDataBean)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
checkData()
|
||||
}
|
||||
checkData()
|
||||
}
|
||||
|
||||
}
|
||||
BizLoopManager.runInIoThread(runnable)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
package com.mogo.och.common.module
|
||||
|
||||
import com.mogo.eagle.core.network.utils.digest.DigestUtils
|
||||
import com.mogo.och.weaknet.repository.db.bean.SiteDataBean
|
||||
import org.junit.Test
|
||||
|
||||
/**
|
||||
* Example local unit test, which will execute on the development machine (host).
|
||||
*
|
||||
* See [testing documentation](http://d.android.com/tools/testing).
|
||||
*/
|
||||
class ExampleUnitTest {
|
||||
@Test
|
||||
fun addition_isCorrect() {
|
||||
|
||||
val serverDataList = mutableListOf<SiteDataBean>()
|
||||
serverDataList.add(SiteDataBean(siteId = 1, lineId = 1, name = "北京站1"))
|
||||
serverDataList.add(SiteDataBean(siteId = 2, lineId = 1, name = "北京站2"))
|
||||
serverDataList.add(SiteDataBean(siteId = 3, lineId = 1, name = "北京站3"))
|
||||
val localAllSites = mutableListOf<SiteDataBean>()
|
||||
localAllSites.add(SiteDataBean(siteId = 1, lineId = 1, name = "北京站1"))
|
||||
localAllSites.add(SiteDataBean(siteId = 2, lineId = 1, name = "北京站2"))
|
||||
localAllSites.add(SiteDataBean(siteId = 3, lineId = 1, name = "北京站3"))
|
||||
|
||||
// 后台新增数据
|
||||
val needAddDatas = serverDataList - localAllSites
|
||||
// 后台没有本地数据库有的未分配线路
|
||||
val needMinusDatas = localAllSites - serverDataList
|
||||
|
||||
if (needAddDatas.isNotEmpty()) {
|
||||
// 新增线路
|
||||
println("需要新增站点$needAddDatas")
|
||||
}
|
||||
|
||||
if (needMinusDatas.isNotEmpty()) {
|
||||
// 删除线路
|
||||
println("需要删除站点$needMinusDatas")
|
||||
}
|
||||
|
||||
// 交集 服务器端
|
||||
val needUpdateByMd5 = serverDataList - needAddDatas
|
||||
val oldDataList = localAllSites - needMinusDatas
|
||||
|
||||
needUpdateByMd5.forEach {
|
||||
val md5Source = it.toString()
|
||||
val md5Hex = DigestUtils.md5Hex(md5Source)
|
||||
val oldList =
|
||||
oldDataList.filter { local -> local.siteId == it.siteId && local.lineId == it.lineId }
|
||||
if (oldList.isNotEmpty()) {
|
||||
oldList.forEachIndexed { index, siteDataBean ->
|
||||
if (index == 0) {
|
||||
if (siteDataBean.md5 == md5Hex) {
|
||||
// 数据没有变化
|
||||
} else {
|
||||
it.id = siteDataBean.id
|
||||
it.md5 = md5Hex
|
||||
println("需要更新的站点:old:${siteDataBean}\n new:${it}")
|
||||
}
|
||||
} else {
|
||||
println("多余数据需要删除:${siteDataBean}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testData() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user