fix: 合并代码
This commit is contained in:
commit
dbf4108979
@ -154,6 +154,7 @@
|
|||||||
"code": 2201,
|
"code": 2201,
|
||||||
"name": "桥",
|
"name": "桥",
|
||||||
"catch":true,
|
"catch":true,
|
||||||
|
"existSubCode": true,
|
||||||
"zoomMin": 15,
|
"zoomMin": 15,
|
||||||
"zoomMax": 20,
|
"zoomMax": 20,
|
||||||
"transformer": [
|
"transformer": [
|
||||||
|
|||||||
@ -23,6 +23,9 @@ data class EvaluationInfo(
|
|||||||
@SerializedName("markGeometry")
|
@SerializedName("markGeometry")
|
||||||
val markGeometry: String = "",//MARK_几何坐标
|
val markGeometry: String = "",//MARK_几何坐标
|
||||||
|
|
||||||
|
@SerializedName("linkGeometry")
|
||||||
|
val linkGeometry: String = "",//link_几何坐标
|
||||||
|
|
||||||
@SerializedName("featureName")
|
@SerializedName("featureName")
|
||||||
val featureName: String = "",//问题类型
|
val featureName: String = "",//问题类型
|
||||||
|
|
||||||
@ -50,8 +53,8 @@ data class EvaluationInfo(
|
|||||||
@SerializedName("evaluationWay")
|
@SerializedName("evaluationWay")
|
||||||
val evaluationWay: Int = 2,//测评方式 1生产测评 2现场测评 服务字段定义为Integer,使用包装类,对应无值情况为空
|
val evaluationWay: Int = 2,//测评方式 1生产测评 2现场测评 服务字段定义为Integer,使用包装类,对应无值情况为空
|
||||||
|
|
||||||
@SerializedName("roadClassfcation")
|
@SerializedName("roadClassifcation")
|
||||||
val roadClassfcation: Int = 1,//道路种别
|
val roadClassifcation: Int = 1,//道路种别
|
||||||
|
|
||||||
@SerializedName("roadFunctionGrade")
|
@SerializedName("roadFunctionGrade")
|
||||||
val roadFunctionGrade: Int = 1,//道路功能等级
|
val roadFunctionGrade: Int = 1,//道路功能等级
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.navinfo.omqs.db
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.database.Cursor.*
|
import android.database.Cursor.*
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
import android.provider.ContactsContract.Data
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import com.blankj.utilcode.util.FileIOUtils
|
import com.blankj.utilcode.util.FileIOUtils
|
||||||
@ -234,7 +235,7 @@ class ImportOMDBHelper @AssistedInject constructor(
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
elementIndex += 1
|
elementIndex += 1
|
||||||
dataIndex +=1
|
dataIndex += 1
|
||||||
Log.d("ImportOMDBHelper", "解析第:${index + 1}行")
|
Log.d("ImportOMDBHelper", "解析第:${index + 1}行")
|
||||||
val map = gson.fromJson<Map<String, Any>>(
|
val map = gson.fromJson<Map<String, Any>>(
|
||||||
line,
|
line,
|
||||||
@ -313,12 +314,13 @@ class ImportOMDBHelper @AssistedInject constructor(
|
|||||||
Log.d("ImportOMDBHelper", "解析===2处理name")
|
Log.d("ImportOMDBHelper", "解析===2处理name")
|
||||||
Log.d("ImportOMDBHelper", "解析===1处理杆状物")
|
Log.d("ImportOMDBHelper", "解析===1处理杆状物")
|
||||||
|
|
||||||
if(currentConfig.filterData){
|
if (currentConfig.filterData) {
|
||||||
when (renderEntity.code.toInt()) {
|
when (renderEntity.code.toInt()) {
|
||||||
|
|
||||||
DataCodeEnum.OMDB_POLE.code.toInt() -> {
|
DataCodeEnum.OMDB_POLE.code.toInt() -> {
|
||||||
//过滤树类型的杆状物,无需导入到数据库中
|
//过滤树类型的杆状物,无需导入到数据库中
|
||||||
val poleType = renderEntity.properties["poleType"]
|
val poleType =
|
||||||
|
renderEntity.properties["poleType"]
|
||||||
if (poleType != null && poleType.toInt() == 2) {
|
if (poleType != null && poleType.toInt() == 2) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -346,7 +348,7 @@ class ImportOMDBHelper @AssistedInject constructor(
|
|||||||
renderEntity.properties["boundaryType"]
|
renderEntity.properties["boundaryType"]
|
||||||
if (boundaryType != null) {
|
if (boundaryType != null) {
|
||||||
when (boundaryType.toInt()) {
|
when (boundaryType.toInt()) {
|
||||||
0, 1,3,4, 5, 7, 9 -> {
|
0, 1, 3, 4, 5, 7, 9 -> {
|
||||||
renderEntity.enable = 0
|
renderEntity.enable = 0
|
||||||
Log.e(
|
Log.e(
|
||||||
"qj",
|
"qj",
|
||||||
@ -380,8 +382,10 @@ class ImportOMDBHelper @AssistedInject constructor(
|
|||||||
"linkOut"
|
"linkOut"
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
var linkIn = renderEntity.properties["linkIn"]
|
var linkIn =
|
||||||
var linkOut = renderEntity.properties["linkOut"]
|
renderEntity.properties["linkIn"]
|
||||||
|
var linkOut =
|
||||||
|
renderEntity.properties["linkOut"]
|
||||||
if (linkIn != null && linkOut != null) {
|
if (linkIn != null && linkOut != null) {
|
||||||
var checkMsg = "$linkIn$linkOut"
|
var checkMsg = "$linkIn$linkOut"
|
||||||
if (resHashMap.containsKey(checkMsg)) {
|
if (resHashMap.containsKey(checkMsg)) {
|
||||||
@ -529,7 +533,7 @@ class ImportOMDBHelper @AssistedInject constructor(
|
|||||||
Log.d("ImportOMDBHelper", "解析===1子code处理")
|
Log.d("ImportOMDBHelper", "解析===1子code处理")
|
||||||
//对code编码需要特殊处理 存在多个属性值时,渲染优先级:SA>PA,存在多个属性值时,渲染优先级:FRONTAGE>MAIN_SIDE_A CCESS
|
//对code编码需要特殊处理 存在多个属性值时,渲染优先级:SA>PA,存在多个属性值时,渲染优先级:FRONTAGE>MAIN_SIDE_A CCESS
|
||||||
|
|
||||||
if(currentConfig.existSubCode){
|
if (currentConfig.existSubCode) {
|
||||||
when (renderEntity.code.toInt()) {
|
when (renderEntity.code.toInt()) {
|
||||||
DataCodeEnum.OMDB_LINK_ATTRIBUTE.code.toInt() -> {
|
DataCodeEnum.OMDB_LINK_ATTRIBUTE.code.toInt() -> {
|
||||||
|
|
||||||
@ -580,6 +584,17 @@ class ImportOMDBHelper @AssistedInject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//桥
|
||||||
|
DataCodeEnum.OMDB_BRIDGE.code.toInt() -> {
|
||||||
|
when (renderEntity.properties["bridgeType"]) {
|
||||||
|
"1" -> renderEntity.code =
|
||||||
|
DataCodeEnum.OMDB_BRIDGE_1.code
|
||||||
|
"2" -> renderEntity.code =
|
||||||
|
DataCodeEnum.OMDB_BRIDGE_2.code
|
||||||
|
// "3" -> renderEntity.code = DataCodeEnum.OMDB_BRIDGE_3.code
|
||||||
|
else -> DataCodeEnum.OMDB_BRIDGE.code
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DataCodeEnum.OMDB_RAMP.code.toInt() -> {
|
DataCodeEnum.OMDB_RAMP.code.toInt() -> {
|
||||||
/*匝道*/
|
/*匝道*/
|
||||||
@ -694,7 +709,8 @@ class ImportOMDBHelper @AssistedInject constructor(
|
|||||||
|
|
||||||
if (renderEntity.table == DataCodeEnum.OMDB_NODE_FORM.name) {//特殊处理,因为code相同,使用表名判断
|
if (renderEntity.table == DataCodeEnum.OMDB_NODE_FORM.name) {//特殊处理,因为code相同,使用表名判断
|
||||||
//过滤不需要渲染的要素
|
//过滤不需要渲染的要素
|
||||||
var formOfWay = renderEntity.properties["formOfWay"]
|
var formOfWay =
|
||||||
|
renderEntity.properties["formOfWay"]
|
||||||
if (formOfWay != null && formOfWay.toInt() == 30) {
|
if (formOfWay != null && formOfWay.toInt() == 30) {
|
||||||
renderEntity.enable = 2
|
renderEntity.enable = 2
|
||||||
renderEntity.code =
|
renderEntity.code =
|
||||||
@ -758,7 +774,7 @@ class ImportOMDBHelper @AssistedInject constructor(
|
|||||||
)
|
)
|
||||||
elementIndex = 0
|
elementIndex = 0
|
||||||
tableImportTime = System.currentTimeMillis()
|
tableImportTime = System.currentTimeMillis()
|
||||||
if(insertIndex%20000==0){
|
if (insertIndex % 20000 == 0) {
|
||||||
Log.d(
|
Log.d(
|
||||||
"ImportOMDBHelper",
|
"ImportOMDBHelper",
|
||||||
"表解析===结束用时时间===事物开始"
|
"表解析===结束用时时间===事物开始"
|
||||||
@ -768,12 +784,16 @@ class ImportOMDBHelper @AssistedInject constructor(
|
|||||||
Log.d(
|
Log.d(
|
||||||
"ImportOMDBHelper",
|
"ImportOMDBHelper",
|
||||||
"表解析===结束用时时间===事物结束"
|
"表解析===结束用时时间===事物结束"
|
||||||
) }
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Realm.getInstance(currentInstallTaskConfig).commitTransaction()
|
Realm.getInstance(currentInstallTaskConfig).commitTransaction()
|
||||||
Realm.getInstance(currentInstallTaskConfig).close()
|
Realm.getInstance(currentInstallTaskConfig).close()
|
||||||
Log.d("ImportOMDBHelper", "表解析===结束用时时间${(System.currentTimeMillis() - dataImportTime)}===$dataIndex===插入$insertIndex")
|
Log.d(
|
||||||
|
"ImportOMDBHelper",
|
||||||
|
"表解析===结束用时时间${(System.currentTimeMillis() - dataImportTime)}===$dataIndex===插入$insertIndex"
|
||||||
|
)
|
||||||
Log.e("qj", "安装结束")
|
Log.e("qj", "安装结束")
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
if (Realm.getInstance(currentInstallTaskConfig).isInTransaction) {
|
if (Realm.getInstance(currentInstallTaskConfig).isInTransaction) {
|
||||||
|
|||||||
@ -166,6 +166,7 @@ class RealmOperateHelper() {
|
|||||||
|
|
||||||
suspend fun captureTaskLink(
|
suspend fun captureTaskLink(
|
||||||
point: GeoPoint,
|
point: GeoPoint,
|
||||||
|
taskId: Int,
|
||||||
buffer: Double = DEFAULT_BUFFER,
|
buffer: Double = DEFAULT_BUFFER,
|
||||||
bufferType: BUFFER_TYPE = DEFAULT_BUFFER_TYPE,
|
bufferType: BUFFER_TYPE = DEFAULT_BUFFER_TYPE,
|
||||||
): HadLinkDvoBean? {
|
): HadLinkDvoBean? {
|
||||||
@ -177,7 +178,7 @@ class RealmOperateHelper() {
|
|||||||
)
|
)
|
||||||
val realm = getRealmDefaultInstance()
|
val realm = getRealmDefaultInstance()
|
||||||
try {
|
try {
|
||||||
val realmList = getRealmTools(HadLinkDvoBean::class.java).findAll()
|
val realmList = realm.where(HadLinkDvoBean::class.java).equalTo("taskId", taskId).findAll()
|
||||||
var linkBean: HadLinkDvoBean? = null
|
var linkBean: HadLinkDvoBean? = null
|
||||||
var nearLast: Double = 99999.99
|
var nearLast: Double = 99999.99
|
||||||
for (link in realmList) {
|
for (link in realmList) {
|
||||||
@ -328,7 +329,7 @@ class RealmOperateHelper() {
|
|||||||
* @param bufferType 点位外扩距离的单位: 米-Meter,像素-PIXEL
|
* @param bufferType 点位外扩距离的单位: 米-Meter,像素-PIXEL
|
||||||
* @param sort 是否需要排序
|
* @param sort 是否需要排序
|
||||||
* */
|
* */
|
||||||
suspend fun queryLinkByLinkPid(realm: Realm,linkPid: String): MutableList<RenderEntity> {
|
suspend fun queryLinkByLinkPid(realm: Realm, linkPid: String): MutableList<RenderEntity> {
|
||||||
val result = mutableListOf<RenderEntity>()
|
val result = mutableListOf<RenderEntity>()
|
||||||
val realmList = getSelectTaskRealmTools(realm, RenderEntity::class.java, false)
|
val realmList = getSelectTaskRealmTools(realm, RenderEntity::class.java, false)
|
||||||
.notEqualTo("table", DataCodeEnum.OMDB_RD_LINK.name)
|
.notEqualTo("table", DataCodeEnum.OMDB_RD_LINK.name)
|
||||||
@ -415,16 +416,17 @@ class RealmOperateHelper() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getRealmDefaultInstance(): Realm {
|
fun getRealmDefaultInstance(): Realm {
|
||||||
|
val realm = Realm.getDefaultInstance()
|
||||||
if (isUpdate) {
|
if (isUpdate) {
|
||||||
Log.e("jingo", "数据库更新")
|
Log.e("jingo", "数据库更新")
|
||||||
if (Realm.getDefaultInstance().isInTransaction) {
|
if (realm.isInTransaction) {
|
||||||
Realm.getDefaultInstance().cancelTransaction()
|
realm.cancelTransaction()
|
||||||
Log.e("jingo", "数据库正在事物,需要退出当前事物")
|
Log.e("jingo", "数据库正在事物,需要退出当前事物")
|
||||||
}
|
}
|
||||||
Realm.getDefaultInstance().refresh()
|
realm.refresh()
|
||||||
isUpdate = false;
|
isUpdate = false;
|
||||||
}
|
}
|
||||||
return Realm.getDefaultInstance()
|
return realm
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -436,7 +438,7 @@ class RealmOperateHelper() {
|
|||||||
val realmQuery = realm.where(clazz)
|
val realmQuery = realm.where(clazz)
|
||||||
if (MapParamUtils.getDataLayerEnum() != null) {
|
if (MapParamUtils.getDataLayerEnum() != null) {
|
||||||
if (enableSql) {
|
if (enableSql) {
|
||||||
var sql =
|
val sql =
|
||||||
" enable${MapParamUtils.getDataLayerEnum().sql}"
|
" enable${MapParamUtils.getDataLayerEnum().sql}"
|
||||||
realm.where(clazz).rawPredicate(sql)
|
realm.where(clazz).rawPredicate(sql)
|
||||||
}
|
}
|
||||||
@ -456,16 +458,17 @@ class RealmOperateHelper() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getSelectTaskRealmInstance(): Realm {
|
fun getSelectTaskRealmInstance(): Realm {
|
||||||
|
val realm = Realm.getInstance(Constant.currentSelectTaskConfig)
|
||||||
if (isUpdate) {
|
if (isUpdate) {
|
||||||
Log.e("jingo", "数据库更新")
|
Log.e("jingo", "数据库更新")
|
||||||
if (Realm.getInstance(Constant.currentSelectTaskConfig).isInTransaction) {
|
if (realm.isInTransaction) {
|
||||||
Realm.getInstance(Constant.currentSelectTaskConfig).cancelTransaction()
|
realm.cancelTransaction()
|
||||||
Log.e("jingo", "数据库正在事物,需要退出当前事物")
|
Log.e("jingo", "数据库正在事物,需要退出当前事物")
|
||||||
}
|
}
|
||||||
Realm.getInstance(Constant.currentSelectTaskConfig).refresh()
|
realm.refresh()
|
||||||
isUpdate = false;
|
isUpdate = false;
|
||||||
}
|
}
|
||||||
return Realm.getInstance(Constant.currentSelectTaskConfig)
|
return realm
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateRealmDefaultInstance() {
|
fun updateRealmDefaultInstance() {
|
||||||
|
|||||||
@ -44,9 +44,10 @@ class ActivityModule {
|
|||||||
fun providesTaskListDownloadManager(
|
fun providesTaskListDownloadManager(
|
||||||
networkServiceAPI: RetrofitNetworkServiceAPI,
|
networkServiceAPI: RetrofitNetworkServiceAPI,
|
||||||
importFactory: ImportOMDBHiltFactory,
|
importFactory: ImportOMDBHiltFactory,
|
||||||
mapController: NIMapController
|
mapController: NIMapController,
|
||||||
|
realmOperateHelper: RealmOperateHelper,
|
||||||
): TaskDownloadManager =
|
): TaskDownloadManager =
|
||||||
TaskDownloadManager(importFactory, networkServiceAPI, mapController)
|
TaskDownloadManager(importFactory, networkServiceAPI, mapController, realmOperateHelper)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 注入任务下载
|
* 注入任务下载
|
||||||
@ -55,8 +56,9 @@ class ActivityModule {
|
|||||||
@Provides
|
@Provides
|
||||||
fun providesTaskListUploadManager(
|
fun providesTaskListUploadManager(
|
||||||
networkServiceAPI: RetrofitNetworkServiceAPI,
|
networkServiceAPI: RetrofitNetworkServiceAPI,
|
||||||
|
realmOperateHelper: RealmOperateHelper,
|
||||||
): TaskUploadManager =
|
): TaskUploadManager =
|
||||||
TaskUploadManager(networkServiceAPI)
|
TaskUploadManager(networkServiceAPI, realmOperateHelper)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 实验失败,这样创建,viewmodel不会在activity销毁的时候同时销毁
|
* 实验失败,这样创建,viewmodel不会在activity销毁的时候同时销毁
|
||||||
|
|||||||
@ -163,11 +163,11 @@ class GlobalModule {
|
|||||||
// return RealmCoroutineScope(context)
|
// return RealmCoroutineScope(context)
|
||||||
// }
|
// }
|
||||||
|
|
||||||
@Singleton
|
// @Singleton
|
||||||
@Provides
|
// @Provides
|
||||||
fun provideRealmDefaultInstance(): Realm {
|
// fun provideRealmDefaultInstance(): Realm {
|
||||||
return Realm.getDefaultInstance()
|
// return Realm.getDefaultInstance()
|
||||||
}
|
// }
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
@Provides
|
@Provides
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import androidx.lifecycle.LifecycleOwner
|
|||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
import com.navinfo.collect.library.map.NIMapController
|
import com.navinfo.collect.library.map.NIMapController
|
||||||
import com.navinfo.collect.library.data.entity.TaskBean
|
import com.navinfo.collect.library.data.entity.TaskBean
|
||||||
|
import com.navinfo.omqs.db.RealmOperateHelper
|
||||||
import com.navinfo.omqs.hilt.ImportOMDBHiltFactory
|
import com.navinfo.omqs.hilt.ImportOMDBHiltFactory
|
||||||
import com.navinfo.omqs.http.RetrofitNetworkServiceAPI
|
import com.navinfo.omqs.http.RetrofitNetworkServiceAPI
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
@ -18,7 +19,8 @@ import java.util.concurrent.ConcurrentHashMap
|
|||||||
class TaskDownloadManager constructor(
|
class TaskDownloadManager constructor(
|
||||||
val importFactory: ImportOMDBHiltFactory,
|
val importFactory: ImportOMDBHiltFactory,
|
||||||
val netApi: RetrofitNetworkServiceAPI,
|
val netApi: RetrofitNetworkServiceAPI,
|
||||||
val mapController: NIMapController
|
val mapController: NIMapController,
|
||||||
|
val realmOperateHelper: RealmOperateHelper,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
lateinit var context: Context
|
lateinit var context: Context
|
||||||
@ -111,7 +113,7 @@ class TaskDownloadManager constructor(
|
|||||||
|
|
||||||
fun addTask(taskBean: TaskBean) {
|
fun addTask(taskBean: TaskBean) {
|
||||||
if (!scopeMap.containsKey(taskBean.id)) {
|
if (!scopeMap.containsKey(taskBean.id)) {
|
||||||
scopeMap[taskBean.id] = TaskDownloadScope(this, taskBean)
|
scopeMap[taskBean.id] = TaskDownloadScope(this, realmOperateHelper, taskBean)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import com.navinfo.collect.library.data.entity.TaskBean
|
|||||||
import com.navinfo.collect.library.utils.MapParamUtils
|
import com.navinfo.collect.library.utils.MapParamUtils
|
||||||
import com.navinfo.omqs.Constant
|
import com.navinfo.omqs.Constant
|
||||||
import com.navinfo.omqs.db.ImportOMDBHelper
|
import com.navinfo.omqs.db.ImportOMDBHelper
|
||||||
|
import com.navinfo.omqs.db.RealmOperateHelper
|
||||||
import com.navinfo.omqs.tools.FileManager
|
import com.navinfo.omqs.tools.FileManager
|
||||||
import com.navinfo.omqs.tools.FileManager.Companion.FileDownloadStatus
|
import com.navinfo.omqs.tools.FileManager.Companion.FileDownloadStatus
|
||||||
import com.navinfo.omqs.util.DateTimeUtil
|
import com.navinfo.omqs.util.DateTimeUtil
|
||||||
@ -22,7 +23,8 @@ import java.io.RandomAccessFile
|
|||||||
|
|
||||||
class TaskDownloadScope(
|
class TaskDownloadScope(
|
||||||
private val downloadManager: TaskDownloadManager,
|
private val downloadManager: TaskDownloadManager,
|
||||||
val taskBean: TaskBean,
|
private val realmOperateHelper: RealmOperateHelper,
|
||||||
|
var taskBean: TaskBean,
|
||||||
) :
|
) :
|
||||||
CoroutineScope by CoroutineScope(Dispatchers.IO + CoroutineName("TaskMapDownLoad")) {
|
CoroutineScope by CoroutineScope(Dispatchers.IO + CoroutineName("TaskMapDownLoad")) {
|
||||||
|
|
||||||
@ -107,10 +109,22 @@ class TaskDownloadScope(
|
|||||||
taskBean.operationTime = DateTimeUtil.getNowDate().time
|
taskBean.operationTime = DateTimeUtil.getNowDate().time
|
||||||
downloadData.postValue(taskBean)
|
downloadData.postValue(taskBean)
|
||||||
if (status != FileDownloadStatus.LOADING && status != FileDownloadStatus.IMPORTING) {
|
if (status != FileDownloadStatus.LOADING && status != FileDownloadStatus.IMPORTING) {
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
realm.beginTransaction()
|
// Log.e("jingo", "数据下载更新状态 原${}")
|
||||||
realm.insertOrUpdate(taskBean)
|
realm.executeTransaction { r ->
|
||||||
realm.commitTransaction()
|
// realm.insertOrUpdate(taskBean)
|
||||||
|
val newTask =
|
||||||
|
realm.where(TaskBean::class.java).equalTo("id", taskBean.id).findFirst()
|
||||||
|
newTask?.let {
|
||||||
|
it.syncStatus = taskBean.syncStatus
|
||||||
|
it.status = taskBean.status
|
||||||
|
it.errMsg = taskBean.errMsg
|
||||||
|
//赋值时间,用于查询过滤
|
||||||
|
it.operationTime = taskBean.operationTime
|
||||||
|
r.copyToRealmOrUpdate(it)
|
||||||
|
taskBean = realm.copyFromRealm(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
realm.close()
|
realm.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -148,7 +162,7 @@ class TaskDownloadScope(
|
|||||||
Log.e("jingo", "数据安装结束")
|
Log.e("jingo", "数据安装结束")
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
//任务与当前一致,需要更新渲染图层
|
//任务与当前一致,需要更新渲染图层
|
||||||
if(MapParamUtils.getTaskId()==taskBean.id){
|
if (MapParamUtils.getTaskId() == taskBean.id) {
|
||||||
downloadManager.mapController.layerManagerHandler.updateOMDBVectorTileLayer()
|
downloadManager.mapController.layerManagerHandler.updateOMDBVectorTileLayer()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import android.content.Context
|
|||||||
import androidx.lifecycle.LifecycleOwner
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
import com.navinfo.collect.library.data.entity.TaskBean
|
import com.navinfo.collect.library.data.entity.TaskBean
|
||||||
|
import com.navinfo.omqs.db.RealmOperateHelper
|
||||||
import com.navinfo.omqs.http.RetrofitNetworkServiceAPI
|
import com.navinfo.omqs.http.RetrofitNetworkServiceAPI
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
|
|
||||||
@ -13,6 +14,7 @@ import java.util.concurrent.ConcurrentHashMap
|
|||||||
|
|
||||||
class TaskUploadManager constructor(
|
class TaskUploadManager constructor(
|
||||||
val netApi: RetrofitNetworkServiceAPI,
|
val netApi: RetrofitNetworkServiceAPI,
|
||||||
|
val realmOperateHelper: RealmOperateHelper,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
lateinit var context: Context
|
lateinit var context: Context
|
||||||
@ -84,7 +86,7 @@ class TaskUploadManager constructor(
|
|||||||
|
|
||||||
fun addTask(taskBean: TaskBean) {
|
fun addTask(taskBean: TaskBean) {
|
||||||
if (!scopeMap.containsKey(taskBean.id)) {
|
if (!scopeMap.containsKey(taskBean.id)) {
|
||||||
scopeMap[taskBean.id] = TaskUploadScope( this, taskBean)
|
scopeMap[taskBean.id] = TaskUploadScope(this, realmOperateHelper, taskBean)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,9 @@ import androidx.lifecycle.Observer
|
|||||||
import com.navinfo.collect.library.data.entity.QsRecordBean
|
import com.navinfo.collect.library.data.entity.QsRecordBean
|
||||||
import com.navinfo.omqs.bean.EvaluationInfo
|
import com.navinfo.omqs.bean.EvaluationInfo
|
||||||
import com.navinfo.collect.library.data.entity.TaskBean
|
import com.navinfo.collect.library.data.entity.TaskBean
|
||||||
|
import com.navinfo.collect.library.utils.GeometryTools
|
||||||
import com.navinfo.omqs.bean.SysUserBean
|
import com.navinfo.omqs.bean.SysUserBean
|
||||||
|
import com.navinfo.omqs.db.RealmOperateHelper
|
||||||
import com.navinfo.omqs.http.DefaultResponse
|
import com.navinfo.omqs.http.DefaultResponse
|
||||||
import com.navinfo.omqs.tools.FileManager.Companion.FileUploadStatus
|
import com.navinfo.omqs.tools.FileManager.Companion.FileUploadStatus
|
||||||
import com.navinfo.omqs.util.DateTimeUtil
|
import com.navinfo.omqs.util.DateTimeUtil
|
||||||
@ -21,7 +23,8 @@ import java.util.*
|
|||||||
|
|
||||||
class TaskUploadScope(
|
class TaskUploadScope(
|
||||||
private val uploadManager: TaskUploadManager,
|
private val uploadManager: TaskUploadManager,
|
||||||
val taskBean: TaskBean,
|
private val realmOperateHelper: RealmOperateHelper,
|
||||||
|
var taskBean: TaskBean,
|
||||||
) :
|
) :
|
||||||
CoroutineScope by CoroutineScope(Dispatchers.IO + CoroutineName("OfflineMapUpLoad")) {
|
CoroutineScope by CoroutineScope(Dispatchers.IO + CoroutineName("OfflineMapUpLoad")) {
|
||||||
|
|
||||||
@ -71,22 +74,35 @@ class TaskUploadScope(
|
|||||||
* @param status [OfflineMapCityBean.Status]
|
* @param status [OfflineMapCityBean.Status]
|
||||||
*/
|
*/
|
||||||
private fun change(status: Int, message: String = "") {
|
private fun change(status: Int, message: String = "") {
|
||||||
|
launch {
|
||||||
if (taskBean.syncStatus != status) {
|
if (taskBean.syncStatus != status) {
|
||||||
taskBean.syncStatus = status
|
taskBean.syncStatus = status
|
||||||
taskBean.errMsg = message
|
taskBean.errMsg = message
|
||||||
//赋值时间,用于查询过滤
|
//赋值时间,用于查询过滤
|
||||||
taskBean.operationTime = DateTimeUtil.getNowDate().time
|
taskBean.operationTime = DateTimeUtil.getNowDate().time
|
||||||
uploadData.postValue(taskBean)
|
|
||||||
//同步中不进行状态记录,只做界面变更显示
|
//同步中不进行状态记录,只做界面变更显示
|
||||||
if (status != FileUploadStatus.UPLOADING) {
|
if (status != FileUploadStatus.UPLOADING) {
|
||||||
launch {
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
val realm = Realm.getDefaultInstance()
|
Log.e(
|
||||||
realm.executeTransaction {
|
"jingo",
|
||||||
it.copyToRealmOrUpdate(taskBean)
|
"数据上传更新状态change status:${status} 任务link数量:${taskBean.hadLinkDvoList.size}"
|
||||||
|
)
|
||||||
|
realm.executeTransaction { r ->
|
||||||
|
val newTask =
|
||||||
|
realm.where(TaskBean::class.java).equalTo("id", taskBean.id).findFirst()
|
||||||
|
newTask?.let {
|
||||||
|
it.syncStatus = taskBean.syncStatus
|
||||||
|
it.errMsg = taskBean.errMsg
|
||||||
|
//赋值时间,用于查询过滤
|
||||||
|
it.operationTime = taskBean.operationTime
|
||||||
|
r.copyToRealmOrUpdate(it)
|
||||||
|
taskBean = realm.copyFromRealm(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
realm.close()
|
realm.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
uploadData.postValue(taskBean)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,21 +132,26 @@ class TaskUploadScope(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
|
realm.refresh()
|
||||||
val bodyList: MutableList<EvaluationInfo> = ArrayList()
|
val bodyList: MutableList<EvaluationInfo> = ArrayList()
|
||||||
|
|
||||||
if (taskBean.syncStatus == FileUploadStatus.WAITING) {
|
if (taskBean.syncStatus == FileUploadStatus.WAITING) {
|
||||||
change(FileUploadStatus.UPLOADING)
|
change(FileUploadStatus.UPLOADING)
|
||||||
}
|
}
|
||||||
|
Log.e("jingo", "上传link数量1 :${taskBean.hadLinkDvoList.size}")
|
||||||
|
val newTaskBean =
|
||||||
|
realm.where(TaskBean::class.java).equalTo("id", taskBean.id).findFirst()
|
||||||
|
if (newTaskBean != null) {
|
||||||
|
Log.e("jingo", "上传link数量2 :${newTaskBean.hadLinkDvoList.size}")
|
||||||
|
taskBean = realm.copyFromRealm(newTaskBean)
|
||||||
|
}
|
||||||
|
|
||||||
taskBean.hadLinkDvoList.forEach { hadLinkDvoBean ->
|
for (hadLinkDvoBean in taskBean.hadLinkDvoList) {
|
||||||
Log.e("jingo", "数据上传遍历开始")
|
Log.e("jingo", "数据上传遍历开始0${hadLinkDvoBean.linkPid}")
|
||||||
|
|
||||||
val linkStatus = 1
|
val linkStatus = 1
|
||||||
//存在原因标记未测评
|
//存在原因标记未测评
|
||||||
if (hadLinkDvoBean.reason.isNotEmpty()) {
|
if (hadLinkDvoBean.reason.isNotEmpty()) {
|
||||||
Log.e("jingo", "数据上传遍历开始0${hadLinkDvoBean.linkPid}")
|
|
||||||
|
|
||||||
//未测评
|
//未测评
|
||||||
val linkStatus = 0
|
val linkStatus = 0
|
||||||
@ -142,6 +163,7 @@ class TaskUploadScope(
|
|||||||
markId = UUID.randomUUID().toString(),//"20065597"
|
markId = UUID.randomUUID().toString(),//"20065597"
|
||||||
trackPhotoNumber = "",
|
trackPhotoNumber = "",
|
||||||
markGeometry = "",
|
markGeometry = "",
|
||||||
|
linkGeometry = "",
|
||||||
featureName = "",
|
featureName = "",
|
||||||
problemType = 0,
|
problemType = 0,
|
||||||
problemPhenomenon = "",
|
problemPhenomenon = "",
|
||||||
@ -151,7 +173,7 @@ class TaskUploadScope(
|
|||||||
evaluatorName = "",
|
evaluatorName = "",
|
||||||
evaluationDate = "",
|
evaluationDate = "",
|
||||||
evaluationWay = 2,
|
evaluationWay = 2,
|
||||||
roadClassfcation = 1,
|
roadClassifcation = 1,
|
||||||
roadFunctionGrade = 0,
|
roadFunctionGrade = 0,
|
||||||
noEvaluationreason = hadLinkDvoBean.reason,
|
noEvaluationreason = hadLinkDvoBean.reason,
|
||||||
linkLength = 0.0,
|
linkLength = 0.0,
|
||||||
@ -163,8 +185,6 @@ class TaskUploadScope(
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
Log.e("jingo", "数据上传遍历开始1${hadLinkDvoBean.linkPid}")
|
|
||||||
|
|
||||||
val linkStatus = hadLinkDvoBean.linkStatus
|
val linkStatus = hadLinkDvoBean.linkStatus
|
||||||
|
|
||||||
var s: String = "%.3f".format(hadLinkDvoBean.length)//保留一位小数(且支持四舍五入)
|
var s: String = "%.3f".format(hadLinkDvoBean.length)//保留一位小数(且支持四舍五入)
|
||||||
@ -175,29 +195,37 @@ class TaskUploadScope(
|
|||||||
|
|
||||||
if (objects != null && objects.size > 0) {
|
if (objects != null && objects.size > 0) {
|
||||||
val copyList = realm.copyFromRealm(objects)
|
val copyList = realm.copyFromRealm(objects)
|
||||||
copyList.forEach {
|
for (it in copyList) {
|
||||||
var problemType = 0
|
val problemType = when (it.problemType) {
|
||||||
if (it.problemType == "错误") {
|
// "错误" -> {
|
||||||
problemType = 0
|
// 0
|
||||||
} else if (it.problemType == "多余") {
|
// }
|
||||||
problemType = 1
|
"多余" -> {
|
||||||
} else if (it.problemType == "遗漏") {
|
1
|
||||||
problemType = 2
|
}
|
||||||
|
"遗漏" -> {
|
||||||
|
2
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var roadClassfcation = 0
|
var roadClassifcation = 0
|
||||||
|
|
||||||
var roadFunctionGrade = 0
|
var roadFunctionGrade = 0
|
||||||
|
|
||||||
var dataLevel = 0
|
var dataLevel = 0
|
||||||
|
|
||||||
if (hadLinkDvoBean.linkInfo != null) {
|
if (hadLinkDvoBean.linkInfo != null) {
|
||||||
roadClassfcation = hadLinkDvoBean.linkInfo!!.kind
|
roadClassifcation = hadLinkDvoBean.linkInfo!!.kind
|
||||||
roadFunctionGrade = hadLinkDvoBean.linkInfo!!.functionLevel
|
roadFunctionGrade = hadLinkDvoBean.linkInfo!!.functionLevel
|
||||||
dataLevel = hadLinkDvoBean.linkInfo!!.dataLevel
|
dataLevel = hadLinkDvoBean.linkInfo!!.dataLevel
|
||||||
}
|
}
|
||||||
|
var linkGeometry = ""
|
||||||
var evaluationWay = 2
|
if(linkStatus == 3)
|
||||||
|
linkGeometry = hadLinkDvoBean.geometry
|
||||||
|
val evaluationWay = 2
|
||||||
val evaluationInfo = EvaluationInfo(
|
val evaluationInfo = EvaluationInfo(
|
||||||
evaluationTaskId = taskBean.id.toString(),
|
evaluationTaskId = taskBean.id.toString(),
|
||||||
linkPid = hadLinkDvoBean.linkPid,//"84207223282277331"
|
linkPid = hadLinkDvoBean.linkPid,//"84207223282277331"
|
||||||
@ -205,6 +233,7 @@ class TaskUploadScope(
|
|||||||
markId = it.id,
|
markId = it.id,
|
||||||
trackPhotoNumber = "",
|
trackPhotoNumber = "",
|
||||||
markGeometry = it.geometry,
|
markGeometry = it.geometry,
|
||||||
|
linkGeometry = linkGeometry,
|
||||||
featureName = it.classCode,
|
featureName = it.classCode,
|
||||||
problemType = problemType,
|
problemType = problemType,
|
||||||
problemPhenomenon = it.phenomenon,
|
problemPhenomenon = it.phenomenon,
|
||||||
@ -214,7 +243,7 @@ class TaskUploadScope(
|
|||||||
evaluatorName = it.checkUserId,
|
evaluatorName = it.checkUserId,
|
||||||
evaluationDate = it.checkTime,
|
evaluationDate = it.checkTime,
|
||||||
evaluationWay = evaluationWay,
|
evaluationWay = evaluationWay,
|
||||||
roadClassfcation = roadClassfcation,
|
roadClassifcation = roadClassifcation,
|
||||||
roadFunctionGrade = roadFunctionGrade,
|
roadFunctionGrade = roadFunctionGrade,
|
||||||
noEvaluationreason = "",
|
noEvaluationreason = "",
|
||||||
linkLength = s.toDouble(),
|
linkLength = s.toDouble(),
|
||||||
@ -226,11 +255,11 @@ class TaskUploadScope(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Log.e("jingo", "数据上传遍历结束")
|
|
||||||
}
|
}
|
||||||
realm.close()
|
realm.close()
|
||||||
|
Log.e("jingo", "数据上传条数 ${bodyList.size}")
|
||||||
if (bodyList.size > 0) {
|
if (bodyList.size > 0) {
|
||||||
|
|
||||||
val result = uploadManager.netApi.postRequest(bodyList)// .enqueue(object :
|
val result = uploadManager.netApi.postRequest(bodyList)// .enqueue(object :
|
||||||
// Callback<ResponseBody> {
|
// Callback<ResponseBody> {
|
||||||
if (result.isSuccessful) {
|
if (result.isSuccessful) {
|
||||||
@ -240,6 +269,7 @@ class TaskUploadScope(
|
|||||||
change(FileUploadStatus.DONE, "上传成功")
|
change(FileUploadStatus.DONE, "上传成功")
|
||||||
} else {
|
} else {
|
||||||
change(FileUploadStatus.ERROR, "${defaultUserResponse.msg}")
|
change(FileUploadStatus.ERROR, "${defaultUserResponse.msg}")
|
||||||
|
Log.e("jingo", "数据上传出错 ${defaultUserResponse.msg}")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// handle the failure
|
// handle the failure
|
||||||
@ -249,13 +279,12 @@ class TaskUploadScope(
|
|||||||
change(FileUploadStatus.ERROR)
|
change(FileUploadStatus.ERROR)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
change(FileUploadStatus.NONE,"无可上传数据")
|
change(FileUploadStatus.NONE, "无可上传数据")
|
||||||
}
|
}
|
||||||
} catch (e: Throwable) {
|
} catch (e: Throwable) {
|
||||||
change(FileUploadStatus.ERROR)
|
change(FileUploadStatus.ERROR)
|
||||||
Log.e("jingo", "数据上传出错 ${e.message}")
|
Log.e("jingo", "数据上传出错 ${e.message}")
|
||||||
} finally {
|
} finally {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -283,10 +283,13 @@ class LoginViewModel @Inject constructor(
|
|||||||
task.status = item.status
|
task.status = item.status
|
||||||
task.currentSize = item.currentSize
|
task.currentSize = item.currentSize
|
||||||
task.hadLinkDvoList = item.hadLinkDvoList
|
task.hadLinkDvoList = item.hadLinkDvoList
|
||||||
|
task.syncStatus = item.syncStatus
|
||||||
//已上传后不在更新操作时间
|
//已上传后不在更新操作时间
|
||||||
if (task.syncStatus != FileManager.Companion.FileUploadStatus.DONE) {
|
if (task.syncStatus != FileManager.Companion.FileUploadStatus.DONE) {
|
||||||
//赋值时间,用于查询过滤
|
//赋值时间,用于查询过滤
|
||||||
task.operationTime = DateTimeUtil.getNowDate().time
|
task.operationTime = DateTimeUtil.getNowDate().time
|
||||||
|
}else{
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (hadLink in task.hadLinkDvoList) {
|
for (hadLink in task.hadLinkDvoList) {
|
||||||
|
|||||||
@ -49,11 +49,9 @@ import dagger.hilt.android.lifecycle.HiltViewModel
|
|||||||
import io.realm.Realm
|
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.*
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
import kotlinx.coroutines.sync.Mutex
|
import kotlinx.coroutines.sync.Mutex
|
||||||
import kotlinx.coroutines.withContext
|
|
||||||
import org.locationtech.jts.geom.Geometry
|
import org.locationtech.jts.geom.Geometry
|
||||||
import org.oscim.core.GeoPoint
|
import org.oscim.core.GeoPoint
|
||||||
import org.oscim.core.MapPosition
|
import org.oscim.core.MapPosition
|
||||||
@ -234,6 +232,10 @@ class MainViewModel @Inject constructor(
|
|||||||
|
|
||||||
private var currentMapZoomLevel: Int = 0
|
private var currentMapZoomLevel: Int = 0
|
||||||
|
|
||||||
|
//导航轨迹回顾
|
||||||
|
private var naviLocationTest = false
|
||||||
|
private var naviLocationTestJob: Job? = null
|
||||||
|
|
||||||
//导航信息
|
//导航信息
|
||||||
private var naviEngine: NaviEngine? = null
|
private var naviEngine: NaviEngine? = null
|
||||||
|
|
||||||
@ -366,7 +368,7 @@ class MainViewModel @Inject constructor(
|
|||||||
*/
|
*/
|
||||||
private suspend fun getTaskBean() {
|
private suspend fun getTaskBean() {
|
||||||
val id = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
|
val id = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
val res = realm.where(TaskBean::class.java).equalTo("id", id).findFirst()
|
val res = realm.where(TaskBean::class.java).equalTo("id", id).findFirst()
|
||||||
if (res != null) {
|
if (res != null) {
|
||||||
currentTaskBean = realm.copyFromRealm(res)
|
currentTaskBean = realm.copyFromRealm(res)
|
||||||
@ -487,10 +489,9 @@ class MainViewModel @Inject constructor(
|
|||||||
if (currentTaskBean != null) {
|
if (currentTaskBean != null) {
|
||||||
var list = mutableListOf<QsRecordBean>()
|
var list = mutableListOf<QsRecordBean>()
|
||||||
val realm = realmOperateHelper.getRealmDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
realm.executeTransaction {
|
val id = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
|
||||||
val objects = realmOperateHelper.getRealmTools(QsRecordBean::class.java).findAll()
|
val objects = realm.where(QsRecordBean::class.java).equalTo("taskId", id).findAll()
|
||||||
list = realm.copyFromRealm(objects)
|
list = realm.copyFromRealm(objects)
|
||||||
}
|
|
||||||
realm.close()
|
realm.close()
|
||||||
mapController.markerHandle.removeAllQsMarker()
|
mapController.markerHandle.removeAllQsMarker()
|
||||||
for (item in list) {
|
for (item in list) {
|
||||||
@ -541,7 +542,11 @@ class MainViewModel @Inject constructor(
|
|||||||
mapController.locationLayerHandler.niLocationFlow.collect { location ->
|
mapController.locationLayerHandler.niLocationFlow.collect { location ->
|
||||||
|
|
||||||
//过滤掉无效点
|
//过滤掉无效点
|
||||||
if (!GeometryTools.isCheckError(location.longitude, location.latitude)) {
|
if (!naviLocationTest && !GeometryTools.isCheckError(
|
||||||
|
location.longitude,
|
||||||
|
location.latitude
|
||||||
|
)
|
||||||
|
) {
|
||||||
val geometry = GeometryTools.createGeometry(
|
val geometry = GeometryTools.createGeometry(
|
||||||
GeoPoint(
|
GeoPoint(
|
||||||
location.latitude, location.longitude
|
location.latitude, location.longitude
|
||||||
@ -698,7 +703,16 @@ class MainViewModel @Inject constructor(
|
|||||||
DataCodeEnum.OMDB_LINK_SPEEDLIMIT.code, //线限速,
|
DataCodeEnum.OMDB_LINK_SPEEDLIMIT.code, //线限速,
|
||||||
DataCodeEnum.OMDB_LINK_DIRECT.code,//道路方向,
|
DataCodeEnum.OMDB_LINK_DIRECT.code,//道路方向,
|
||||||
DataCodeEnum.OMDB_RAMP.code, //匝道
|
DataCodeEnum.OMDB_RAMP.code, //匝道
|
||||||
|
DataCodeEnum.OMDB_RAMP_1.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_2.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_3.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_4.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_5.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_6.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_7.code,
|
||||||
DataCodeEnum.OMDB_BRIDGE.code,//桥
|
DataCodeEnum.OMDB_BRIDGE.code,//桥
|
||||||
|
DataCodeEnum.OMDB_BRIDGE_1.code,
|
||||||
|
DataCodeEnum.OMDB_BRIDGE_2.code,
|
||||||
DataCodeEnum.OMDB_TUNNEL.code,//隧道
|
DataCodeEnum.OMDB_TUNNEL.code,//隧道
|
||||||
DataCodeEnum.OMDB_ROUNDABOUT.code,//环岛
|
DataCodeEnum.OMDB_ROUNDABOUT.code,//环岛
|
||||||
DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code,//出入口
|
DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code,//出入口
|
||||||
@ -842,7 +856,17 @@ class MainViewModel @Inject constructor(
|
|||||||
DataCodeEnum.OMDB_LINK_SPEEDLIMIT_COND.code,//条件线限速
|
DataCodeEnum.OMDB_LINK_SPEEDLIMIT_COND.code,//条件线限速
|
||||||
DataCodeEnum.OMDB_LINK_DIRECT.code,//道路方向,
|
DataCodeEnum.OMDB_LINK_DIRECT.code,//道路方向,
|
||||||
DataCodeEnum.OMDB_RAMP.code, //匝道
|
DataCodeEnum.OMDB_RAMP.code, //匝道
|
||||||
|
DataCodeEnum.OMDB_RAMP_1.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_2.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_3.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_4.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_5.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_6.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_7.code,
|
||||||
DataCodeEnum.OMDB_BRIDGE.code,//桥
|
DataCodeEnum.OMDB_BRIDGE.code,//桥
|
||||||
|
DataCodeEnum.OMDB_BRIDGE_1.code,//桥
|
||||||
|
DataCodeEnum.OMDB_BRIDGE_2.code,//桥
|
||||||
|
|
||||||
DataCodeEnum.OMDB_TUNNEL.code,//隧道
|
DataCodeEnum.OMDB_TUNNEL.code,//隧道
|
||||||
DataCodeEnum.OMDB_ROUNDABOUT.code,//环岛
|
DataCodeEnum.OMDB_ROUNDABOUT.code,//环岛
|
||||||
DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code,//出入口
|
DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code,//出入口
|
||||||
@ -1610,5 +1634,62 @@ class MainViewModel @Inject constructor(
|
|||||||
fun clearMarker() {
|
fun clearMarker() {
|
||||||
mapController.markerHandle.removeMarker()
|
mapController.markerHandle.removeMarker()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导航测试
|
||||||
|
*/
|
||||||
|
fun setNaviLocationTestStartTime(time: Long) {
|
||||||
|
naviLocationTest = true
|
||||||
|
if (naviLocationTestJob != null && naviLocationTestJob!!.isActive)
|
||||||
|
naviLocationTestJob!!.cancel()
|
||||||
|
naviLocationTestJob = viewModelScope.launch(Dispatchers.IO) {
|
||||||
|
var b = true
|
||||||
|
val limitCount = 20
|
||||||
|
var lastTime: Long = time
|
||||||
|
while (b) {
|
||||||
|
Log.e("jingo", "下一组定位点起始时间 $lastTime")
|
||||||
|
val list = traceDataBase.niLocationDao.findListWithStartTime(lastTime, limitCount)
|
||||||
|
|
||||||
|
for (location in list) {
|
||||||
|
if (!naviLocationTest)
|
||||||
|
break
|
||||||
|
val nowTime = location.timeStamp.toLong()
|
||||||
|
if (lastTime != 0L) {
|
||||||
|
val tempTime = nowTime - lastTime
|
||||||
|
if (tempTime > 10000) {
|
||||||
|
liveDataMessage.postValue("下个定位点与当前定位点时间间隔超过10秒(${tempTime}),将直接跳转到下个点")
|
||||||
|
delay(5000)
|
||||||
|
} else {
|
||||||
|
delay(tempTime)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lastTime = nowTime
|
||||||
|
|
||||||
|
withContext(Dispatchers.Main) {
|
||||||
|
mapController.animationHandler.animationByLatLon(
|
||||||
|
location.latitude,
|
||||||
|
location.longitude
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
mapController.locationLayerHandler.niLocationFlow.emit(location)
|
||||||
|
}
|
||||||
|
if (list.size < limitCount) {
|
||||||
|
b = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 停止测试
|
||||||
|
*/
|
||||||
|
fun stopNaviLocationTest() {
|
||||||
|
naviLocationTest = false
|
||||||
|
if (naviLocationTestJob != null) {
|
||||||
|
naviLocationTestJob!!.cancel()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
70
app/src/main/java/com/navinfo/omqs/ui/dialog/TimeDialog.kt
Normal file
70
app/src/main/java/com/navinfo/omqs/ui/dialog/TimeDialog.kt
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
package com.navinfo.omqs.ui.dialog
|
||||||
|
|
||||||
|
import android.app.Dialog
|
||||||
|
import android.content.Context
|
||||||
|
import android.os.Build
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.util.Log
|
||||||
|
import android.view.View
|
||||||
|
import android.widget.DatePicker
|
||||||
|
import android.widget.TextView
|
||||||
|
import android.widget.TimePicker
|
||||||
|
import androidx.annotation.RequiresApi
|
||||||
|
import com.navinfo.omqs.R
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
|
|
||||||
|
interface OnTimeDialogListener {
|
||||||
|
fun selectTime(milliseconds: Long)
|
||||||
|
}
|
||||||
|
|
||||||
|
class TimeDialog(context: Context, val listener: OnTimeDialogListener) : Dialog(context),
|
||||||
|
View.OnClickListener {
|
||||||
|
|
||||||
|
private lateinit var dataPicker: DatePicker
|
||||||
|
private lateinit var timePicker: TimePicker
|
||||||
|
|
||||||
|
|
||||||
|
private var timeText = ""
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
val customFrame = View.inflate(context, R.layout.dialog_time_layout, null)
|
||||||
|
dataPicker = customFrame.findViewById(R.id.time_dialog_data_picker)
|
||||||
|
timePicker = customFrame.findViewById(R.id.time_dialog_time_picker)
|
||||||
|
customFrame.findViewById<TextView>(R.id.time_dialog_ok).setOnClickListener(this)
|
||||||
|
customFrame.findViewById<TextView>(R.id.time_dialog_cancel).setOnClickListener(this)
|
||||||
|
setContentView(customFrame)
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresApi(Build.VERSION_CODES.M)
|
||||||
|
override fun onClick(v: View) {
|
||||||
|
when (v.id) {
|
||||||
|
R.id.time_dialog_ok -> {
|
||||||
|
val month = if (dataPicker.month > 8) {
|
||||||
|
"${dataPicker.month + 1}"
|
||||||
|
} else {
|
||||||
|
"0${dataPicker.month + 1}"
|
||||||
|
}
|
||||||
|
val hour = if(timePicker.hour < 10){
|
||||||
|
"0${timePicker.hour}"
|
||||||
|
}else{
|
||||||
|
"${timePicker.hour}"
|
||||||
|
}
|
||||||
|
val minute = if(timePicker.minute<10){
|
||||||
|
"0${timePicker.minute}"
|
||||||
|
}else{
|
||||||
|
"${timePicker.minute}"
|
||||||
|
}
|
||||||
|
val time =
|
||||||
|
"${dataPicker.year}${month}${dataPicker.dayOfMonth}${hour}${minute}00"
|
||||||
|
Log.e("jingo", "选择的时间 $time")
|
||||||
|
val sdf = SimpleDateFormat("yyyyMMddHHmmss")
|
||||||
|
listener.selectTime(sdf.parse(time).time)
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
|
R.id.time_dialog_cancel -> {
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -181,6 +181,7 @@ class ConsoleFragment : BaseFragment(), OnClickListener {
|
|||||||
*/
|
*/
|
||||||
binding.consoleRoot.findViewById<View>(R.id.console_route_bg)?.setOnClickListener(this)
|
binding.consoleRoot.findViewById<View>(R.id.console_route_bg)?.setOnClickListener(this)
|
||||||
binding.consoleRoot.findViewById<View>(R.id.console_route_icon_bg)?.setOnClickListener(this)
|
binding.consoleRoot.findViewById<View>(R.id.console_route_icon_bg)?.setOnClickListener(this)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModel
|
|||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.navinfo.collect.library.data.entity.QsRecordBean
|
import com.navinfo.collect.library.data.entity.QsRecordBean
|
||||||
import com.navinfo.collect.library.data.entity.TaskBean
|
import com.navinfo.collect.library.data.entity.TaskBean
|
||||||
|
import com.navinfo.omqs.db.RealmOperateHelper
|
||||||
import com.navinfo.omqs.tools.FileManager
|
import com.navinfo.omqs.tools.FileManager
|
||||||
import com.navinfo.omqs.util.DateTimeUtil
|
import com.navinfo.omqs.util.DateTimeUtil
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
@ -13,7 +14,9 @@ import kotlinx.coroutines.launch
|
|||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class ConsoleViewModel @Inject constructor() : ViewModel() {
|
class ConsoleViewModel @Inject constructor(
|
||||||
|
private val realmOperateHelper: RealmOperateHelper
|
||||||
|
) : ViewModel() {
|
||||||
/**
|
/**
|
||||||
* 当前任务量统计
|
* 当前任务量统计
|
||||||
*/
|
*/
|
||||||
@ -26,7 +29,7 @@ class ConsoleViewModel @Inject constructor() : ViewModel() {
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
val nowTime: Long = DateTimeUtil.getNowDate().time
|
val nowTime: Long = DateTimeUtil.getNowDate().time
|
||||||
val beginNowTime: Long = nowTime - 90 * 3600 * 24 * 1000L
|
val beginNowTime: Long = nowTime - 90 * 3600 * 24 * 1000L
|
||||||
val syncUpload: Int = FileManager.Companion.FileUploadStatus.DONE
|
val syncUpload: Int = FileManager.Companion.FileUploadStatus.DONE
|
||||||
|
|||||||
@ -129,8 +129,10 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
liveDataQsRecordBean.value!!.geometry =
|
liveDataQsRecordBean.value!!.geometry =
|
||||||
GeometryTools.createGeometry(point).toText()
|
GeometryTools.createGeometry(point).toText()
|
||||||
mapController.markerHandle.addMarker(point, TAG)
|
mapController.markerHandle.addMarker(point, TAG)
|
||||||
viewModelScope.launch {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
captureLink(point)
|
val realm = realmOperateHelper.getSelectTaskRealmInstance()
|
||||||
|
captureLink(realm, point)
|
||||||
|
realm.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,17 +153,20 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
* 查询数据库,获取问题分类
|
* 查询数据库,获取问题分类
|
||||||
*/
|
*/
|
||||||
fun initNewData(bean: SignBean?, filePath: String) {
|
fun initNewData(bean: SignBean?, filePath: String) {
|
||||||
|
|
||||||
//查询元数据
|
//查询元数据
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
/**
|
/**
|
||||||
* 获取当前所选的任务
|
* 获取当前所选的任务
|
||||||
*/
|
*/
|
||||||
val taskId = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
|
val taskId = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
|
|
||||||
val objects = realm.where(TaskBean::class.java).equalTo("id", taskId).findFirst()
|
val objects = realm.where(TaskBean::class.java).equalTo("id", taskId).findFirst()
|
||||||
if (objects != null) {
|
if (objects != null) {
|
||||||
liveDataTaskBean.postValue(realm.copyFromRealm(objects))
|
liveDataTaskBean.postValue(realm.copyFromRealm(objects))
|
||||||
}
|
}
|
||||||
|
realm.close()
|
||||||
//获取当前定位点
|
//获取当前定位点
|
||||||
val geoPoint = mapController.locationLayerHandler.getCurrentGeoPoint()
|
val geoPoint = mapController.locationLayerHandler.getCurrentGeoPoint()
|
||||||
//如果不是从面板进来的
|
//如果不是从面板进来的
|
||||||
@ -171,11 +176,13 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
GeometryTools.createGeometry(it).toText()
|
GeometryTools.createGeometry(it).toText()
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
mapController.markerHandle.addMarker(geoPoint, TAG)
|
mapController.markerHandle.addMarker(geoPoint, TAG)
|
||||||
mapController.animationHandler.animationByLatLon(
|
// mapController.animationHandler.animationByLatLon(
|
||||||
geoPoint.latitude, geoPoint.longitude
|
// geoPoint.latitude, geoPoint.longitude
|
||||||
)
|
// )
|
||||||
}
|
}
|
||||||
captureLink(geoPoint)
|
val realm = realmOperateHelper.getSelectTaskRealmInstance()
|
||||||
|
captureLink(realm, geoPoint)
|
||||||
|
realm.close()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
liveDataQsRecordBean.value?.run {
|
liveDataQsRecordBean.value?.run {
|
||||||
@ -184,7 +191,7 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
if (linkId.isNotEmpty()) {
|
if (linkId.isNotEmpty()) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
val link = realmOperateHelper.queryLink(linkId)
|
val link = realmOperateHelper.queryLink(linkId)
|
||||||
if(link != null){
|
if (link != null) {
|
||||||
mapController.lineHandler.showLine(link.geometry)
|
mapController.lineHandler.showLine(link.geometry)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -200,44 +207,46 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
getClassTypeList(bean)
|
getClassTypeList(bean)
|
||||||
getProblemLinkList()
|
getProblemLinkList()
|
||||||
realm.close()
|
|
||||||
}
|
|
||||||
addChatMsgEntity(filePath)
|
addChatMsgEntity(filePath)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 捕捉道路或新增评测link
|
* 捕捉道路或新增评测link
|
||||||
*/
|
*/
|
||||||
private suspend fun captureLink(point: GeoPoint) {
|
private suspend fun captureLink(realm: Realm, point: GeoPoint) {
|
||||||
|
Log.e("jingo", "捕捉道路SSS")
|
||||||
if (liveDataTaskBean.value == null) {
|
if (liveDataTaskBean.value == null) {
|
||||||
liveDataToastMessage.postValue("请先选择所属任务!")
|
liveDataToastMessage.postValue("请先选择所属任务!")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
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, taskId = liveDataTaskBean.value!!.id)
|
||||||
if (taskLink != null) {
|
if (taskLink != null) {
|
||||||
it.linkId = taskLink.linkPid
|
it.linkId = taskLink.linkPid
|
||||||
mapController.lineHandler.showLine(taskLink.geometry)
|
mapController.lineHandler.showLine(taskLink.geometry)
|
||||||
|
Log.e("jingo", "捕捉道路EEE 1")
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
val linkList = realmOperateHelper.queryLink(realm,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)
|
||||||
|
Log.e("jingo", "捕捉道路EEE 2")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
it.linkId = ""
|
it.linkId = ""
|
||||||
mapController.lineHandler.removeLine()
|
mapController.lineHandler.removeLine()
|
||||||
realm.close()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Log.e("jingo", "捕捉道路EEE 3")
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -245,6 +254,7 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
*/
|
*/
|
||||||
fun getClassTypeList(bean: SignBean? = null) {
|
fun getClassTypeList(bean: SignBean? = null) {
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
|
Log.e("jingo", "获取问题分类列表 SSS")
|
||||||
val list = roomAppDatabase.getScProblemTypeDao().findClassTypeList()
|
val list = roomAppDatabase.getScProblemTypeDao().findClassTypeList()
|
||||||
list?.let {
|
list?.let {
|
||||||
if (list.isNotEmpty()) {
|
if (list.isNotEmpty()) {
|
||||||
@ -273,6 +283,7 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
getProblemList(classType)
|
getProblemList(classType)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Log.e("jingo", "获取问题分类列表 EEE")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -281,6 +292,7 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
*/
|
*/
|
||||||
fun getProblemLinkList() {
|
fun getProblemLinkList() {
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
|
Log.e("jingo", "获取问题环节列表 SSS")
|
||||||
val list = roomAppDatabase.getScRootCauseAnalysisDao().findAllData()
|
val list = roomAppDatabase.getScRootCauseAnalysisDao().findAllData()
|
||||||
list?.let { tl ->
|
list?.let { tl ->
|
||||||
if (tl.isNotEmpty()) {
|
if (tl.isNotEmpty()) {
|
||||||
@ -307,6 +319,7 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
liveDataRightTypeList.postValue(rightList)
|
liveDataRightTypeList.postValue(rightList)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Log.e("jingo", "获取问题环节列表 EEE")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -314,6 +327,7 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
* 获取问题类型列表和问题现象
|
* 获取问题类型列表和问题现象
|
||||||
*/
|
*/
|
||||||
private suspend fun getProblemList(classType: String) {
|
private suspend fun getProblemList(classType: String) {
|
||||||
|
Log.e("jingo", "获取问题类型列表和问题现象 SSS")
|
||||||
val typeList = roomAppDatabase.getScProblemTypeDao().findProblemTypeList(classType)
|
val typeList = roomAppDatabase.getScProblemTypeDao().findProblemTypeList(classType)
|
||||||
typeList?.let { tl ->
|
typeList?.let { tl ->
|
||||||
if (tl.isNotEmpty()) {
|
if (tl.isNotEmpty()) {
|
||||||
@ -340,6 +354,7 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
liveDataRightTypeList.postValue(phenomenonRightList)
|
liveDataRightTypeList.postValue(phenomenonRightList)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Log.e("jingo", "获取问题类型列表和问题现象 EEE")
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -404,7 +419,7 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
return@launch
|
return@launch
|
||||||
}
|
}
|
||||||
|
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
liveDataQsRecordBean.value!!.taskId = liveDataTaskBean.value!!.id
|
liveDataQsRecordBean.value!!.taskId = liveDataTaskBean.value!!.id
|
||||||
liveDataQsRecordBean.value!!.checkTime = DateTimeUtil.getDataTime()
|
liveDataQsRecordBean.value!!.checkTime = DateTimeUtil.getDataTime()
|
||||||
liveDataQsRecordBean.value!!.checkUserId = Constant.USER_REAL_NAME
|
liveDataQsRecordBean.value!!.checkUserId = Constant.USER_REAL_NAME
|
||||||
@ -413,6 +428,7 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
mapController.markerHandle.addOrUpdateQsRecordMark(liveDataQsRecordBean.value!!)
|
mapController.markerHandle.addOrUpdateQsRecordMark(liveDataQsRecordBean.value!!)
|
||||||
liveDataFinish.postValue(true)
|
liveDataFinish.postValue(true)
|
||||||
|
realm.refresh()
|
||||||
realm.close()
|
realm.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -428,7 +444,7 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
override fun onClick(dialog: Dialog?, which: Int) {
|
override fun onClick(dialog: Dialog?, which: Int) {
|
||||||
mDialog.dismiss()
|
mDialog.dismiss()
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
realm.executeTransaction {
|
realm.executeTransaction {
|
||||||
val objects = it.where(QsRecordBean::class.java)
|
val objects = it.where(QsRecordBean::class.java)
|
||||||
.equalTo("id", liveDataQsRecordBean.value?.id).findFirst()
|
.equalTo("id", liveDataQsRecordBean.value?.id).findFirst()
|
||||||
@ -453,7 +469,7 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
Log.e("jingo", "捕捉到的要素 id = $id")
|
Log.e("jingo", "捕捉到的要素 id = $id")
|
||||||
viewModelScope.launch(Dispatchers.Main) {
|
viewModelScope.launch(Dispatchers.Main) {
|
||||||
|
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
|
|
||||||
val objects = realm.where(QsRecordBean::class.java).equalTo("id", id).findFirst()
|
val objects = realm.where(QsRecordBean::class.java).equalTo("id", id).findFirst()
|
||||||
Log.e("jingo", "查询数据 id= $id")
|
Log.e("jingo", "查询数据 id= $id")
|
||||||
@ -666,7 +682,7 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
if (oldBean == null) {
|
if (oldBean == null) {
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
val taskId = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
|
val taskId = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
val objects =
|
val objects =
|
||||||
realm.where(TaskBean::class.java).equalTo("id", taskId).findFirst()
|
realm.where(TaskBean::class.java).equalTo("id", taskId).findFirst()
|
||||||
if (objects != null) {
|
if (objects != null) {
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import androidx.lifecycle.viewModelScope
|
|||||||
import com.navinfo.collect.library.data.entity.NoteBean
|
import com.navinfo.collect.library.data.entity.NoteBean
|
||||||
import com.navinfo.collect.library.map.NIMapController
|
import com.navinfo.collect.library.map.NIMapController
|
||||||
import com.navinfo.collect.library.utils.MapParamUtils
|
import com.navinfo.collect.library.utils.MapParamUtils
|
||||||
|
import com.navinfo.omqs.db.RealmOperateHelper
|
||||||
import com.navinfo.omqs.ui.dialog.FirstDialog
|
import com.navinfo.omqs.ui.dialog.FirstDialog
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import io.realm.Realm
|
import io.realm.Realm
|
||||||
@ -16,7 +17,8 @@ import javax.inject.Inject
|
|||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class NoteViewModel @Inject constructor(
|
class NoteViewModel @Inject constructor(
|
||||||
val mapController: NIMapController
|
private val mapController: NIMapController,
|
||||||
|
private val realmOperateHelper: RealmOperateHelper
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
|
|
||||||
lateinit var canvasView: CanvasView
|
lateinit var canvasView: CanvasView
|
||||||
@ -111,7 +113,7 @@ class NoteViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
noteBean.taskId = MapParamUtils.getTaskId()
|
noteBean.taskId = MapParamUtils.getTaskId()
|
||||||
mNoteBean = noteBean
|
mNoteBean = noteBean
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
realm.executeTransaction {
|
realm.executeTransaction {
|
||||||
it.copyToRealmOrUpdate(noteBean)
|
it.copyToRealmOrUpdate(noteBean)
|
||||||
}
|
}
|
||||||
@ -138,7 +140,7 @@ class NoteViewModel @Inject constructor(
|
|||||||
) { dialog, _ ->
|
) { dialog, _ ->
|
||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
realm.executeTransaction {
|
realm.executeTransaction {
|
||||||
val objects = it.where(NoteBean::class.java)
|
val objects = it.where(NoteBean::class.java)
|
||||||
.equalTo("id", mNoteBean!!.id).findFirst()
|
.equalTo("id", mNoteBean!!.id).findFirst()
|
||||||
@ -159,7 +161,7 @@ class NoteViewModel @Inject constructor(
|
|||||||
*/
|
*/
|
||||||
fun initData(id: String) {
|
fun initData(id: String) {
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
realm.executeTransaction { it ->
|
realm.executeTransaction { it ->
|
||||||
val objects = it.where(NoteBean::class.java)
|
val objects = it.where(NoteBean::class.java)
|
||||||
.equalTo("id", id).findFirst()
|
.equalTo("id", id).findFirst()
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.navinfo.omqs.ui.fragment.personalcenter
|
package com.navinfo.omqs.ui.fragment.personalcenter
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
|
import android.app.TimePickerDialog
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
@ -8,6 +9,7 @@ import android.os.Bundle
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import android.widget.TimePicker
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import androidx.core.view.forEach
|
import androidx.core.view.forEach
|
||||||
@ -19,6 +21,7 @@ import com.blankj.utilcode.util.UriUtils
|
|||||||
import com.github.k1rakishou.fsaf.FileChooser
|
import com.github.k1rakishou.fsaf.FileChooser
|
||||||
import com.github.k1rakishou.fsaf.callback.FSAFActivityCallbacks
|
import com.github.k1rakishou.fsaf.callback.FSAFActivityCallbacks
|
||||||
import com.github.k1rakishou.fsaf.callback.FileChooserCallback
|
import com.github.k1rakishou.fsaf.callback.FileChooserCallback
|
||||||
|
import com.google.android.material.timepicker.MaterialTimePicker
|
||||||
import com.navinfo.collect.library.enums.DataLayerEnum
|
import com.navinfo.collect.library.enums.DataLayerEnum
|
||||||
import com.navinfo.collect.library.map.NIMapController
|
import com.navinfo.collect.library.map.NIMapController
|
||||||
import com.navinfo.collect.library.utils.MapParamUtils
|
import com.navinfo.collect.library.utils.MapParamUtils
|
||||||
@ -30,12 +33,13 @@ import com.navinfo.omqs.hilt.ImportOMDBHiltFactory
|
|||||||
import com.navinfo.omqs.tools.CoroutineUtils
|
import com.navinfo.omqs.tools.CoroutineUtils
|
||||||
import com.navinfo.omqs.ui.activity.map.MainViewModel
|
import com.navinfo.omqs.ui.activity.map.MainViewModel
|
||||||
import com.navinfo.omqs.ui.activity.scan.QrCodeActivity
|
import com.navinfo.omqs.ui.activity.scan.QrCodeActivity
|
||||||
|
import com.navinfo.omqs.ui.dialog.OnTimeDialogListener
|
||||||
|
import com.navinfo.omqs.ui.dialog.TimeDialog
|
||||||
import com.navinfo.omqs.ui.fragment.BaseFragment
|
import com.navinfo.omqs.ui.fragment.BaseFragment
|
||||||
import com.permissionx.guolindev.PermissionX
|
import com.permissionx.guolindev.PermissionX
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import org.oscim.core.GeoPoint
|
import org.oscim.core.GeoPoint
|
||||||
import org.oscim.core.MapPosition
|
import org.oscim.core.MapPosition
|
||||||
import java.io.File
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -201,10 +205,25 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?
|
|||||||
R.id.personal_center_menu_scan_indoor_data -> {
|
R.id.personal_center_menu_scan_indoor_data -> {
|
||||||
indoorDataListener?.invoke(true)
|
indoorDataListener?.invoke(true)
|
||||||
}
|
}
|
||||||
|
//导航定位测试
|
||||||
|
R.id.personal_center_menu_location_test -> {
|
||||||
|
viewMainModel.stopNaviLocationTest()
|
||||||
|
val dialog = TimeDialog(
|
||||||
|
requireContext(),
|
||||||
|
object : OnTimeDialogListener {
|
||||||
|
override fun selectTime(milliseconds: Long) {
|
||||||
|
viewMainModel.setNaviLocationTestStartTime(milliseconds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
dialog.show()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
viewModel.liveDataMessage.observe(viewLifecycleOwner) {
|
viewModel.liveDataMessage.observe(viewLifecycleOwner) {
|
||||||
ToastUtils.showShort(it)
|
ToastUtils.showShort(it)
|
||||||
}
|
}
|
||||||
@ -225,7 +244,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?
|
|||||||
it.title = "锁定地图旋转及视角"
|
it.title = "锁定地图旋转及视角"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
R.id.personal_center_menu_catch_all->{
|
R.id.personal_center_menu_catch_all -> {
|
||||||
if (Constant.CATCH_ALL) {
|
if (Constant.CATCH_ALL) {
|
||||||
it.title = "关闭全要素捕捉"
|
it.title = "关闭全要素捕捉"
|
||||||
} else {
|
} else {
|
||||||
@ -244,7 +263,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun intentTOQRCode() {
|
private fun intentTOQRCode() {
|
||||||
var intent = Intent(context, QrCodeActivity::class.java);
|
val intent = Intent(context, QrCodeActivity::class.java);
|
||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -265,7 +284,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?
|
|||||||
private fun checkPermission() {
|
private fun checkPermission() {
|
||||||
PermissionX.init(this)
|
PermissionX.init(this)
|
||||||
.permissions(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO)
|
.permissions(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO)
|
||||||
.request { allGranted, grantedList, deniedList ->
|
.request { allGranted, _, deniedList ->
|
||||||
if (allGranted) {
|
if (allGranted) {
|
||||||
//所有权限已经授权
|
//所有权限已经授权
|
||||||
Toast.makeText(context, "授权成功", Toast.LENGTH_LONG).show()
|
Toast.makeText(context, "授权成功", Toast.LENGTH_LONG).show()
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import com.blankj.utilcode.util.ToastUtils
|
|||||||
import com.navinfo.collect.library.data.entity.QsRecordBean
|
import com.navinfo.collect.library.data.entity.QsRecordBean
|
||||||
import com.navinfo.omqs.Constant
|
import com.navinfo.omqs.Constant
|
||||||
import com.navinfo.omqs.R
|
import com.navinfo.omqs.R
|
||||||
|
import com.navinfo.omqs.db.RealmOperateHelper
|
||||||
import com.navinfo.omqs.ui.activity.map.MainActivity
|
import com.navinfo.omqs.ui.activity.map.MainActivity
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import io.realm.Realm
|
import io.realm.Realm
|
||||||
@ -21,7 +22,8 @@ import javax.inject.Inject
|
|||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class QsRecordListViewModel @Inject constructor(
|
class QsRecordListViewModel @Inject constructor(
|
||||||
private val sharedPreferences: SharedPreferences
|
private val sharedPreferences: SharedPreferences,
|
||||||
|
private val realmOperateHelper: RealmOperateHelper
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
|
|
||||||
val liveDataQSList = MutableLiveData<List<QsRecordBean>>()
|
val liveDataQSList = MutableLiveData<List<QsRecordBean>>()
|
||||||
@ -29,7 +31,7 @@ class QsRecordListViewModel @Inject constructor(
|
|||||||
fun getList(context: Context) {
|
fun getList(context: Context) {
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
val taskId = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
|
val taskId = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
val objects = realm.where(QsRecordBean::class.java).equalTo("taskId",taskId).findAll()
|
val objects = realm.where(QsRecordBean::class.java).equalTo("taskId",taskId).findAll()
|
||||||
liveDataQSList.postValue(realm.copyFromRealm(objects))
|
liveDataQSList.postValue(realm.copyFromRealm(objects))
|
||||||
realm.close()
|
realm.close()
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.navinfo.omqs.ui.fragment.tasklink
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
|
import android.util.Log
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
@ -13,6 +14,7 @@ import com.navinfo.collect.library.map.NIMapController
|
|||||||
import com.navinfo.collect.library.map.handler.MeasureLayerHandler
|
import com.navinfo.collect.library.map.handler.MeasureLayerHandler
|
||||||
import com.navinfo.collect.library.utils.GeometryTools
|
import com.navinfo.collect.library.utils.GeometryTools
|
||||||
import com.navinfo.omqs.Constant
|
import com.navinfo.omqs.Constant
|
||||||
|
import com.navinfo.omqs.db.RealmOperateHelper
|
||||||
import com.navinfo.omqs.ui.dialog.FirstDialog
|
import com.navinfo.omqs.ui.dialog.FirstDialog
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import io.realm.Realm
|
import io.realm.Realm
|
||||||
@ -25,7 +27,8 @@ import javax.inject.Inject
|
|||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class TaskLinkViewModel @Inject constructor(
|
class TaskLinkViewModel @Inject constructor(
|
||||||
private val mapController: NIMapController,
|
private val mapController: NIMapController,
|
||||||
private val sharedPreferences: SharedPreferences
|
private val sharedPreferences: SharedPreferences,
|
||||||
|
private val realmOperateHelper: RealmOperateHelper
|
||||||
) : ViewModel(), SharedPreferences.OnSharedPreferenceChangeListener {
|
) : ViewModel(), SharedPreferences.OnSharedPreferenceChangeListener {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -120,7 +123,7 @@ class TaskLinkViewModel @Inject constructor(
|
|||||||
private fun getTaskBean() {
|
private fun getTaskBean() {
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
val id = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
|
val id = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
val res = realm.where(TaskBean::class.java).equalTo("id", id).findFirst()
|
val res = realm.where(TaskBean::class.java).equalTo("id", id).findFirst()
|
||||||
liveDataTaskBean.postValue(res?.let { realm.copyFromRealm(it) })
|
liveDataTaskBean.postValue(res?.let { realm.copyFromRealm(it) })
|
||||||
realm.close()
|
realm.close()
|
||||||
@ -225,17 +228,19 @@ class TaskLinkViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
realm.executeTransaction {
|
realm.executeTransaction {
|
||||||
it.copyToRealmOrUpdate(hadLinkDvoBean)
|
it.copyToRealmOrUpdate(hadLinkDvoBean)
|
||||||
it.copyToRealmOrUpdate(task)
|
it.copyToRealmOrUpdate(task)
|
||||||
|
Log.e("jingo", "当前任务link数量:${task.hadLinkDvoList.size}")
|
||||||
}
|
}
|
||||||
|
realm.refresh()
|
||||||
|
realm.close()
|
||||||
mapController.lineHandler.addTaskLink(hadLinkDvoBean!!)
|
mapController.lineHandler.addTaskLink(hadLinkDvoBean!!)
|
||||||
sharedPreferences.edit()
|
sharedPreferences.edit()
|
||||||
.putString(Constant.SHARED_SYNC_TASK_LINK_ID, hadLinkDvoBean!!.linkPid)
|
.putString(Constant.SHARED_SYNC_TASK_LINK_ID, hadLinkDvoBean!!.linkPid)
|
||||||
.apply()
|
.apply()
|
||||||
liveDataFinish.postValue(true)
|
liveDataFinish.postValue(true)
|
||||||
realm.close()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -267,7 +272,7 @@ class TaskLinkViewModel @Inject constructor(
|
|||||||
*/
|
*/
|
||||||
fun initData(id: String) {
|
fun initData(id: String) {
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
val objects =
|
val objects =
|
||||||
realm.where(HadLinkDvoBean::class.java).equalTo("linkPid", id)
|
realm.where(HadLinkDvoBean::class.java).equalTo("linkPid", id)
|
||||||
.findFirst()
|
.findFirst()
|
||||||
@ -298,7 +303,7 @@ class TaskLinkViewModel @Inject constructor(
|
|||||||
if (task != null) {
|
if (task != null) {
|
||||||
liveDataTaskBean.postValue(realm.copyFromRealm(task))
|
liveDataTaskBean.postValue(realm.copyFromRealm(task))
|
||||||
}
|
}
|
||||||
if(objects != null) {
|
if (objects != null) {
|
||||||
hadLinkDvoBean = realm.copyFromRealm(objects)
|
hadLinkDvoBean = realm.copyFromRealm(objects)
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
mapController.measureLayerHandler.initPathLine(hadLinkDvoBean?.geometry!!)
|
mapController.measureLayerHandler.initPathLine(hadLinkDvoBean?.geometry!!)
|
||||||
@ -324,7 +329,7 @@ class TaskLinkViewModel @Inject constructor(
|
|||||||
) { _, _ ->
|
) { _, _ ->
|
||||||
mDialog.dismiss()
|
mDialog.dismiss()
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
realm.executeTransaction {
|
realm.executeTransaction {
|
||||||
//先找到对应的任务
|
//先找到对应的任务
|
||||||
val task = it.where(TaskBean::class.java).equalTo("id", hadLinkDvoBean!!.taskId)
|
val task = it.where(TaskBean::class.java).equalTo("id", hadLinkDvoBean!!.taskId)
|
||||||
|
|||||||
@ -166,7 +166,7 @@ class TaskViewModel @Inject constructor(
|
|||||||
when (val result = networkService.getTaskList(Constant.USER_ID)) {
|
when (val result = networkService.getTaskList(Constant.USER_ID)) {
|
||||||
is NetResult.Success -> {
|
is NetResult.Success -> {
|
||||||
if (result.data != null) {
|
if (result.data != null) {
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
realm.executeTransaction {
|
realm.executeTransaction {
|
||||||
result.data.obj?.let { list ->
|
result.data.obj?.let { list ->
|
||||||
for (index in list.indices) {
|
for (index in list.indices) {
|
||||||
@ -179,10 +179,13 @@ class TaskViewModel @Inject constructor(
|
|||||||
task.status = item.status
|
task.status = item.status
|
||||||
task.currentSize = item.currentSize
|
task.currentSize = item.currentSize
|
||||||
task.hadLinkDvoList = item.hadLinkDvoList
|
task.hadLinkDvoList = item.hadLinkDvoList
|
||||||
|
task.syncStatus = item.syncStatus
|
||||||
//已上传后不在更新操作时间
|
//已上传后不在更新操作时间
|
||||||
if (task.syncStatus != FileManager.Companion.FileUploadStatus.DONE) {
|
if (task.syncStatus != FileManager.Companion.FileUploadStatus.DONE) {
|
||||||
//赋值时间,用于查询过滤
|
//赋值时间,用于查询过滤
|
||||||
task.operationTime = DateTimeUtil.getNowDate().time
|
task.operationTime = DateTimeUtil.getNowDate().time
|
||||||
|
}else{//已上传数据不做更新
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (hadLink in task.hadLinkDvoList) {
|
for (hadLink in task.hadLinkDvoList) {
|
||||||
@ -228,7 +231,7 @@ class TaskViewModel @Inject constructor(
|
|||||||
* 获取任务列表
|
* 获取任务列表
|
||||||
*/
|
*/
|
||||||
private suspend fun getLocalTaskList() {
|
private suspend fun getLocalTaskList() {
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
//过滤掉已上传的超过90天的数据
|
//过滤掉已上传的超过90天的数据
|
||||||
val nowTime: Long = DateTimeUtil.getNowDate().time
|
val nowTime: Long = DateTimeUtil.getNowDate().time
|
||||||
val beginNowTime: Long = nowTime - 90 * 3600 * 24 * 1000L
|
val beginNowTime: Long = nowTime - 90 * 3600 * 24 * 1000L
|
||||||
@ -365,7 +368,7 @@ class TaskViewModel @Inject constructor(
|
|||||||
item.reason = text
|
item.reason = text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
realm.executeTransaction { r ->
|
realm.executeTransaction { r ->
|
||||||
r.copyToRealmOrUpdate(it)
|
r.copyToRealmOrUpdate(it)
|
||||||
}
|
}
|
||||||
@ -382,7 +385,7 @@ class TaskViewModel @Inject constructor(
|
|||||||
if (filterTaskListJob != null) filterTaskListJob!!.cancel()
|
if (filterTaskListJob != null) filterTaskListJob!!.cancel()
|
||||||
filterTaskListJob = viewModelScope.launch(Dispatchers.IO) {
|
filterTaskListJob = viewModelScope.launch(Dispatchers.IO) {
|
||||||
delay(500)
|
delay(500)
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
val list = realm.where(TaskBean::class.java).contains("evaluationTaskName", key).or()
|
val list = realm.where(TaskBean::class.java).contains("evaluationTaskName", key).or()
|
||||||
.contains("dataVersion", key).or().contains("cityName", key).findAll()
|
.contains("dataVersion", key).or().contains("cityName", key).findAll()
|
||||||
liveDataTaskList.postValue(realm.copyFromRealm(list))
|
liveDataTaskList.postValue(realm.copyFromRealm(list))
|
||||||
@ -419,7 +422,7 @@ class TaskViewModel @Inject constructor(
|
|||||||
) { dialog, _ ->
|
) { dialog, _ ->
|
||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
realm.executeTransaction {
|
realm.executeTransaction {
|
||||||
val objects =
|
val objects =
|
||||||
it.where(TaskBean::class.java).equalTo("id", taskBean.id).findFirst()
|
it.where(TaskBean::class.java).equalTo("id", taskBean.id).findFirst()
|
||||||
@ -467,7 +470,7 @@ class TaskViewModel @Inject constructor(
|
|||||||
|
|
||||||
fun checkUploadTask(context: Context, taskBean: TaskBean) {
|
fun checkUploadTask(context: Context, taskBean: TaskBean) {
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
var result = 0
|
var result = 0
|
||||||
val map: MutableMap<TaskBean, Boolean> = HashMap<TaskBean, Boolean>()
|
val map: MutableMap<TaskBean, Boolean> = HashMap<TaskBean, Boolean>()
|
||||||
taskBean.hadLinkDvoList.forEach { hadLinkDvoBean ->
|
taskBean.hadLinkDvoList.forEach { hadLinkDvoBean ->
|
||||||
@ -563,7 +566,7 @@ class TaskViewModel @Inject constructor(
|
|||||||
currentSelectTaskBean!!.hadLinkDvoList.add(
|
currentSelectTaskBean!!.hadLinkDvoList.add(
|
||||||
hadLinkDvoBean
|
hadLinkDvoBean
|
||||||
)
|
)
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
realm.executeTransaction { r ->
|
realm.executeTransaction { r ->
|
||||||
r.copyToRealmOrUpdate(hadLinkDvoBean)
|
r.copyToRealmOrUpdate(hadLinkDvoBean)
|
||||||
r.copyToRealmOrUpdate(currentSelectTaskBean!!)
|
r.copyToRealmOrUpdate(currentSelectTaskBean!!)
|
||||||
@ -621,7 +624,7 @@ class TaskViewModel @Inject constructor(
|
|||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
|
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = realmOperateHelper.getRealmDefaultInstance()
|
||||||
|
|
||||||
//重置数据为隐藏
|
//重置数据为隐藏
|
||||||
if (hadLinkDvoBean.linkStatus == 2) {
|
if (hadLinkDvoBean.linkStatus == 2) {
|
||||||
|
|||||||
@ -527,7 +527,7 @@ class NaviEngine(
|
|||||||
private suspend fun matchingItem() {
|
private suspend fun matchingItem() {
|
||||||
|
|
||||||
if (routeIndex > -1 && tempRoutList.isNotEmpty() && tempGeometry != null) {
|
if (routeIndex > -1 && tempRoutList.isNotEmpty() && tempGeometry != null) {
|
||||||
Log.e("jingo", "当前${routeIndex} ${tempRoutList[0].startIndexInPath} $footIndex")
|
// Log.e("jingo", "当前${routeIndex} ${tempRoutList[0].startIndexInPath} $footIndex")
|
||||||
//道路前方一定距离范围内的要素信息
|
//道路前方一定距离范围内的要素信息
|
||||||
val bindingItemList = mutableListOf<NaviRouteItem>()
|
val bindingItemList = mutableListOf<NaviRouteItem>()
|
||||||
//定位点到要素的路径距离
|
//定位点到要素的路径距离
|
||||||
|
|||||||
@ -85,6 +85,13 @@ class SignUtil {
|
|||||||
if (data.properties["conAccess"] === "1") "全封闭" else ""
|
if (data.properties["conAccess"] === "1") "全封闭" else ""
|
||||||
}
|
}
|
||||||
//匝道
|
//匝道
|
||||||
|
DataCodeEnum.OMDB_RAMP_1.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_2.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_3.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_4.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_5.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_6.code,
|
||||||
|
DataCodeEnum.OMDB_RAMP_7.code,
|
||||||
DataCodeEnum.OMDB_RAMP.code -> {
|
DataCodeEnum.OMDB_RAMP.code -> {
|
||||||
when (data.properties["formOfWay"]) {
|
when (data.properties["formOfWay"]) {
|
||||||
"93" -> "普通匝"
|
"93" -> "普通匝"
|
||||||
@ -110,6 +117,8 @@ class SignUtil {
|
|||||||
if (data.properties["multiDigitized"] == "1") "上下线" else " "
|
if (data.properties["multiDigitized"] == "1") "上下线" else " "
|
||||||
}
|
}
|
||||||
//桥
|
//桥
|
||||||
|
DataCodeEnum.OMDB_BRIDGE_1.code,//桥
|
||||||
|
DataCodeEnum.OMDB_BRIDGE_2.code,//桥
|
||||||
DataCodeEnum.OMDB_BRIDGE.code -> {
|
DataCodeEnum.OMDB_BRIDGE.code -> {
|
||||||
when (data.properties["bridgeType"]) {
|
when (data.properties["bridgeType"]) {
|
||||||
"1" -> return "固定桥"
|
"1" -> return "固定桥"
|
||||||
|
|||||||
78
app/src/main/res/layout/dialog_time_layout.xml
Normal file
78
app/src/main/res/layout/dialog_time_layout.xml
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@color/white"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="vertical"
|
||||||
|
tools:context="com.navinfo.omqs.ui.dialog.TimeDialog">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:padding="5dp"
|
||||||
|
android:text="请选择时间"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:background="@color/gray"
|
||||||
|
android:gravity="center"
|
||||||
|
/>
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<DatePicker
|
||||||
|
android:id="@+id/time_dialog_data_picker"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
|
<TimePicker
|
||||||
|
android:id="@+id/time_dialog_time_picker"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent" />
|
||||||
|
</LinearLayout>
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:background="@color/gray"
|
||||||
|
android:gravity="center"
|
||||||
|
/>
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/time_dialog_cancel"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:padding="5dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center"
|
||||||
|
android:textColor="@color/red"
|
||||||
|
android:text="取消"
|
||||||
|
android:textSize="18sp" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="1dp"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@color/gray"
|
||||||
|
android:gravity="center"
|
||||||
|
/>
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/time_dialog_ok"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:padding="5dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center"
|
||||||
|
android:textColor="@color/blue"
|
||||||
|
android:text="确定"
|
||||||
|
android:textSize="18sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
@ -59,7 +59,7 @@
|
|||||||
<item
|
<item
|
||||||
android:id="@+id/personal_center_menu_version"
|
android:id="@+id/personal_center_menu_version"
|
||||||
android:icon="@drawable/ic_baseline_layers_24"
|
android:icon="@drawable/ic_baseline_layers_24"
|
||||||
android:title="版本:23QE4_V1.5.5_20230927_A" />
|
android:title="版本:23QE4_V1.5.6_20230928_A" />
|
||||||
</group>
|
</group>
|
||||||
<group android:checkableBehavior="single">
|
<group android:checkableBehavior="single">
|
||||||
<item android:title="小标题">
|
<item android:title="小标题">
|
||||||
@ -81,6 +81,12 @@
|
|||||||
android:icon="@drawable/baseline_person_24"
|
android:icon="@drawable/baseline_person_24"
|
||||||
android:visible="true"
|
android:visible="true"
|
||||||
android:title="测试" />
|
android:title="测试" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/personal_center_menu_location_test"
|
||||||
|
android:icon="@drawable/baseline_person_24"
|
||||||
|
android:visible="true"
|
||||||
|
android:title="导航定位测试"
|
||||||
|
/>
|
||||||
</menu>
|
</menu>
|
||||||
</item>
|
</item>
|
||||||
</group>
|
</group>
|
||||||
|
|||||||
@ -2020,7 +2020,7 @@
|
|||||||
|
|
||||||
<!-- 箭头 -->
|
<!-- 箭头 -->
|
||||||
<m v="OMDB_OBJECT_ARROW">
|
<m v="OMDB_OBJECT_ARROW">
|
||||||
<area use="obj-area" stroke="#ffffff" repeat="false" src="@src" longEdge="n" hasDirect="true"></area>
|
<area use="obj-area" stroke="#00000000" repeat="false" src="@src" longEdge="n" hasDirect="true"></area>
|
||||||
</m>
|
</m>
|
||||||
|
|
||||||
<!-- 道路施工 -->
|
<!-- 道路施工 -->
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import androidx.room.Update;
|
|||||||
|
|
||||||
import com.navinfo.collect.library.data.entity.Element;
|
import com.navinfo.collect.library.data.entity.Element;
|
||||||
import com.navinfo.collect.library.data.entity.NiLocation;
|
import com.navinfo.collect.library.data.entity.NiLocation;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ -42,13 +43,16 @@ public interface INiLocationDao {
|
|||||||
List<NiLocation> findList(int minx, int maxx, int miny, int maxy);
|
List<NiLocation> findList(int minx, int maxx, int miny, int maxy);
|
||||||
|
|
||||||
@Query("SELECT * FROM niLocation where tilex>=:minx and tilex<=:maxx and tiley>=:miny and tiley <=:maxy and time>=:startTime and time<=:endTime")
|
@Query("SELECT * FROM niLocation where tilex>=:minx and tilex<=:maxx and tiley>=:miny and tiley <=:maxy and time>=:startTime and time<=:endTime")
|
||||||
List<NiLocation> timeTofindList(int minx, int maxx, int miny, int maxy,long startTime,long endTime);
|
List<NiLocation> timeTofindList(int minx, int maxx, int miny, int maxy, long startTime, long endTime);
|
||||||
|
|
||||||
@Query("SELECT * FROM niLocation")
|
@Query("SELECT * FROM niLocation")
|
||||||
List<NiLocation> findAll();
|
List<NiLocation> findAll();
|
||||||
|
|
||||||
@Query("SELECT * FROM niLocation where time>=:startTime and time<=:endTime and taskId=:taskId")
|
@Query("SELECT * FROM niLocation where time>=:startTime and time<=:endTime and taskId=:taskId")
|
||||||
List<NiLocation> taskIdAndTimeTofindList(String taskId,long startTime,long endTime);
|
List<NiLocation> taskIdAndTimeTofindList(String taskId, long startTime, long endTime);
|
||||||
|
|
||||||
|
@Query("SELECT * FROM niLocation where timeStamp>:startTime limit:limit ")
|
||||||
|
List<NiLocation> findListWithStartTime(long startTime, int limit);
|
||||||
|
|
||||||
@Query("SELECT * FROM niLocation where taskId =:taskId")
|
@Query("SELECT * FROM niLocation where taskId =:taskId")
|
||||||
List<NiLocation> findToTaskIdAll(String taskId);
|
List<NiLocation> findToTaskIdAll(String taskId);
|
||||||
|
|||||||
@ -37,6 +37,9 @@ enum class DataCodeEnum(var tableName: String, var code: String) {
|
|||||||
OMDB_RDBOUND_BOUNDARYTYPE("道路边界类型", "2083"),
|
OMDB_RDBOUND_BOUNDARYTYPE("道路边界类型", "2083"),
|
||||||
OMDB_LANE_CONSTRUCTION("车道施工", "2090"),
|
OMDB_LANE_CONSTRUCTION("车道施工", "2090"),
|
||||||
OMDB_BRIDGE("桥", "2201"),
|
OMDB_BRIDGE("桥", "2201"),
|
||||||
|
OMDB_BRIDGE_1("固定桥", "2201-1"),
|
||||||
|
OMDB_BRIDGE_2("可移动桥", "2201-2"),
|
||||||
|
OMDB_BRIDGE_3("跨线天桥", "2201-2"),
|
||||||
OMDB_TUNNEL("隧道", "2202"),
|
OMDB_TUNNEL("隧道", "2202"),
|
||||||
OMDB_ROUNDABOUT("环岛", "2204"),
|
OMDB_ROUNDABOUT("环岛", "2204"),
|
||||||
OMDB_LINK_FORM1("道路形态1", "2205"),
|
OMDB_LINK_FORM1("道路形态1", "2205"),
|
||||||
|
|||||||
@ -26,6 +26,11 @@ class LocationLayerHandler(context: AppCompatActivity, mapView: NIMapView) :
|
|||||||
private var bFirst = true
|
private var bFirst = true
|
||||||
private val mLocationLayer: LocationLayer = LocationLayer(mMapView.vtmMap)
|
private val mLocationLayer: LocationLayer = LocationLayer(mMapView.vtmMap)
|
||||||
private lateinit var locationClient: LocationClient
|
private lateinit var locationClient: LocationClient
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 定位测试
|
||||||
|
*/
|
||||||
|
private var naviLocationTest = false
|
||||||
// private var niLocationListener: NiLocationListener by lazy{
|
// private var niLocationListener: NiLocationListener by lazy{
|
||||||
//
|
//
|
||||||
// }
|
// }
|
||||||
@ -64,6 +69,10 @@ class LocationLayerHandler(context: AppCompatActivity, mapView: NIMapView) :
|
|||||||
//获取经纬度坐标类型,以LocationClientOption中设置过的坐标类型为准
|
//获取经纬度坐标类型,以LocationClientOption中设置过的坐标类型为准
|
||||||
// val coorType = it.coorType
|
// val coorType = it.coorType
|
||||||
//获取定位类型、定位错误返回码,具体信息可参照类参考中BDLocation类中的说明
|
//获取定位类型、定位错误返回码,具体信息可参照类参考中BDLocation类中的说明
|
||||||
|
//定位测试开始,后续不再处理
|
||||||
|
if (naviLocationTest)
|
||||||
|
return@MyLocationListener
|
||||||
|
|
||||||
val errorCode = it.locType
|
val errorCode = it.locType
|
||||||
mCurrentLocation = it
|
mCurrentLocation = it
|
||||||
mLocationLayer.setPosition(it.latitude, it.longitude, it.radius)
|
mLocationLayer.setPosition(it.latitude, it.longitude, it.radius)
|
||||||
@ -215,7 +224,7 @@ private class MyLocationListener(callback: (BDLocation) -> Unit) : BDAbstractLoc
|
|||||||
val call = callback;
|
val call = callback;
|
||||||
override fun onReceiveLocation(location: BDLocation) {
|
override fun onReceiveLocation(location: BDLocation) {
|
||||||
call(location)
|
call(location)
|
||||||
Log.e("jingo", "定位结果:速度=" + location.speed +" 方向=" + location.direction)
|
Log.e("jingo", "定位结果:速度=" + location.speed + " 方向=" + location.direction)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user