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