修改数据上传

This commit is contained in:
squallzhjch 2023-10-11 14:13:51 +08:00
parent 887ee7f2e4
commit f3ed4f3f72
18 changed files with 319 additions and 110 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
} }
@ -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,6 +33,7 @@ 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
@ -142,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,13 +205,18 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?
indoorDataListener?.invoke(true) indoorDataListener?.invoke(true)
} }
//导航定位测试 //导航定位测试
R.id.personal_center_menu_location_test ->{ R.id.personal_center_menu_location_test -> {
// viewModel. val dialog = TimeDialog(
requireContext(),
)
dialog.show()
} }
} }
true true
} }
viewModel.liveDataMessage.observe(viewLifecycleOwner) { viewModel.liveDataMessage.observe(viewLifecycleOwner) {
ToastUtils.showShort(it) ToastUtils.showShort(it)
} }
@ -228,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 {

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) {
@ -228,7 +228,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 +365,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 +382,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 +419,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 +467,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 +563,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 +621,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>