Conflicts:
	vtm
This commit is contained in:
qiji4215 2023-10-11 14:28:09 +08:00
commit fe8790440c
19 changed files with 330 additions and 112 deletions

View File

@ -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 = "",//问题类型

View File

@ -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() {

View File

@ -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销毁的时候同时销毁

View File

@ -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

View File

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

View File

@ -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,21 @@ 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", "数据下载更新状态 任务link数量${taskBean.hadLinkDvoList.size}")
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.errMsg = taskBean.errMsg
//赋值时间,用于查询过滤
it.operationTime = taskBean.operationTime
r.copyToRealmOrUpdate(it)
taskBean = realm.copyFromRealm(it)
}
}
realm.close() realm.close()
} }
} }
@ -148,7 +161,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()
} }
} }

View File

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

View File

@ -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 = "") {
if (taskBean.syncStatus != status) { launch {
taskBean.syncStatus = status if (taskBean.syncStatus != status) {
taskBean.errMsg = message taskBean.syncStatus = status
//赋值时间,用于查询过滤 taskBean.errMsg = message
taskBean.operationTime = DateTimeUtil.getNowDate().time //赋值时间,用于查询过滤
uploadData.postValue(taskBean) taskBean.operationTime = DateTimeUtil.getNowDate().time
//同步中不进行状态记录,只做界面变更显示 //同步中不进行状态记录,只做界面变更显示
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 = "",
@ -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,14 +195,20 @@ 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 roadClassfcation = 0
@ -196,8 +222,10 @@ class TaskUploadScope(
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,
@ -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 {
} }
} }

View File

@ -366,7 +366,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)

View File

@ -0,0 +1,42 @@
package com.navinfo.omqs.ui.dialog
import android.app.Dialog
import android.content.Context
import android.os.Bundle
import android.view.View
import android.widget.DatePicker
import android.widget.TextView
import android.widget.TimePicker
import com.navinfo.omqs.R
interface OnTimeDialogListener {
}
class TimeDialog(context: Context) : 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)
}
override fun onClick(v: View) {
when (v.id) {
R.id.time_dialog_ok -> {
// dataPicker.
dismiss()
}
R.id.time_dialog_cancel -> {
dismiss()
}
}
}
}

View File

@ -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

View File

@ -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) {

View File

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

View File

@ -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,12 @@ 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.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
/** /**
@ -143,7 +146,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?
niMapController.mMapView.vtmMap.eventLayer.enableTilt(Constant.MapRotateEnable) niMapController.mMapView.vtmMap.eventLayer.enableTilt(Constant.MapRotateEnable)
niMapController.mMapView.vtmMap.eventLayer.enableRotation(Constant.MapRotateEnable) niMapController.mMapView.vtmMap.eventLayer.enableRotation(Constant.MapRotateEnable)
Constant.MapRotateEnable = !Constant.MapRotateEnable Constant.MapRotateEnable = !Constant.MapRotateEnable
if (Constant.MapRotateEnable) { if (Constant.MapRotateEnable) {
val mapPosition: MapPosition = val mapPosition: MapPosition =
niMapController.mMapView.vtmMap.getMapPosition() niMapController.mMapView.vtmMap.getMapPosition()
mapPosition.setBearing(0f) // 锁定角度,自动将地图旋转到正北方向 mapPosition.setBearing(0f) // 锁定角度,自动将地图旋转到正北方向
@ -201,10 +204,19 @@ 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 -> {
val dialog = TimeDialog(
requireContext(),
)
dialog.show()
}
} }
true true
} }
viewModel.liveDataMessage.observe(viewLifecycleOwner) { viewModel.liveDataMessage.observe(viewLifecycleOwner) {
ToastUtils.showShort(it) ToastUtils.showShort(it)
} }
@ -225,7 +237,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 +256,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 +277,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()

View File

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

View File

@ -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)

View File

@ -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) {
@ -231,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
@ -368,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)
} }
@ -385,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))
@ -422,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()
@ -470,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 ->
@ -566,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!!)
@ -624,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) {

View File

@ -0,0 +1,76 @@
<?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">
<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:text="取消"
android:textSize="18sp" />
<View
android:layout_width="1dp"
android:layout_height="20dp"
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>

View File

@ -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>