Merge branch 'refs/heads/dev_robobus-d_241028_6.7.3'

This commit is contained in:
donghongyu-pc
2024-11-12 11:41:09 +08:00
5 changed files with 57 additions and 23 deletions

View File

@@ -41,6 +41,16 @@ data class LineDataBean(
const val lineDataTable: String = "line_data_table"
}
fun getLineIdAndName(function: (lineId:Long,lineName:String) -> Unit) {
lineId?.let {id->
lineName?.let {name->
function(id,name)
}
}
}
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
@@ -53,11 +63,10 @@ data class LineDataBean(
return true
}
fun getLineIdAndName(function: (lineId:Long,lineName:String) -> Unit) {
lineId?.let {id->
lineName?.let {name->
function(id,name)
}
}
override fun hashCode(): Int {
var result = lineId?.hashCode() ?: 0
result = 31 * result + (lineName?.hashCode() ?: 0)
return result
}
}

View File

@@ -14,7 +14,7 @@ interface TaskSiteDataDao {
fun insert(vararg lineDataBean: TaskSiteDataBean):List<Long>
//查询当天插入的所有数据
@Query("SELECT * FROM ${TaskSiteDataBean.usedTaskDataTable} WHERE task_id = :taskId")
@Query("SELECT * FROM ${TaskSiteDataBean.usedTaskDataTable} WHERE task_id = :taskId order by seq")
fun queryRunningTask(taskId: Long): List<TaskSiteDataBean>?
@Query("UPDATE ${TaskSiteDataBean.usedTaskDataTable} SET leaving = :leave WHERE task_id = :taskId and site_id = :siteId")

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

View File

@@ -28,10 +28,6 @@ class SwitchLineAdapter(
private var mItemClickListener: LineItemClickListener? = null
fun setDataList(dataList: List<LineDataBean>) {
if (this.mData == dataList) {
// 如果新旧列表一致,则直接返回
return
}
val diffResult = DiffUtil.calculateDiff(MyDiffCallback(this.mData, dataList))
this.mData.clear()
@@ -95,13 +91,13 @@ class SwitchLineAdapter(
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
val oldItem = oldData[oldItemPosition]
val newItem = newData[newItemPosition]
return oldItem == newItem
return oldItem == newItem && oldItem.endStationName == newItem.endStationName
}
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
val oldItem = oldData[oldItemPosition]
val newItem = newData[newItemPosition]
return oldItem == newItem
return oldItem == newItem && oldItem.endStationName == newItem.endStationName
}
}