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 {
|
dependencies {
|
||||||
implementation fileTree(dir: "libs", include: ["*.jar"])
|
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.kotlinstdlib
|
||||||
implementation rootProject.ext.dependencies.androidxappcompat
|
implementation rootProject.ext.dependencies.androidxappcompat
|
||||||
implementation rootProject.ext.dependencies.arouter
|
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)"
|
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")
|
@Query("SELECT * FROM ${SiteDataBean.siteDataTable} WHERE md5 = :md5")
|
||||||
fun querySitesByMd5(md5:String): List<SiteDataBean>?
|
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")
|
@Query("SELECT * FROM ${SiteDataBean.siteDataTable} WHERE line_id = :lineId and site_id = :siteId")
|
||||||
fun querySitesByLineIdAndSiteId(lineId: Long,siteId:Long):List<SiteDataBean>?
|
fun querySitesByLineIdAndSiteId(lineId: Long,siteId:Long):List<SiteDataBean>?
|
||||||
|
|
||||||
|
|||||||
@@ -25,25 +25,65 @@ object SiteDb: IDbRepository {
|
|||||||
siteDataDao = null
|
siteDataDao = null
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addOrUpdate(siteDateList: List<SiteDataBean>) {
|
fun addOrUpdate(serverDataList: List<SiteDataBean>) {
|
||||||
val runnable = Runnable {
|
val runnable = object :Runnable {
|
||||||
siteDataDao?.let { siteDataDao ->
|
override fun run() {
|
||||||
siteDateList.forEach {
|
siteDataDao?.let { siteDataDao ->
|
||||||
val md5Source = it.toString()
|
val localAllSites = siteDataDao.queryAllSites()
|
||||||
val md5Hex = DigestUtils.md5Hex(md5Source)
|
if (localAllSites.isNullOrEmpty()) {
|
||||||
val queryContrailByMd5 = siteDataDao.querySitesByMd5(md5Hex)
|
siteDataDao.insert(*serverDataList.toTypedArray())
|
||||||
if (queryContrailByMd5.isNullOrEmpty()) {// 没有值或者值有变化
|
return
|
||||||
val needUpdate =
|
|
||||||
siteDataDao.querySiteByLineIdAndSiteId(it.lineId!!, it.siteId!!)
|
|
||||||
it.md5 = md5Hex
|
|
||||||
if (needUpdate != null) {
|
|
||||||
it.id = needUpdate.id
|
|
||||||
}
|
|
||||||
siteDataDao.insert(it)
|
|
||||||
}
|
}
|
||||||
|
// 后台新增数据
|
||||||
|
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)
|
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