增加草图任务id及重构部分数据库读取业务

This commit is contained in:
qiji4215
2023-08-16 11:24:56 +08:00
parent 7abf0e9e15
commit 015733451b
21 changed files with 180 additions and 160 deletions

View File

@@ -11,7 +11,7 @@ import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.navinfo.collect.library.data.entity.RenderEntity
import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.collect.library.enum.DataCodeEnum
import com.navinfo.collect.library.enums.DataCodeEnum
import com.navinfo.omqs.Constant
import com.navinfo.omqs.bean.ImportConfig
import com.navinfo.omqs.db.deep.LinkList

View File

@@ -3,7 +3,6 @@ package com.navinfo.omqs.db
import android.util.Log
import com.navinfo.collect.library.data.entity.ReferenceEntity
import com.navinfo.collect.library.data.entity.RenderEntity
import com.navinfo.collect.library.enum.DataCodeEnum
import com.navinfo.collect.library.utils.GeometryTools
import io.realm.Realm
import org.json.JSONArray
@@ -13,7 +12,6 @@ import org.locationtech.jts.geom.Coordinate
import org.locationtech.jts.geom.Geometry
import org.locationtech.jts.io.WKTWriter
import org.oscim.core.GeoPoint
import kotlin.math.min
class ImportPreProcess {

View File

@@ -7,14 +7,14 @@ import com.navinfo.collect.library.data.entity.HadLinkDvoBean
import com.navinfo.collect.library.data.entity.QsRecordBean
import com.navinfo.collect.library.data.entity.RenderEntity
import com.navinfo.collect.library.data.entity.RenderEntity.Companion.LinkTable
import com.navinfo.collect.library.enums.DataCodeEnum
import com.navinfo.collect.library.map.NIMapController
import com.navinfo.collect.library.utils.GeometryTools
import com.navinfo.collect.library.utils.GeometryToolsKt
import com.navinfo.collect.library.utils.RealmDBParamUtils
import com.navinfo.omqs.bean.QRCodeBean
import com.navinfo.collect.library.utils.MapParamUtils
import io.realm.Realm
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import io.realm.RealmModel
import io.realm.RealmQuery
import org.locationtech.jts.geom.*
import org.locationtech.jts.operation.buffer.BufferOp
import org.oscim.core.GeoPoint
@@ -26,6 +26,8 @@ class RealmOperateHelper() {
@Inject
lateinit var niMapController: NIMapController
private var isUpdate: Boolean = false
/**
* 根据当前点位查询匹配的Link数据
* @param point 点位经纬度信息
@@ -59,12 +61,12 @@ class RealmOperateHelper() {
val yStart = tileYSet.stream().min(Comparator.naturalOrder()).orElse(null)
val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null)
// 查询realm中对应tile号的数据
val realm = Realm.getDefaultInstance()
val realmList = realm.where(RenderEntity::class.java)
.equalTo("table", "OMDB_RD_LINK")
.and()
.rawPredicate("tileX>=$xStart and tileX<=$xEnd and tileY>=$yStart and tileY<=$yEnd").and().equalTo("taskId",RealmDBParamUtils.getTaskId()).and().between("enable",1,2)
.findAll()
val realm = getRealmDefaultInstance()
val realmList =
getRealmTools(RenderEntity::class.java,false).and().equalTo("table", "OMDB_RD_LINK")
.and()
.rawPredicate("tileX>=$xStart and tileX<=$xEnd and tileY>=$yStart and tileY<=$yEnd")
.findAll()
// 将获取到的数据和查询的polygon做相交只返回相交的数据
val dataList = realm.copyFromRealm(realmList)
val queryResult = dataList?.stream()?.filter {
@@ -122,11 +124,11 @@ class RealmOperateHelper() {
val yStart = tileYSet.stream().min(Comparator.naturalOrder()).orElse(null)
val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null)
// 查询realm中对应tile号的数据
val realm = Realm.getDefaultInstance()
val realmList = realm.where(RenderEntity::class.java)
val realm = getRealmDefaultInstance()
val realmList = getRealmTools(RenderEntity::class.java, true).and()
.equalTo("table", table)
.and()
.rawPredicate("tileX>=$xStart and tileX<=$xEnd and tileY>=$yStart and tileY<=$yEnd").and().equalTo("taskId",RealmDBParamUtils.getTaskId()).and().between("enable",1,2)
.rawPredicate("tileX>=$xStart and tileX<=$xEnd and tileY>=$yStart and tileY<=$yEnd")
.findAll()
// 将获取到的数据和查询的polygon做相交只返回相交的数据
val dataList = realm.copyFromRealm(realmList)
@@ -163,10 +165,8 @@ class RealmOperateHelper() {
bufferType
)
val realm = Realm.getDefaultInstance()
val realmList = realm.where(HadLinkDvoBean::class.java)
.equalTo("taskId",RealmDBParamUtils.getTaskId()).and().between("enable",1,2)
.findAll()
val realm = getRealmDefaultInstance()
val realmList = getRealmTools(HadLinkDvoBean::class.java, false).findAll()
var linkBean: HadLinkDvoBean? = null
var nearLast: Double = 99999.99
for (link in realmList) {
@@ -185,12 +185,10 @@ class RealmOperateHelper() {
suspend fun queryLink(linkPid: String): RenderEntity? {
var link: RenderEntity? = null
val realm = Realm.getDefaultInstance()
val realmR = realm.where(RenderEntity::class.java)
.equalTo("table", "OMDB_RD_LINK")
.and()
.equalTo("properties['${LinkTable.linkPid}']", linkPid).and().equalTo("taskId",RealmDBParamUtils.getTaskId()).and().between("enable",1,2)
.findFirst()
val realm = getRealmDefaultInstance()
val realmR =
getRealmTools(RenderEntity::class.java, true).and().equalTo("table", "OMDB_RD_LINK")
.and().equalTo("properties['${LinkTable.linkPid}']", linkPid).findFirst()
if (realmR != null) {
link = realm.copyFromRealm(realmR)
}
@@ -203,12 +201,9 @@ class RealmOperateHelper() {
* */
suspend fun queryQcRecordBean(markId: String): QsRecordBean? {
var qsRecordBean: QsRecordBean? = null
val realm = Realm.getDefaultInstance()
val realmR = realm.where(QsRecordBean::class.java)
.equalTo("table", "QsRecordBean")
.and()
.equalTo("id", markId).and().equalTo("taskId",RealmDBParamUtils.getTaskId()).and().between("enable",1,2)
.findFirst()
val realm = getRealmDefaultInstance()
val realmR = getRealmTools(QsRecordBean::class.java, false).and()
.equalTo("table", "QsRecordBean").and().equalTo("id", markId).findFirst()
if (realmR != null) {
qsRecordBean = realm.copyFromRealm(realmR)
}
@@ -218,11 +213,10 @@ class RealmOperateHelper() {
suspend fun queryLinkToMutableRenderEntityList(linkPid: String): MutableList<RenderEntity>? {
val resultList = mutableListOf<RenderEntity>()
val realm = Realm.getDefaultInstance()
val realm = getRealmDefaultInstance()
val realmR = realm.where(RenderEntity::class.java)
.equalTo("properties['${LinkTable.linkPid}']", linkPid).and().equalTo("taskId",RealmDBParamUtils.getTaskId()).and().between("enable",1,2)
.findAll()
val realmR = getRealmTools(RenderEntity::class.java, true).and()
.equalTo("properties['${LinkTable.linkPid}']", linkPid).findAll()
val dataList = realm.copyFromRealm(realmR)
@@ -261,12 +255,12 @@ class RealmOperateHelper() {
val xEnd = tileXSet.stream().max(Comparator.naturalOrder()).orElse(null)
val yStart = tileYSet.stream().min(Comparator.naturalOrder()).orElse(null)
val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null)
val realm = Realm.getDefaultInstance()
val realm = getRealmDefaultInstance()
// 查询realm中对应tile号的数据
val realmList = realm.where(RenderEntity::class.java)
.notEqualTo("table", "OMDB_RD_LINK")
val realmList = getRealmTools(RenderEntity::class.java, false).and()
.notEqualTo("table", DataCodeEnum.OMDB_RD_LINK.tableName)
.and()
.rawPredicate("tileX>=$xStart and tileX<=$xEnd and tileY>=$yStart and tileY<=$yEnd").and().equalTo("taskId",RealmDBParamUtils.getTaskId()).and().between("enable",1,2)
.rawPredicate("tileX>=$xStart and tileX<=$xEnd and tileY>=$yStart and tileY<=$yEnd")
.findAll()
// 将获取到的数据和查询的polygon做相交只返回相交的数据
val queryResult = realmList?.stream()?.filter {
@@ -292,11 +286,11 @@ class RealmOperateHelper() {
* */
suspend fun queryLinkByLinkPid(linkPid: String): MutableList<RenderEntity> {
val result = mutableListOf<RenderEntity>()
val realm = Realm.getDefaultInstance()
val realmList = realm.where(RenderEntity::class.java)
.notEqualTo("table", "OMDB_RD_LINK")
val realm = getRealmDefaultInstance()
val realmList = getRealmTools(RenderEntity::class.java, false).and()
.notEqualTo("table", DataCodeEnum.OMDB_RD_LINK.tableName)
.and()
.equalTo("properties['${LinkTable.linkPid}']", linkPid).and().equalTo("taskId",RealmDBParamUtils.getTaskId()).and().between("enable",1,2)
.equalTo("properties['${LinkTable.linkPid}']", linkPid).and()
.findAll()
result.addAll(realm.copyFromRealm(realmList))
return result
@@ -370,6 +364,35 @@ class RealmOperateHelper() {
}
fun <E : RealmModel> getRealmTools(clazz: Class<E>, enableSql: Boolean): RealmQuery<E> {
return if (MapParamUtils.getDataLayerEnum() != null) {
var sql = "taskId=${MapParamUtils.getTaskId()}"
if (enableSql) {
sql =
" enable${MapParamUtils.getDataLayerEnum().sql} and taskId=${MapParamUtils.getTaskId()}"
}
getRealmDefaultInstance().where(clazz).rawPredicate(sql)
} else {
getRealmDefaultInstance().where(clazz)
.rawPredicate(" taskId=${MapParamUtils.getTaskId()}")
}
}
fun getRealmDefaultInstance(): Realm {
if(isUpdate){
Realm.getDefaultInstance().refresh()
isUpdate = false;
}
return Realm.getDefaultInstance()
}
fun updateRealmDefaultInstance(){
isUpdate = true
}
}
enum class BUFFER_TYPE(val index: Int) {

View File

@@ -24,14 +24,14 @@ import androidx.navigation.findNavController
import com.blankj.utilcode.util.ToastUtils
import com.navinfo.collect.library.data.dao.impl.TraceDataBase
import com.navinfo.collect.library.data.entity.*
import com.navinfo.collect.library.enum.DataCodeEnum
import com.navinfo.collect.library.enums.DataCodeEnum
import com.navinfo.collect.library.garminvirbxe.HostBean
import com.navinfo.collect.library.map.NIMapController
import com.navinfo.collect.library.map.OnGeoPointClickListener
import com.navinfo.collect.library.map.handler.*
import com.navinfo.collect.library.utils.GeometryTools
import com.navinfo.collect.library.utils.GeometryToolsKt
import com.navinfo.collect.library.utils.RealmDBParamUtils
import com.navinfo.collect.library.utils.MapParamUtils
import com.navinfo.omqs.Constant
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.ImportConfig
@@ -291,7 +291,7 @@ class MainViewModel @Inject constructor(
initNILocationData()
}
sharedPreferences.registerOnSharedPreferenceChangeListener(this)
RealmDBParamUtils.setTaskId(sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1))
MapParamUtils.setTaskId(sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1))
socketServer = SocketServer(mapController, traceDataBase, sharedPreferences)
}
@@ -324,10 +324,10 @@ class MainViewModel @Inject constructor(
private suspend fun initQsRecordData() {
if (currentTaskBean != null) {
var list = mutableListOf<QsRecordBean>()
val realm = Realm.getDefaultInstance()
val realm = realmOperateHelper.getRealmDefaultInstance()
realm.executeTransaction {
val objects =
realm.where<QsRecordBean>().equalTo("taskId", currentTaskBean!!.id).findAll()
realmOperateHelper.getRealmTools(QsRecordBean::class.java,false).findAll()
list = realm.copyFromRealm(objects)
}
mapController.markerHandle.removeAllQsMarker()
@@ -342,9 +342,9 @@ class MainViewModel @Inject constructor(
*/
private suspend fun initNoteData() {
var list = mutableListOf<NoteBean>()
val realm = Realm.getDefaultInstance()
val realm = realmOperateHelper.getRealmDefaultInstance()
realm.executeTransaction {
val objects = realm.where<NoteBean>().findAll()
val objects = realmOperateHelper.getRealmTools(NoteBean::class.java,false).findAll()
list = realm.copyFromRealm(objects)
}
@@ -548,15 +548,16 @@ class MainViewModel @Inject constructor(
}
val realm = Realm.getDefaultInstance()
val entity = realm.where(RenderEntity::class.java)
.equalTo("table", "OMDB_RESTRICTION").and().equalTo(
val realm = realmOperateHelper.getRealmDefaultInstance()
val entity = realmOperateHelper.getRealmTools(RenderEntity::class.java,true).and()
.equalTo("table", DataCodeEnum.OMDB_RESTRICTION.tableName).and().equalTo(
"properties['linkIn']", it
).findFirst()
if (entity != null) {
val outLink = entity.properties["linkOut"]
val linkOutEntity = realm.where(RenderEntity::class.java)
.equalTo("table", "OMDB_RD_LINK").and().equalTo(
val linkOutEntity = realmOperateHelper.getRealmTools(RenderEntity::class.java,true).and()
.equalTo("table", DataCodeEnum.OMDB_RD_LINK.tableName).and().equalTo(
"properties['${RenderEntity.Companion.LinkTable.linkPid}']",
outLink
).findFirst()
@@ -1112,14 +1113,6 @@ class MainViewModel @Inject constructor(
}
fun click2Dor3D() {
viewModelScope.launch(Dispatchers.IO) {
Log.e(
"qj",
"${
Realm.getDefaultInstance().where(RenderEntity::class.java).findAll().size
}==安装数量"
)
}
}
/**

View File

@@ -6,7 +6,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import com.navinfo.collect.library.enum.DataCodeEnum
import com.navinfo.collect.library.enums.DataCodeEnum
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.SignBean
import com.navinfo.omqs.databinding.AdapterSignBinding

View File

@@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.navinfo.collect.library.data.entity.NoteBean
import com.navinfo.collect.library.map.NIMapController
import com.navinfo.collect.library.utils.MapParamUtils
import com.navinfo.omqs.ui.dialog.FirstDialog
import dagger.hilt.android.lifecycle.HiltViewModel
import io.realm.Realm
@@ -108,6 +109,7 @@ class NoteViewModel @Inject constructor(
noteBean.id = mNoteBean!!.id
noteBean.description = noteBeanDescription
}
noteBean.taskId = MapParamUtils.getTaskId()
mNoteBean = noteBean
val realm = Realm.getDefaultInstance()
realm.executeTransaction {

View File

@@ -3,11 +3,13 @@ package com.navinfo.omqs.ui.fragment.personalcenter
import android.Manifest
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import com.blankj.utilcode.util.ToastUtils
@@ -15,7 +17,9 @@ import com.blankj.utilcode.util.UriUtils
import com.github.k1rakishou.fsaf.FileChooser
import com.github.k1rakishou.fsaf.callback.FSAFActivityCallbacks
import com.github.k1rakishou.fsaf.callback.FileChooserCallback
import com.navinfo.collect.library.enums.DataLayerEnum
import com.navinfo.collect.library.map.NIMapController
import com.navinfo.collect.library.utils.MapParamUtils
import com.navinfo.omqs.Constant
import com.navinfo.omqs.R
import com.navinfo.omqs.databinding.FragmentPersonalCenterBinding
@@ -67,6 +71,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?
override fun onCancel(reason: String) {
}
@RequiresApi(Build.VERSION_CODES.N)
override fun onResult(uri: Uri) {
val file = UriUtils.uri2File(uri)
// 开始导入数据
@@ -126,6 +131,16 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?
// .animateTo(GeoPoint( 40.05108004733645, 116.29187746293708 ))
.animateTo(GeoPoint( 39.91975038055932,116.35447089476969 ))
}
R.id.personal_center_menu_open_all_layer -> {
MapParamUtils.setDataLayerEnum(DataLayerEnum.SHOW_ALL_LAYERS)
niMapController.layerManagerHandler.updateOMDBVectorTileLayer()
viewModel.realmOperateHelper.updateRealmDefaultInstance()
}
R.id.personal_center_menu_close_hide_layer -> {
MapParamUtils.setDataLayerEnum(DataLayerEnum.ONLY_ENABLE_LAYERS)
niMapController.layerManagerHandler.updateOMDBVectorTileLayer()
viewModel.realmOperateHelper.updateRealmDefaultInstance()
}
// R.id.personal_center_menu_task_list -> {
// findNavController().navigate(R.id.TaskManagerFragment)
// }

View File

@@ -8,7 +8,7 @@ import androidx.fragment.app.activityViewModels
import androidx.navigation.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import com.navinfo.collect.library.data.entity.RenderEntity
import com.navinfo.collect.library.enum.DataCodeEnum
import com.navinfo.collect.library.enums.DataCodeEnum
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.SignBean
import com.navinfo.omqs.databinding.FragmentSignInfoBinding

View File

@@ -16,7 +16,7 @@ import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.collect.library.map.NIMapController
import com.navinfo.collect.library.map.OnGeoPointClickListener
import com.navinfo.collect.library.utils.GeometryTools
import com.navinfo.collect.library.utils.RealmDBParamUtils
import com.navinfo.collect.library.utils.MapParamUtils
import com.navinfo.omqs.Constant
import com.navinfo.omqs.db.RealmOperateHelper
import com.navinfo.omqs.http.NetworkService
@@ -142,7 +142,7 @@ class TaskViewModel @Inject constructor(
liveDataTaskLinks.value = taskBean.hadLinkDvoList
showTaskLinks(taskBean)
RealmDBParamUtils.setTaskId(taskBean.id)
MapParamUtils.setTaskId(taskBean.id)
mapController.layerManagerHandler.updateOMDBVectorTileLayer()
mapController.mMapView.updateMap(true)

View File

@@ -2,7 +2,7 @@ package com.navinfo.omqs.ui.widget
import android.util.Log
import com.navinfo.collect.library.data.entity.RenderEntity
import com.navinfo.collect.library.enum.DataCodeEnum
import com.navinfo.collect.library.enums.DataCodeEnum
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.RoadNameBean
import com.navinfo.omqs.bean.SignBean

View File

@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
tools:showIn="navigation_view"
tools:context=".ui.fragment.personalcenter.PersonalCenterFragment">
<group android:checkableBehavior="single">
<item
@@ -43,19 +44,6 @@
<group android:checkableBehavior="single">
<item android:title="小标题">
<menu>
<!-- <item-->
<!-- android:id="@+id/personal_center_menu_task_list"-->
<!-- android:icon="@drawable/ic_baseline_format_list_bulleted_24"-->
<!-- android:title="任务列表" />-->
<!-- <item-->
<!-- android:id="@+id/personal_center_menu_qs_record_list"-->
<!-- android:icon="@drawable/ic_baseline_playlist_add_check_24"-->
<!-- android:title="测评结果" />-->
<!-- <item-->
<!-- android:id="@+id/personal_center_menu_layer_manager"-->
<!-- android:icon="@drawable/ic_baseline_layers_24"-->
<!-- android:title="图层管理" />-->
<item
android:id="@+id/personal_center_menu_open_auto_location"
android:icon="@drawable/baseline_person_24"
@@ -68,6 +56,18 @@
android:visible="true"
android:title="关闭自动定位" />
<item
android:id="@+id/personal_center_menu_open_all_layer"
android:icon="@drawable/baseline_person_24"
android:visible="true"
android:title="开启全部图层" />
<item
android:id="@+id/personal_center_menu_close_hide_layer"
android:icon="@drawable/baseline_person_24"
android:visible="true"
android:title="关闭不渲染图层" />
<item
android:id="@+id/personal_center_menu_test"
android:icon="@drawable/baseline_person_24"