diff --git a/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt b/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt index ad64e48f..b00471db 100644 --- a/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt @@ -39,6 +39,7 @@ class RealmOperateHelper() { * */ @RequiresApi(Build.VERSION_CODES.N) suspend fun queryLink( + realm: Realm, point: GeoPoint, buffer: Double = DEFAULT_BUFFER, bufferType: BUFFER_TYPE = DEFAULT_BUFFER_TYPE, @@ -63,9 +64,9 @@ class RealmOperateHelper() { val yStart = tileYSet.stream().min(Comparator.naturalOrder()).orElse(null) val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null) // 查询realm中对应tile号的数据 - val realm = getSelectTaskRealmInstance() +// val realm = getSelectTaskRealmInstance() val realmList = - getSelectTaskRealmTools(RenderEntity::class.java, false) + getSelectTaskRealmTools(realm, RenderEntity::class.java, false) .equalTo("table", DataCodeEnum.OMDB_LINK_DIRECT.name) .greaterThanOrEqualTo("tileX", xStart) .lessThanOrEqualTo("tileX", xEnd) @@ -74,7 +75,7 @@ class RealmOperateHelper() { .findAll() // 将获取到的数据和查询的polygon做相交,只返回相交的数据 val dataList = realm.copyFromRealm(realmList) - realm.close() +// realm.close() val queryResult = dataList?.stream()?.filter { polygon.intersects(it.wkt) @@ -132,7 +133,7 @@ class RealmOperateHelper() { val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null) // 查询realm中对应tile号的数据 val realm = getSelectTaskRealmInstance() - val realmList = getSelectTaskRealmTools(RenderEntity::class.java, true) + val realmList = getSelectTaskRealmTools(realm, RenderEntity::class.java, true) .equalTo("table", table) .greaterThanOrEqualTo("tileX", xStart) .lessThanOrEqualTo("tileX", xEnd) @@ -228,12 +229,14 @@ class RealmOperateHelper() { return qsRecordBean } - suspend fun queryLinkToMutableRenderEntityList(linkPid: String): MutableList? { + suspend fun queryLinkToMutableRenderEntityList( + realm: Realm, + linkPid: String + ): MutableList? { val resultList = mutableListOf() +// val realm = getSelectTaskRealmInstance() - val realm = getSelectTaskRealmInstance() - - val realmR = getSelectTaskRealmTools(RenderEntity::class.java, true) + val realmR = getSelectTaskRealmTools(realm, RenderEntity::class.java, true) .equalTo("properties['${LinkTable.linkPid}']", linkPid).findAll() val dataList = realm.copyFromRealm(realmR) @@ -242,7 +245,7 @@ class RealmOperateHelper() { resultList.add(it) } - realm.close() +// realm.close() return resultList } @@ -280,7 +283,7 @@ class RealmOperateHelper() { val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null) val realm = getSelectTaskRealmInstance() var realmList = mutableListOf() - val realmQuery = getSelectTaskRealmTools(RenderEntity::class.java, false) + val realmQuery = getSelectTaskRealmTools(realm, RenderEntity::class.java, false) .greaterThanOrEqualTo("tileX", xStart) .lessThanOrEqualTo("tileX", xEnd) .greaterThanOrEqualTo("tileY", yStart) @@ -299,10 +302,12 @@ class RealmOperateHelper() { } // 将获取到的数据和查询的polygon做相交,只返回相交的数据 val queryResult = realmList?.stream()?.filter { - if(Constant.MapCatchLine){ - polygon.intersects(it.wkt) && it.wkt?.geometryType?.uppercase().equals("LINESTRING")||it.wkt?.geometryType?.uppercase().equals("POLYGON") - }else{ - polygon.intersects(it.wkt) && it.wkt?.geometryType?.uppercase().equals("POINT")||it.wkt?.geometryType?.uppercase().equals("POLYGON") + if (Constant.MapCatchLine) { + polygon.intersects(it.wkt) && it.wkt?.geometryType?.uppercase() + .equals("LINESTRING") || it.wkt?.geometryType?.uppercase().equals("POLYGON") + } else { + polygon.intersects(it.wkt) && it.wkt?.geometryType?.uppercase() + .equals("POINT") || it.wkt?.geometryType?.uppercase().equals("POLYGON") } }?.toList() queryResult?.let { @@ -323,15 +328,13 @@ class RealmOperateHelper() { * @param bufferType 点位外扩距离的单位: 米-Meter,像素-PIXEL * @param sort 是否需要排序 * */ - suspend fun queryLinkByLinkPid(linkPid: String): MutableList { + suspend fun queryLinkByLinkPid(realm: Realm,linkPid: String): MutableList { val result = mutableListOf() - val realm = getSelectTaskRealmInstance() - val realmList = getSelectTaskRealmTools(RenderEntity::class.java, false) + val realmList = getSelectTaskRealmTools(realm, RenderEntity::class.java, false) .notEqualTo("table", DataCodeEnum.OMDB_RD_LINK.name) .equalTo("properties['${LinkTable.linkPid}']", linkPid) .findAll() result.addAll(realm.copyFromRealm(realmList)) - realm.close() return result } @@ -426,19 +429,20 @@ class RealmOperateHelper() { fun getSelectTaskRealmTools( + realm: Realm, clazz: Class, enableSql: Boolean ): RealmQuery { - var realmQuery = getSelectTaskRealmInstance().where(clazz) + val realmQuery = realm.where(clazz) if (MapParamUtils.getDataLayerEnum() != null) { if (enableSql) { var sql = " enable${MapParamUtils.getDataLayerEnum().sql}" - getSelectTaskRealmInstance().where(clazz).rawPredicate(sql) + realm.where(clazz).rawPredicate(sql) } } - if(clazz.name==RenderEntity::class.jvmName){ + if (clazz.name == RenderEntity::class.jvmName) { // 筛选不显示的数据 if (com.navinfo.collect.library.system.Constant.HAD_LAYER_INVISIABLE_ARRAY != null && com.navinfo.collect.library.system.Constant.HAD_LAYER_INVISIABLE_ARRAY.size > 0) { realmQuery.beginGroup() diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt index 9eb1a23e..13195a8a 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt @@ -50,17 +50,11 @@ import io.realm.Realm import io.realm.RealmConfiguration import io.realm.RealmSet import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.delay -import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.flow.flow import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.withContext -import org.locationtech.jts.geom.Envelope import org.locationtech.jts.geom.Geometry -import org.locationtech.jts.geom.LineString -import org.locationtech.spatial4j.shape.Rectangle import org.oscim.core.GeoPoint import org.oscim.core.MapPosition import org.oscim.map.Map @@ -637,7 +631,7 @@ class MainViewModel @Inject constructor( private suspend fun captureItem(point: GeoPoint) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { var buffer = 3.2 - if(mapController.mMapView.mapLevel>=18){ + if (mapController.mMapView.mapLevel >= 18) { buffer = 2.0 } val itemList = realmOperateHelper.queryElement( @@ -677,9 +671,9 @@ class MainViewModel @Inject constructor( val topSignList = mutableListOf() mapController.lineHandler.linksLayer.clear() if (linkIdCache != route.linkId) { - + val realm = realmOperateHelper.getSelectTaskRealmInstance() mapController.lineHandler.showLine(route.pointList) - var elementList = realmOperateHelper.queryLinkByLinkPid(route.linkId) + val elementList = realmOperateHelper.queryLinkByLinkPid(realm, route.linkId) for (element in elementList) { when (element.code) { @@ -749,6 +743,7 @@ class MainViewModel @Inject constructor( speakMode?.speakText(speechText) } linkIdCache = route.linkId ?: "" + realm.close() } } } catch (e: Exception) { @@ -769,8 +764,8 @@ class MainViewModel @Inject constructor( captureLinkState = true if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - - val linkList = realmOperateHelper.queryLink(point = point) + val realm = realmOperateHelper.getSelectTaskRealmInstance() + val linkList = realmOperateHelper.queryLink(realm, point = point) var hisRoadName = false @@ -807,7 +802,8 @@ class MainViewModel @Inject constructor( val newLineString = GeometryTools.createLineString(linePoints) linkId?.let { - var elementList = realmOperateHelper.queryLinkByLinkPid(it) + val elementList = realmOperateHelper.queryLinkByLinkPid(realm, it) + Log.e("jingo", "捕捉到数据 ${elementList.size} 个") for (element in elementList) { if (element.code == DataCodeEnum.OMDB_LINK_NAME.code) { hisRoadName = true @@ -824,7 +820,10 @@ class MainViewModel @Inject constructor( newLineString, element ) -// Log.e("jingo", "捕捉到的数据code ${element.code}") + Log.e( + "jingo", + "捕捉到的数据code ${DataCodeEnum.findTableNameByCode(element.code)}" + ) when (element.code) { DataCodeEnum.OMDB_MULTI_DIGITIZED.code,//上下线分离 DataCodeEnum.OMDB_CON_ACCESS.code,//全封闭 @@ -887,10 +886,10 @@ class MainViewModel @Inject constructor( } - val realm = realmOperateHelper.getSelectTaskRealmInstance() +// val realm = realmOperateHelper.getSelectTaskRealmInstance() val entityList = realmOperateHelper.getSelectTaskRealmTools( - RenderEntity::class.java, true + realm, RenderEntity::class.java, true ).and().equalTo("table", DataCodeEnum.OMDB_RESTRICTION.name).and() .equalTo( "properties['linkIn']", it @@ -901,7 +900,7 @@ class MainViewModel @Inject constructor( val outLink = outList[i].properties["linkOut"] val linkOutEntity = realmOperateHelper.getSelectTaskRealmTools( - RenderEntity::class.java, + realm, RenderEntity::class.java, true ) .equalTo("table", DataCodeEnum.OMDB_RD_LINK_KIND.name) @@ -919,8 +918,8 @@ class MainViewModel @Inject constructor( mapController.lineHandler.linksLayer.addLine( link.geometry, Color.BLUE ) - realm.close() } + } liveDataTopSignList.postValue(topSignList.distinctBy { it.name } @@ -941,6 +940,7 @@ class MainViewModel @Inject constructor( if (!hisRoadName) { liveDataRoadName.postValue(null) } + realm.close() } } catch (e: Exception) { diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt index c084c50a..260884fb 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt @@ -218,7 +218,7 @@ class EvaluationResultViewModel @Inject constructor( } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { liveDataQsRecordBean.value?.let { - + val realm = realmOperateHelper.getSelectTaskRealmInstance() val taskLink = realmOperateHelper.captureTaskLink(point) if (taskLink != null) { @@ -226,7 +226,7 @@ class EvaluationResultViewModel @Inject constructor( mapController.lineHandler.showLine(taskLink.geometry) return } else { - val linkList = realmOperateHelper.queryLink(point = point) + val linkList = realmOperateHelper.queryLink(realm,point = point) if (linkList.isNotEmpty()) { it.linkId = linkList[0].properties[LinkTable.linkPid] ?: "" mapController.lineHandler.showLine(linkList[0].geometry) @@ -235,6 +235,7 @@ class EvaluationResultViewModel @Inject constructor( } it.linkId = "" mapController.lineHandler.removeLine() + realm.close() } } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterViewModel.kt index 25138031..1c8c0a26 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterViewModel.kt @@ -275,7 +275,7 @@ class PersonalCenterViewModel @Inject constructor( liveDataMessage.postValue("元数据表导入成功") roomAppDatabase.getScRootCauseAnalysisDao().insertOrUpdateList(list2) } - if(list3.isNotEmpty()){ + if (list3.isNotEmpty()) { liveDataMessage.postValue("标牌对照表导入成功") roomAppDatabase.getScWarningCodeDao().insertList(list3) } @@ -295,7 +295,9 @@ class PersonalCenterViewModel @Inject constructor( fun readRealmData() { viewModelScope.launch(Dispatchers.IO) { // val result = realmOperateHelper.queryLink(GeometryTools.createPoint(115.685817,28.62759)) - val result = realmOperateHelper.queryLinkByLinkPid("84206617008217069") + val realm = realmOperateHelper.getSelectTaskRealmInstance() + val result = realmOperateHelper.queryLinkByLinkPid(realm, "84206617008217069") + realm.close() Log.d("xiaoyan", result.toString()) } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskFragment.kt index 08a0ddb7..34bf24f0 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskFragment.kt @@ -76,6 +76,11 @@ class TaskFragment : BaseFragment() { binding.taskAddLink.isSelected = it } + viewModel.liveDataAddLinkDialog.observe(viewLifecycleOwner){ + viewModel.addTaskLink(requireContext(),it) + } + + //注意:使用滑动菜单不能开启滑动删除,否则只有滑动删除没有滑动菜单 val mSwipeMenuCreator = SwipeMenuCreator { _, rightMenu, _ -> //添加菜单自动添加至尾部 @@ -110,6 +115,7 @@ class TaskFragment : BaseFragment() { viewModel.liveDataTaskLinks.observe(viewLifecycleOwner) { adapter.resetSelect() adapter.refreshData(it) +// adapter.setSelectTag(it.last().linkPid) } viewModel.getTaskList(requireContext()) binding.taskSearch.addTextChangedListener(object : TextWatcher { diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListAdapter.kt index fc2024b3..5a8e1e91 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListAdapter.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListAdapter.kt @@ -128,21 +128,29 @@ class TaskListAdapter( holder.addObserver(object : OnLifecycleStateListener { override fun onState(tag: String, state: Lifecycle.State) { when (state) { - Lifecycle.State.STARTED -> + Lifecycle.State.STARTED -> { + uploadManager.observer( + taskBean.id, + holder, + UploadObserver(taskBean.id, binding) + ) downloadManager.observer( taskBean.id, holder, DownloadObserver(taskBean.id, holder) ) - Lifecycle.State.DESTROYED -> + } + Lifecycle.State.DESTROYED -> { downloadManager.removeObserver(tag.toInt()) + uploadManager.removeObserver(tag.toInt()) + } else -> {} } } }) downloadManager.addTask(taskBean) uploadManager.addTask(taskBean) - uploadManager.observer(taskBean.id, holder, UploadObserver(taskBean.id, binding)) +// uploadManager.observer(taskBean.id, holder, UploadObserver(taskBean.id, binding)) if (taskBean.status == FileDownloadStatus.NONE) { binding.taskDownloadBtn.setBackgroundColor(Color.WHITE) binding.taskDownloadBtn.setTextColor(Color.parseColor("#888FB3")) @@ -187,7 +195,6 @@ class TaskListAdapter( } } - } @@ -226,8 +233,8 @@ class TaskListAdapter( binding.taskUploadBtn.stopAnimator() binding.taskUploadBtn.setText("重新同步") binding.taskUploadBtn.setProgress(100) - if(!TextUtils.isEmpty(taskBean.errMsg)){ - Toast.makeText(binding.root.context,taskBean.errMsg,Toast.LENGTH_LONG).show() + if (!TextUtils.isEmpty(taskBean.errMsg)) { + Toast.makeText(binding.root.context, taskBean.errMsg, Toast.LENGTH_LONG).show() } } @@ -357,7 +364,7 @@ class TaskListAdapter( refreshData(list) } - fun getSelectTaskPosition():Int{ + fun getSelectTaskPosition(): Int { return selectPosition } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt index 5b30d286..b019f26f 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt @@ -88,7 +88,12 @@ class TaskViewModel @Inject constructor( /** * 是否开启了道路选择 */ - var liveDataSelectNewLink = MutableLiveData(false) + val liveDataSelectNewLink = MutableLiveData(false) + + /** + * 选中link + */ + val liveDataAddLinkDialog = MutableLiveData() init { sharedPreferences.registerOnSharedPreferenceChangeListener(this) @@ -98,10 +103,11 @@ class TaskViewModel @Inject constructor( if (tag == TAG) { if (liveDataSelectNewLink.value == true) { viewModelScope.launch(Dispatchers.Default) { + val realm = realmOperateHelper.getSelectTaskRealmInstance() if (currentSelectTaskBean == null) { liveDataToastMessage.postValue("还没有开启任何任务") } else { - val links = realmOperateHelper.queryLink( + val links = realmOperateHelper.queryLink(realm, point = point, ) if (links.isNotEmpty()) { @@ -111,43 +117,15 @@ class TaskViewModel @Inject constructor( return@launch } } - val hadLinkDvoBean = HadLinkDvoBean( - taskId = currentSelectTaskBean!!.id, - linkPid = l.properties["linkPid"]!!, - geometry = l.geometry, - linkStatus = 2 - ) - currentSelectTaskBean!!.hadLinkDvoList.add( - hadLinkDvoBean - ) - val realm = Realm.getDefaultInstance() - realm.executeTransaction { r -> - r.copyToRealmOrUpdate(hadLinkDvoBean) - r.copyToRealmOrUpdate(currentSelectTaskBean!!) - } - //根据Link数据查询对应数据上要素,对要素进行显示重置 - l.properties["linkPid"]?.let { - realmOperateHelper.queryLinkToMutableRenderEntityList(it) - ?.forEach { renderEntity -> - if (renderEntity.enable != 1) { - renderEntity.enable = 1 - realm.executeTransaction { r -> - r.copyToRealmOrUpdate(renderEntity) - } - } - } - } - liveDataTaskLinks.postValue(currentSelectTaskBean!!.hadLinkDvoList) - mapController.lineHandler.addTaskLink(hadLinkDvoBean) - mapController.layerManagerHandler.updateOMDBVectorTileLayer() - mapController.mMapView.vtmMap.updateMap(true) - realm.close() + liveDataAddLinkDialog.postValue(l) } } + realm.close() } } else { viewModelScope.launch(Dispatchers.IO) { - val links = realmOperateHelper.queryLink( + val realm = realmOperateHelper.getSelectTaskRealmInstance() + val links = realmOperateHelper.queryLink(realm, point = point, ) if (links.isNotEmpty()) { @@ -160,6 +138,7 @@ class TaskViewModel @Inject constructor( } } } + realm.close() } } } @@ -282,7 +261,7 @@ class TaskViewModel @Inject constructor( * 设置当前选择的任务,并高亮当前任务的所有link */ - fun setSelectTaskBean( taskBean: TaskBean) { + fun setSelectTaskBean(taskBean: TaskBean) { sharedPreferences.edit().putInt(Constant.SELECT_TASK_ID, taskBean.id).apply() @@ -291,15 +270,17 @@ class TaskViewModel @Inject constructor( liveDataTaskLinks.value = taskBean.hadLinkDvoList showTaskLinks(taskBean) MapParamUtils.setTaskId(taskBean.id) - Constant.currentSelectTaskFolder = File(Constant.USER_DATA_PATH +"/${taskBean.id}") - Constant.currentSelectTaskConfig = RealmConfiguration.Builder().directory(Constant.currentSelectTaskFolder).name("OMQS.realm").encryptionKey(Constant.PASSWORD).allowQueriesOnUiThread(true).schemaVersion(2).build() + Constant.currentSelectTaskFolder = File(Constant.USER_DATA_PATH + "/${taskBean.id}") + Constant.currentSelectTaskConfig = + RealmConfiguration.Builder().directory(Constant.currentSelectTaskFolder) + .name("OMQS.realm").encryptionKey(Constant.PASSWORD).allowQueriesOnUiThread(true) + .schemaVersion(2).build() MapParamUtils.setTaskConfig(Constant.currentSelectTaskConfig) mapController.layerManagerHandler.updateOMDBVectorTileLayer() mapController.mMapView.updateMap(true) } - private fun showTaskLinks(taskBean: TaskBean) { mapController.lineHandler.removeAllTaskLine() @@ -494,17 +475,17 @@ class TaskViewModel @Inject constructor( realm.where(QsRecordBean::class.java).equalTo("linkId", hadLinkDvoBean.linkPid) .and().equalTo("taskId", hadLinkDvoBean.taskId).findAll() if (objects.isEmpty() && hadLinkDvoBean.reason.isEmpty()) { - if(hadLinkDvoBean.linkStatus==3){ + if (hadLinkDvoBean.linkStatus == 3) { result = 1 realm.close() return@forEach - }else{ + } else { result = 2 } } } realm.close() - if(result==1){ + if (result == 1) { liveDataTaskUpload.postValue(map) withContext(Dispatchers.Main) { val mDialog = FirstDialog(context) @@ -518,7 +499,7 @@ class TaskViewModel @Inject constructor( mDialog.setCancelVisibility(View.GONE) mDialog.show() } - }else if(result==2){ + } else if (result == 2) { liveDataTaskUpload.postValue(map) withContext(Dispatchers.Main) { val mDialog = FirstDialog(context) @@ -536,7 +517,7 @@ class TaskViewModel @Inject constructor( ) { _, _ -> mDialog.dismiss() } mDialog.show() } - }else{ + } else { map[taskBean] = true liveDataTaskUpload.postValue(map) } @@ -559,69 +540,62 @@ class TaskViewModel @Inject constructor( */ fun setSelectLink(selected: Boolean) { liveDataSelectNewLink.value = selected -// //开始捕捉 -// if (selected) { -// mapController.mMapView.addOnNIMapClickListener(TAG, object : OnGeoPointClickListener { -// override fun onMapClick(tag: String, point: GeoPoint) { -// if (tag == TAG) { -// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { -// viewModelScope.launch(Dispatchers.Default) { -// if (currentSelectTaskBean == null) { -// liveDataToastMessage.postValue("还没有开启任何任务") -// } else { -// val links = realmOperateHelper.queryLink( -// point = point, -// ) -// if (links.isNotEmpty()) { -// val l = links[0] -// for (link in currentSelectTaskBean!!.hadLinkDvoList) { -// if (link.linkPid == l.properties["linkPid"]) { -// return@launch -// } -// } -// val hadLinkDvoBean = HadLinkDvoBean( -// taskId = currentSelectTaskBean!!.id, -// linkPid = l.properties["linkPid"]!!, -// geometry = l.geometry, -// linkStatus = 2 -// ) -// currentSelectTaskBean!!.hadLinkDvoList.add( -// hadLinkDvoBean -// ) -// val realm = Realm.getDefaultInstance() -// realm.executeTransaction { r -> -// r.copyToRealmOrUpdate(hadLinkDvoBean) -// r.copyToRealmOrUpdate(currentSelectTaskBean!!) -// } -// //根据Link数据查询对应数据上要素,对要素进行显示重置 -// l.properties["linkPid"]?.let { -// realmOperateHelper.queryLinkToMutableRenderEntityList(it) -// ?.forEach { renderEntity -> -// if (renderEntity.enable != 1) { -// renderEntity.enable = 1 -// realm.executeTransaction { r -> -// r.copyToRealmOrUpdate(renderEntity) -// } -// } -// } -// } -// liveDataTaskLinks.postValue(currentSelectTaskBean!!.hadLinkDvoList) -// mapController.lineHandler.addTaskLink(hadLinkDvoBean) -// mapController.layerManagerHandler.updateOMDBVectorTileLayer() -// mapController.mMapView.vtmMap.updateMap(true) -// } -// } -// } -// } -// } -// } -// }) -// } else { -// mapController.mMapView.removeOnNIMapClickListener(TAG) -// mapController.lineHandler.removeLine() -// } } + /** + * 添加link + */ + fun addTaskLink(context: Context, data: RenderEntity) { + val mDialog = FirstDialog(context) + mDialog.setTitle("提示") + mDialog.setMessage("是否添加当前link") + mDialog.setPositiveButton( + "确定" + ) { dialog, _ -> + dialog.dismiss() + viewModelScope.launch(Dispatchers.IO) { + val hadLinkDvoBean = HadLinkDvoBean( + taskId = currentSelectTaskBean!!.id, + linkPid = data.properties["linkPid"]!!, + geometry = data.geometry, + linkStatus = 2 + ) + currentSelectTaskBean!!.hadLinkDvoList.add( + hadLinkDvoBean + ) + val realm = Realm.getDefaultInstance() + realm.executeTransaction { r -> + r.copyToRealmOrUpdate(hadLinkDvoBean) + r.copyToRealmOrUpdate(currentSelectTaskBean!!) + } + //根据Link数据查询对应数据上要素,对要素进行显示重置 + data.properties["linkPid"]?.let { + realmOperateHelper.queryLinkToMutableRenderEntityList(realm,it) + ?.forEach { renderEntity -> + if (renderEntity.enable != 1) { + renderEntity.enable = 1 + realm.executeTransaction { r -> + r.copyToRealmOrUpdate(renderEntity) + } + } + } + } + liveDataTaskLinks.postValue(currentSelectTaskBean!!.hadLinkDvoList) + mapController.lineHandler.addTaskLink(hadLinkDvoBean) + mapController.layerManagerHandler.updateOMDBVectorTileLayer() + mapController.mMapView.vtmMap.updateMap(true) + realm.close() + } + } + mDialog.setNegativeButton( + "取消" + ) { _, _ -> + mDialog.dismiss() + } + mDialog.show() + } + + /** * 删除评测link */ @@ -651,7 +625,7 @@ class TaskViewModel @Inject constructor( //重置数据为隐藏 if (hadLinkDvoBean.linkStatus == 2) { - realmOperateHelper.queryLinkToMutableRenderEntityList(hadLinkDvoBean.linkPid) + realmOperateHelper.queryLinkToMutableRenderEntityList(realm,hadLinkDvoBean.linkPid) ?.forEach { renderEntity -> if (renderEntity.enable == 1) { renderEntity.enable = 0 diff --git a/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt b/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt index 1aefbd52..4d45c49b 100644 --- a/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt +++ b/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt @@ -707,6 +707,28 @@ class SignUtil { ) ) } + DataCodeEnum.OMDB_FILL_AREA.code->{ + list.add( + TwoItemAdapterItem( + title = "对象号码", + text = "${data.properties["objectPid"]}" + ) + ) + list.add( + TwoItemAdapterItem( + title = "符合高精", text = when (data.properties["compliant"]) { + "0" -> "否" + "1" -> "是" + else -> "" + } + ) + ) + list.add( + TwoItemAdapterItem( + title = "关联车道组", text = "${data.properties["lgList"]}" + ) + ) + } } adapter.data = list return adapter