From 884ec8a583d2761d4f66a7e058ea2a5552dcf564 Mon Sep 17 00:00:00 2001 From: qiji4215 <qiji4215@navinfo.com> Date: Wed, 18 Oct 2023 14:13:55 +0800 Subject: [PATCH 1/5] merge code --- .../ui/fragment/tasklist/TaskListFragment.kt | 23 ++++++-- .../ui/fragment/tasklist/TaskViewModel.kt | 56 +++++++++++++++++++ 2 files changed, 73 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListFragment.kt index 6d70679d..5fa3f914 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListFragment.kt @@ -89,8 +89,15 @@ class TaskListFragment : BaseFragment() { deleteItem.background = requireContext().getDrawable(R.color.red) deleteItem.setTextColor(requireContext().resources.getColor(R.color.white)) rightMenu.addMenuItem(deleteItem) - } + val resetDownLoad = SwipeMenuItem(context) + resetDownLoad.height = Util.convertDpToPx(requireContext(), 60) + resetDownLoad.width = Util.convertDpToPx(requireContext(), 80) + resetDownLoad.text = "重新下载" + resetDownLoad.background = requireContext().getDrawable(R.color.btn_bg_blue) + resetDownLoad.setTextColor(requireContext().resources.getColor(R.color.white)) + rightMenu.addMenuItem(resetDownLoad) + } val layoutManager = LinearLayoutManager(context) //// 设置 RecyclerView 的固定大小,避免在滚动时重新计算视图大小和布局,提高性能 @@ -104,11 +111,15 @@ class TaskListFragment : BaseFragment() { binding.taskListRecyclerview.setOnItemMenuClickListener { menuBridge, position -> menuBridge.closeMenu() val taskBean = adapter.data[position] - if (taskBean.syncStatus != FileManager.Companion.FileUploadStatus.DONE) { - Toast.makeText(context, "数据未上传,不允许关闭!", Toast.LENGTH_SHORT) - .show() - } else { - viewModel.removeTask(requireContext(), taskBean) + if(menuBridge.position==0){ + if (taskBean.syncStatus != FileManager.Companion.FileUploadStatus.DONE) { + Toast.makeText(context, "数据未上传,不允许关闭!", Toast.LENGTH_SHORT) + .show() + } else { + viewModel.removeTask(requireContext(), taskBean) + } + }else{ + viewModel.resetDownload(requireContext(), taskBean) } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt index 358f63c7..682849a0 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt @@ -410,6 +410,62 @@ class TaskViewModel @Inject constructor( } } + /** + * 重新下载数据任务 + */ + fun resetDownload(context: Context, taskBean: TaskBean){ + val mDialog = FirstDialog(context) + mDialog.setTitle("提示?") + mDialog.setMessage("是否重置下载状态,请确认!") + mDialog.setPositiveButton( + "确定" + ) { dialog, _ -> + dialog.dismiss() + viewModelScope.launch(Dispatchers.IO) { + //删除已下载的数据 + val fileTemp = File("${Constant.DOWNLOAD_PATH}${taskBean.evaluationTaskName}_${taskBean.dataVersion}.zip") + if(fileTemp.exists()){ + fileTemp.deleteOnExit() + } + val taskFileTemp = File(Constant.USER_DATA_PATH + "/${taskBean.id}") + //重命名 + if(taskFileTemp.exists()){ + taskFileTemp.renameTo(File(Constant.USER_DATA_PATH + "/${taskBean.id}-back-${DateTimeUtil.getNowDate().time}")) + } + //将下载状态修改已下载 + val realm = realmOperateHelper.getRealmDefaultInstance() + taskBean.syncStatus = FileManager.Companion.FileUploadStatus.NONE + taskBean.status = FileManager.Companion.FileDownloadStatus.NONE + realm.executeTransaction { r -> + r.copyToRealmOrUpdate(taskBean) + } + val nowTime: Long = DateTimeUtil.getNowDate().time + val beginNowTime: Long = nowTime - 90 * 3600 * 24 * 1000L + val syncUpload: Int = FileManager.Companion.FileUploadStatus.DONE + val objects = + realm.where(TaskBean::class.java).notEqualTo("syncStatus", syncUpload).or() + .between("operationTime", beginNowTime, nowTime) + .equalTo("syncStatus", syncUpload).findAll() + val taskList = realm.copyFromRealm(objects) + for (item in taskList) { + FileManager.checkOMDBFileInfo(item) + } + liveDataTaskList.postValue(taskList) + realm.close() + withContext(Dispatchers.Main) { + setSelectTaskBean(taskBean) + } + } + } + mDialog.setNegativeButton( + "取消" + ) { _, _ -> + liveDataCloseTask.postValue(false) + mDialog.dismiss() + } + mDialog.show() + } + /** * 关闭任务 */ From 172d84f8c2f80406f33172d5ee97ac224be000cd Mon Sep 17 00:00:00 2001 From: qiji4215 <qiji4215@navinfo.com> Date: Tue, 24 Oct 2023 17:53:46 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BD=A8=E8=BF=B9?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/omdb_config.json | 13 +- .../main/java/com/navinfo/omqs/Constant.kt | 10 + .../java/com/navinfo/omqs/OMQSApplication.kt | 2 + .../com/navinfo/omqs/db/ImportOMDBHelper.kt | 4 + .../com/navinfo/omqs/db/ImportPreProcess.kt | 10 +- .../omqs/ui/activity/login/LoginViewModel.kt | 3 + .../omqs/ui/activity/map/MainViewModel.kt | 8 +- .../omqs/ui/activity/map/SignAdapter.kt | 2 + .../personalcenter/PersonalCenterFragment.kt | 20 +- .../ui/fragment/tasklist/TaskViewModel.kt | 18 +- .../java/com/navinfo/omqs/util/CMLog.java | 349 ++++++++++++++++++ .../java/com/navinfo/omqs/util/NaviEngine.kt | 1 + .../java/com/navinfo/omqs/util/SignUtil.kt | 10 +- .../main/res/menu/personal_center_menu.xml | 9 +- .../src/main/assets/editormarker.xml | 16 +- .../src/main/assets/omdb/icon_2013_0.svg | 19 +- .../src/main/assets/omdb/icon_2013_1.svg | 19 +- .../src/main/assets/omdb/icon_2013_2.svg | 19 +- .../src/main/assets/omdb/icon_2013_6.svg | 19 +- .../src/main/assets/omdb/icon_2013_7.svg | 19 +- .../collect/library/enums/DataCodeEnum.kt | 1 + .../map/handler/LocationLayerHandler.kt | 2 +- .../library/map/handler/MarkHandler.kt | 42 ++- 23 files changed, 520 insertions(+), 95 deletions(-) create mode 100644 app/src/main/java/com/navinfo/omqs/util/CMLog.java diff --git a/app/src/main/assets/omdb_config.json b/app/src/main/assets/omdb_config.json index fd12c971..ef5df669 100644 --- a/app/src/main/assets/omdb_config.json +++ b/app/src/main/assets/omdb_config.json @@ -125,11 +125,6 @@ "zoomMin": 15, "zoomMax": 17 }, - "2041":{ - "table": "OMDB_LANE_NUM", - "code": 2041, - "name": "车道数" - }, "2097":{ "table": "OMDB_PHY_LANENUM", "code": 2097, @@ -533,12 +528,6 @@ "zoomMin": 15, "zoomMax": 17, "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "translateRight(direct=3)" - }, { "k": "geometry", "v": "~", @@ -643,4 +632,4 @@ } } -] \ No newline at end of file +] diff --git a/app/src/main/java/com/navinfo/omqs/Constant.kt b/app/src/main/java/com/navinfo/omqs/Constant.kt index a0decc44..9ee9f307 100644 --- a/app/src/main/java/com/navinfo/omqs/Constant.kt +++ b/app/src/main/java/com/navinfo/omqs/Constant.kt @@ -79,6 +79,11 @@ class Constant { */ lateinit var DOWNLOAD_PATH: String + /** + * 日志目录 + */ + lateinit var USER_DATA_LOG_PATH: String + /** * 图层管理对应的配置 * */ @@ -107,6 +112,11 @@ class Constant { */ var MapMarkerCloseEnable = false + /** + * 轨迹显隐 + */ + var MapTraceCloseEnable = false + /** * 是否开启线捕捉 */ diff --git a/app/src/main/java/com/navinfo/omqs/OMQSApplication.kt b/app/src/main/java/com/navinfo/omqs/OMQSApplication.kt index 2a35c533..5e2238e4 100644 --- a/app/src/main/java/com/navinfo/omqs/OMQSApplication.kt +++ b/app/src/main/java/com/navinfo/omqs/OMQSApplication.kt @@ -8,6 +8,7 @@ import android.view.Surface import android.view.WindowManager import com.navinfo.omqs.tools.FileManager import com.navinfo.omqs.ui.manager.TakePhotoManager +import com.navinfo.omqs.util.CMLog import com.navinfo.omqs.util.NetUtils import com.umeng.commonsdk.UMConfigure import dagger.hilt.android.HiltAndroidApp @@ -20,6 +21,7 @@ class OMQSApplication : Application() { super.onCreate() FileManager.initRootDir(this) Util.getInstance().init(applicationContext) + CMLog.getInstance().init(applicationContext) NetUtils.getInstance().init(this) TakePhotoManager.getInstance().init(this, 1) // 初始化友盟统计 diff --git a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt index 5bffc6d3..2a26856d 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt @@ -327,6 +327,10 @@ class ImportOMDBHelper @AssistedInject constructor( } DataCodeEnum.OMDB_LANE_MARK_BOUNDARYTYPE.code.toInt() -> { + var featurePid = renderEntity.properties["featurePid"] + if(featurePid!="135340259623248665"){ + continue + } var boundaryType = renderEntity.properties["boundaryType"] if (boundaryType != null) { when (boundaryType.toInt()) { diff --git a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt index c2e842ef..3e3c0cb7 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt @@ -485,10 +485,12 @@ class ImportPreProcess { renderEntityTemp.catchEnable = renderEntity.catchEnable var dis = -lateralOffset.toDouble() / 100000000 //最小值取10厘米,否正渲染太近无法显示 - if (dis > 0 && dis < 0.0000028) { - dis = 0.0000028 - } else if (dis > -0.0000028 && dis < 0) { - dis = -0.0000028 + if (dis > 0 && dis < 0.000005) { + dis = 0.000005 + Log.d("lateralOffset", "$dis") + } else if (dis > -0.000005 && dis < 0) { + dis = -0.000005 + Log.d("lateralOffset", "$dis") } renderEntityTemp.geometry = GeometryTools.computeLine( dis, diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt index 037b2e97..fe1007b4 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt @@ -418,12 +418,15 @@ class LoginViewModel @Inject constructor( Constant.VERSION_ID = userId Constant.USER_DATA_PATH = Constant.DATA_PATH + Constant.USER_ID + "/" + Constant.VERSION_ID Constant.USER_DATA_ATTACHEMNT_PATH = Constant.USER_DATA_PATH + "/attachment/" + Constant.USER_DATA_LOG_PATH = Constant.USER_DATA_PATH + "/log/" // 在SD卡创建用户目录,解压资源等 val userFolder = File(Constant.USER_DATA_PATH) if (!userFolder.exists()) userFolder.mkdirs() //创建附件目录 val userAttachmentFolder = File(Constant.USER_DATA_ATTACHEMNT_PATH) if (!userAttachmentFolder.exists()) userAttachmentFolder.mkdirs() + val userLogFolder = File(Constant.USER_DATA_LOG_PATH) + if (!userLogFolder.exists()) userLogFolder.mkdirs() // 初始化Realm Realm.init(context.applicationContext) // 656e6372797000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt index de2cde10..2d628cbf 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt @@ -23,6 +23,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import androidx.navigation.findNavController import com.blankj.utilcode.util.ToastUtils +import com.google.gson.Gson import com.navinfo.collect.library.data.dao.impl.TraceDataBase import com.navinfo.collect.library.data.entity.* import com.navinfo.collect.library.enums.DataCodeEnum @@ -535,6 +536,7 @@ class MainViewModel @Inject constructor( * 初始化定位信息 */ private fun initLocation() { + var gson = Gson(); //用于定位点存储到数据库 viewModelScope.launch(Dispatchers.Default) { @@ -590,10 +592,14 @@ class MainViewModel @Inject constructor( } //室内整理工具时不能进行轨迹存储,判断轨迹间隔要超过2.5并小于60米 if (Constant.INDOOR_IP.isEmpty() && (disance == 0.0 || (disance > 2.5 && disance < 60))) { + Log.e("jingo", "轨迹插入开始") + CMLog.writeLogtoFile(MainViewModel::class.java.name,"insertTrace","开始") traceDataBase.niLocationDao.insert(location) mapController.markerHandle.addNiLocationMarkerItem(location) mapController.mMapView.vtmMap.updateMap(true) lastNiLocaion = location + CMLog.writeLogtoFile(MainViewModel::class.java.name,"insertTrace",gson.toJson(location)) + Log.e("jingo", "轨迹插入结束") } } } @@ -980,7 +986,7 @@ class MainViewModel @Inject constructor( fun onClickLocationButton() { val mapPosition: MapPosition = mapController.mMapView.vtmMap.getMapPosition() mapPosition.setBearing(0f) // 锁定角度,自动将地图旋转到正北方向 - mapController.mMapView.vtmMap.setMapPosition(mapPosition) + mapController.mMapView.vtmMap.mapPosition = mapPosition mapController.locationLayerHandler.animateToCurrentPosition() } diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/SignAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/SignAdapter.kt index a12f81a1..9c09dce6 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/SignAdapter.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/SignAdapter.kt @@ -37,6 +37,8 @@ class SignAdapter(private var listener: OnSignAdapterClickListener?) : override fun getItemViewType(position: Int): Int { if (data.isNotEmpty() && data[position].renderEntity.code == DataCodeEnum.OMDB_LANEINFO.code) { return 4601 + }else if (data.isNotEmpty() && data[position].renderEntity.code == DataCodeEnum.OMDB_CLM_LANEINFO.code) { + return 4602 } else if (data.isNotEmpty() && data[position].renderEntity.code == DataCodeEnum.OMDB_TOLLGATE.code) { return 4023 } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt index ddf80f33..d4fac71e 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt @@ -151,7 +151,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? val mapPosition: MapPosition = niMapController.mMapView.vtmMap.getMapPosition() mapPosition.setBearing(0f) // 锁定角度,自动将地图旋转到正北方向 - niMapController.mMapView.vtmMap.setMapPosition(mapPosition) + niMapController.mMapView.vtmMap.mapPosition = mapPosition it.title = "开启地图旋转及视角" } else { it.title = "锁定地图旋转及视角" @@ -168,6 +168,17 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? it.title = "隐藏Marker" } } + R.id.personal_center_menu_trace -> { + Constant.MapTraceCloseEnable = !Constant.MapTraceCloseEnable + //增加开关控制 + niMapController.markerHandle.setTraceMarkEnable(!Constant.MapTraceCloseEnable) + //增加开关控制 + if (Constant.MapTraceCloseEnable) { + it.title = "显示轨迹" + } else { + it.title = "隐藏轨迹" + } + } R.id.personal_center_menu_catch_all -> { Constant.CATCH_ALL = !Constant.CATCH_ALL if (Constant.CATCH_ALL) { @@ -258,6 +269,13 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? it.title = "隐藏Marker" } } + R.id.personal_center_menu_trace -> { + if (Constant.MapTraceCloseEnable) { + it.title = "显示轨迹" + } else { + it.title = "隐藏轨迹" + } + } } } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt index 682849a0..04416272 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt @@ -425,12 +425,20 @@ class TaskViewModel @Inject constructor( //删除已下载的数据 val fileTemp = File("${Constant.DOWNLOAD_PATH}${taskBean.evaluationTaskName}_${taskBean.dataVersion}.zip") if(fileTemp.exists()){ - fileTemp.deleteOnExit() + fileTemp.delete() } val taskFileTemp = File(Constant.USER_DATA_PATH + "/${taskBean.id}") //重命名 if(taskFileTemp.exists()){ - taskFileTemp.renameTo(File(Constant.USER_DATA_PATH + "/${taskBean.id}-back-${DateTimeUtil.getNowDate().time}")) + var currentSelectTaskFolder = File(Constant.USER_DATA_PATH + "/${taskBean.id}") + var currentSelectTaskConfig = + RealmConfiguration.Builder().directory(currentSelectTaskFolder) + .name("OMQS.realm").encryptionKey(Constant.PASSWORD).allowQueriesOnUiThread(true) + .schemaVersion(2).build() + //删除已有所有数据 + Realm.getInstance(currentSelectTaskConfig).deleteAll() + Realm.getInstance(currentSelectTaskConfig).refresh() + Realm.getInstance(currentSelectTaskConfig).close() } //将下载状态修改已下载 val realm = realmOperateHelper.getRealmDefaultInstance() @@ -453,7 +461,11 @@ class TaskViewModel @Inject constructor( liveDataTaskList.postValue(taskList) realm.close() withContext(Dispatchers.Main) { - setSelectTaskBean(taskBean) + if(taskBean.id== currentSelectTaskBean?.id ?: 0){ + mapController.layerManagerHandler.updateOMDBVectorTileLayer() + }else{ + setSelectTaskBean(taskBean) + } } } } diff --git a/app/src/main/java/com/navinfo/omqs/util/CMLog.java b/app/src/main/java/com/navinfo/omqs/util/CMLog.java new file mode 100644 index 00000000..4dff58e0 --- /dev/null +++ b/app/src/main/java/com/navinfo/omqs/util/CMLog.java @@ -0,0 +1,349 @@ +package com.navinfo.omqs.util; + +import android.app.ActivityManager; +import android.app.ActivityManager.MemoryInfo; +import android.content.Context; +import android.util.Log; + +import com.navinfo.omqs.Constant; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +/** + * 带日志文件输入的,又可控开关的日志调试 + * + * @author qj + * @version 1.0 + * @data 2016-8-23 + */ +public class CMLog { + //CrashHandler实例 + /** + * + */ + private static CMLog instance; + /** + * + */ + private static Boolean MYLOG_SWITCH = true; //日志文件总开关 + /** + * + */ + private static Boolean MYLOG_WRITE_TO_FILE = true;//日志写入文件开关 + /** + * + */ + private static char MYLOG_TYPE = 'v';//输入日志类型,w代表只输出告警信息等,v代表输出所有信息 +// private static String MYLOG_PATH_SDCARD_DIR = FMConstant.USER_DATA_LOG_PATH;// 日志文件在sdcard中的路径 + /** + * + */ + private static int SDCARD_LOG_FILE_SAVE_DAYS = 0;// sd卡中日志文件的最多保存天数 + /** + * + */ + private static String MYLOGFILEName = "Log.txt";// 本类输出的日志文件名称 + /** + * + */ + private static String STACKLOGFILEName = "StackLog.txt";// 本类输出的日志文件名称 + /** + * + */ + private static SimpleDateFormat myLogSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//日志的输出格式 + /** + * + */ + private static SimpleDateFormat logfile = new SimpleDateFormat("yyyy-MM-dd-HH");//日志文件格式 + /** + * + */ + private static Context mContext; + /** + * + */ + private static boolean flag; + /** + * + */ + private static int count = 0; + /** + * + */ + private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS"); + + /** + * 获取CrashHandler实例 ,单例模式 + * @return + */ + public static CMLog getInstance() { + if (instance == null) + instance = new CMLog(); + return instance; + } + + /** + * 初始化 + * @param context + */ + public void init(Context context) { + mContext = context; + } + + /** + * @param tag + * @param msg + */ + public static void w(String tag, Object msg) {//警告信息 + log(tag, msg.toString(), 'w'); + } + + /** + * @param tag + * @param msg + */ + public static void e(String tag, Object msg) {//错误信息 + log(tag, msg.toString(), 'e'); + } + + /** + * @param tag + * @param msg + */ + public static void d(String tag, Object msg) {//调试信息 + log(tag, msg.toString(), 'd'); + } + + /** + * @param tag + * @param msg + */ + public static void i(String tag, Object msg) {// + log(tag, msg.toString(), 'i'); + } + + /** + * @param tag + * @param msg + */ + public static void v(String tag, Object msg) { + log(tag, msg.toString(), 'v'); + } + + /** + * @param tag + * @param text + */ + public static void w(String tag, String text) { + log(tag, text, 'w'); + } + + /** + * @param tag + * @param text + */ + public static void e(String tag, String text) { + log(tag, text, 'e'); + } + + /** + * @param tag + * @param text + */ + public static void d(String tag, String text) { + log(tag, text, 'd'); + } + + /** + * @param tag + * @param text + */ + public static void i(String tag, String text) { + log(tag, text, 'i'); + } + + /** + * @param tag + * @param text + */ + public static void v(String tag, String text) { + log(tag, text, 'v'); + } + + /** + * 根据tag, msg和等级,输出日志 + * + * @param tag + * @param msg + * @param level + * @return void + * @since v 1.0 + */ + private static void log(String tag, String msg, char level) { + if (MYLOG_SWITCH) { + if ('e' == level && ('e' == MYLOG_TYPE || 'v' == MYLOG_TYPE)) { // 输出错误信息 + Log.e(tag, msg); + } else if ('w' == level && ('w' == MYLOG_TYPE || 'v' == MYLOG_TYPE)) { + Log.w(tag, msg); + } else if ('d' == level && ('d' == MYLOG_TYPE || 'v' == MYLOG_TYPE)) { + Log.d(tag, msg); + } else if ('i' == level && ('d' == MYLOG_TYPE || 'v' == MYLOG_TYPE)) { + Log.i(tag, msg); + } else { + Log.v(tag, msg); + } + if (MYLOG_WRITE_TO_FILE) + writeLogtoFile(String.valueOf(level), tag, msg); + } + } + + /** + * 打开日志文件并写入日志 + * + * @param mylogtype + * @param tag + * @param text + **/ + public static void writeLogtoFile(String mylogtype, String tag, String text) { + if (!flag&&MYLOG_WRITE_TO_FILE) { + flag = true; + try { + Log.e("jingo", "日志写入0"); + // 新建或打开日志文件 + Date nowtime = new Date(); + String needWriteFiel = logfile.format(nowtime); + // String needWriteMessage = myLogSdf.format(nowtime) + " " + mylogtype + String needWriteMessage = simpleDateFormat.format(nowtime) + " " + mylogtype + + " " + count + " " + tag + " " + text + "\r\n"; + //输出内存使用情况 + ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); + MemoryInfo memoryInfo = new MemoryInfo(); + activityManager.getMemoryInfo(memoryInfo); +/* needWriteMessage += " 系统剩余内存: " + (memoryInfo.availMem / 1024) + "(KB)\n"; + needWriteMessage += " 系统是否处于低内存运行: " + memoryInfo.lowMemory + "\n"; + needWriteMessage += " 当系统剩余内存低于: " + (memoryInfo.threshold / 1024) + "(KB)\n";*/ + if (new File(Constant.USER_DATA_LOG_PATH).exists() == false) { + new File(Constant.USER_DATA_LOG_PATH).mkdirs(); + } + File file = new File(Constant.USER_DATA_LOG_PATH, needWriteFiel + MYLOGFILEName); + Log.e("jingo", "日志写入1"); + + if (!file.exists()) + file.createNewFile(); + Log.e("jingo", "日志写入2"); + + FileWriter filerWriter = new FileWriter(file, true);//后面这个参数代表是不是要接上文件中原来的数据,不进行覆盖 + BufferedWriter bufWriter = new BufferedWriter(filerWriter); + bufWriter.write(needWriteMessage); + bufWriter.newLine(); + bufWriter.close(); + filerWriter.close(); + Log.e("jingo", "日志写入结束"); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } finally { + flag = false; + } + } + + count ++; + + if(count>10000){ + count = 0; + } + } + + /** + * 写入调用栈的信息,包括文件名,行号,接口名称 + * + * @param extMsg 扩展信息,如果不为NULL,则输出到栈信息之前 + */ + public static void writeStackLogtoFile(String extMsg) {// 新建或打开日志文件 + StackTraceElement[] eles = Thread.currentThread().getStackTrace(); + Date nowtime = new Date(); + String needWriteFiel = logfile.format(nowtime); + String needWriteMessage = "[Java Stack]:" + myLogSdf.format(nowtime) + "\n"; + + if(eles!=null&&eles.length>3){ + needWriteMessage += "\t file name :" + eles[3].getFileName() + "\n"; + needWriteMessage += "\t line num :" + eles[3].getLineNumber() + "\n"; + needWriteMessage += "\t class name:" + eles[3].getClassName() + "\n"; + needWriteMessage += "\t method :" + eles[3].getMethodName() + "\n"; + } + + if (extMsg != null && extMsg.length() > 0) { + needWriteMessage += "\t extMsg :" + extMsg + "\n"; + } + + if (new File(Constant.USER_DATA_LOG_PATH).exists() == false) { + new File(Constant.USER_DATA_LOG_PATH).mkdirs(); + } + File file = new File(Constant.USER_DATA_LOG_PATH, needWriteFiel + + STACKLOGFILEName); + try { + FileWriter filerWriter = new FileWriter(file, true);//后面这个参数代表是不是要接上文件中原来的数据,不进行覆盖 + BufferedWriter bufWriter = new BufferedWriter(filerWriter); + bufWriter.write(needWriteMessage); + bufWriter.newLine(); + bufWriter.close(); + filerWriter.close(); + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + /** + * 删除制定的日志文件 + */ + public static void delFile() {// 删除日志文件 + String needDelFiel = logfile.format(getDateBefore()); + File file = new File(Constant.USER_DATA_LOG_PATH, needDelFiel + MYLOGFILEName); + if (file.exists()) { + file.delete(); + } + } + + /** + * 得到现在时间前的几天日期,用来得到需要删除的日志文件名 + * @return + */ + private static Date getDateBefore() { + Date nowtime = new Date(); + Calendar now = Calendar.getInstance(); + now.setTime(nowtime); + now.set(Calendar.DATE, now.get(Calendar.DATE) + - SDCARD_LOG_FILE_SAVE_DAYS); + return now.getTime(); + } + + //输出错误日志 + + /** + * 得到现在时间前的几天日期,用来得到需要删除的日志文件名 + * @param e + * @param TAG + */ + public static void writeStackLogtoFile(Exception e, String TAG) { + String errorInfo = ""; + for (int i = 0; i < e.getStackTrace().length; i++) { + errorInfo += e.getStackTrace()[i]; + } + writeLogtoFile("异常崩溃", "异常", "异常信息:" + errorInfo); + } + + /** + * @param mylogWriteToFile + */ + public static void setMylogWriteToFile(Boolean mylogWriteToFile) { + MYLOG_WRITE_TO_FILE = mylogWriteToFile; + } +} diff --git a/app/src/main/java/com/navinfo/omqs/util/NaviEngine.kt b/app/src/main/java/com/navinfo/omqs/util/NaviEngine.kt index d2613b24..b388ed73 100644 --- a/app/src/main/java/com/navinfo/omqs/util/NaviEngine.kt +++ b/app/src/main/java/com/navinfo/omqs/util/NaviEngine.kt @@ -73,6 +73,7 @@ class NaviEngine( DataCodeEnum.OMDB_TRAFFICLIGHT.name, // DataCodeEnum.OMDB_RESTRICTION.name, DataCodeEnum.OMDB_LANEINFO.name, + DataCodeEnum.OMDB_CLM_LANEINFO.name, DataCodeEnum.OMDB_TRAFFIC_SIGN.name, DataCodeEnum.OMDB_WARNINGSIGN.name, DataCodeEnum.OMDB_TOLLGATE.name diff --git a/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt b/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt index 81d67890..01516528 100644 --- a/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt +++ b/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt @@ -107,7 +107,7 @@ class SignUtil { //物理车道数OMDB_PHY_LANENUM DataCodeEnum.OMDB_LANE_NUM.code, DataCodeEnum.OMDB_PHY_LANENUM.code -> { - "${data.properties["laneNum"]}|${data.properties["laneS2e"]}|${data.properties["laneE2s"]}" + "${data.properties["laneS2e"]}|${data.properties["laneE2s"]}" } //常规点限速,条件点限速 @@ -286,11 +286,11 @@ class SignUtil { //车道数//增加物理车道数DataCodeEnum.OMDB_PHY_LANENUM.code DataCodeEnum.OMDB_PHY_LANENUM.code, DataCodeEnum.OMDB_LANE_NUM.code -> { - list.add( +/* list.add( TwoItemAdapterItem( title = "车道总数", text = "${data.properties["laneNum"]}" ) - ) + )*/ list.add( TwoItemAdapterItem( title = "顺方向车道数", text = "${data.properties["laneS2e"]}" @@ -1426,14 +1426,14 @@ class SignUtil { ) DataCodeEnum.OMDB_RD_LINK_KIND.code -> stringBuffer.append("种别${item.iconText},") DataCodeEnum.OMDB_LINK_DIRECT.code -> stringBuffer.append("${item.iconText},") - DataCodeEnum.OMDB_PHY_LANENUM.code,//物理车道数 +/* DataCodeEnum.OMDB_PHY_LANENUM.code,//物理车道数 DataCodeEnum.OMDB_LANE_NUM.code -> stringBuffer.append( "${ item.iconText.substringBefore( "|" ) }车道" - ) + )*/ } } return stringBuffer.toString() diff --git a/app/src/main/res/menu/personal_center_menu.xml b/app/src/main/res/menu/personal_center_menu.xml index f065497c..0b568fcd 100644 --- a/app/src/main/res/menu/personal_center_menu.xml +++ b/app/src/main/res/menu/personal_center_menu.xml @@ -48,12 +48,17 @@ android:title="锁定地图旋转及视角" /> <item android:id="@+id/personal_center_menu_marker" - android:icon="@drawable/baseline_person_24" + android:icon="@drawable/baseline_map_24" android:visible="true" android:title="隐藏Marker" /> + <item + android:id="@+id/personal_center_menu_trace" + android:icon="@drawable/baseline_map_24" + android:visible="true" + android:title="隐藏轨迹" /> <item android:id="@+id/personal_center_menu_catch_all" - android:icon="@drawable/baseline_person_24" + android:icon="@drawable/baseline_map_24" android:visible="true" android:title="全要素捕捉" /> <item diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml index 07c7eb43..ecd516d0 100644 --- a/collect-library/src/main/assets/editormarker.xml +++ b/collect-library/src/main/assets/editormarker.xml @@ -1558,7 +1558,11 @@ <symbol repeat="false" repeat-start="0" repeat-gap="2000" src="@symbol" symbol-height="24" degree="90"></symbol> </m> - + <!-- 车信CLM --> + <m v="OMDB_CLM_LANEINFO" > + <symbol repeat="false" repeat-start="0" repeat-gap="2000" + src="@symbol" symbol-height="24" degree="90"></symbol> + </m> <!-- 杆状物 --> <m v="OMDB_POLE"> <symbol src="assets:omdb/icon_pole_3006.svg" symbol-height="56" symbol-width="56"></symbol> @@ -1720,22 +1724,22 @@ <m k="markType" v="6"> <!--其他|实线--> <m k="markColor" v="1"> - <symbol repeat="true" repeat-start="0" repeat-gap="24" src="assets:omdb/icon_2013_1.svg"/> + <symbol repeat="true" repeat-start="0" repeat-gap="32" symbol-height="8" symbol-width="8" src="assets:omdb/icon_2013_1.svg"/> </m> <m k="markColor" v="2"> - <symbol repeat="true" repeat-start="0" repeat-gap="24" src="assets:omdb/icon_2013_2.svg"></symbol> + <symbol repeat="true" repeat-start="0" repeat-gap="32" symbol-height="8" symbol-width="8" src="assets:omdb/icon_2013_2.svg"></symbol> </m> <m k="markColor" v="6"> - <symbol repeat="true" repeat-start="0" repeat-gap="24" src="assets:omdb/icon_2013_6.svg"></symbol> + <symbol repeat="true" repeat-start="0" repeat-gap="32" symbol-height="8" symbol-width="8" src="assets:omdb/icon_2013_6.svg"></symbol> </m> <m k="markColor" v="7"> - <symbol repeat="true" repeat-start="0" repeat-gap="24" src="assets:omdb/icon_2013_7.svg"></symbol> + <symbol repeat="true" repeat-start="0" repeat-gap="32" symbol-height="8" symbol-width="8" src="assets:omdb/icon_2013_7.svg"></symbol> </m> <m k="markColor" v="0|9"> - <symbol repeat="true" repeat-start="0" repeat-gap="24" src="assets:omdb/icon_2013_0.svg"></symbol> + <symbol repeat="true" repeat-start="0" repeat-gap="32" symbol-height="8" symbol-width="8" src="assets:omdb/icon_2013_0.svg"></symbol> </m> </m> </m> diff --git a/collect-library/src/main/assets/omdb/icon_2013_0.svg b/collect-library/src/main/assets/omdb/icon_2013_0.svg index bcb9b125..1a97174a 100644 --- a/collect-library/src/main/assets/omdb/icon_2013_0.svg +++ b/collect-library/src/main/assets/omdb/icon_2013_0.svg @@ -1,11 +1,10 @@ -<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" - "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg t="1695622778812" class="icon" viewBox="0 0 1024 1024" version="1.1" - xmlns="http://www.w3.org/2000/svg" p-id="8830" xmlns:xlink="http://www.w3.org/1999/xlink" - width="48" height="48"> - <path - d="M284.444444 227.555556h739.555556L739.555556 796.444444H0L284.444444 227.555556z m26.368 42.666666l-241.777777 483.555556h644.152889l241.777777-483.555556H310.812444z" - fill="#8e44ad" p-id="8831"></path> - <path d="M310.812444 270.222222l-241.777777 483.555556h644.152889l241.777777-483.555556z" - fill="#8e44ad" fill-opacity=".99" p-id="8832"></path> +<?xml version="1.0" encoding="UTF-8"?> +<svg id="b" xmlns="http://www.w3.org/2000/svg" width="136.1" height="113.4" + viewBox="0 0 136.1 113.4"> + <g id="c"> + <g> + <rect width="136.1" height="113.4" style="fill:none;" /> + <polygon points="109.7 56.7 0 56.7 26.4 0 136.1 0 109.7 56.7" style="fill:#8e44ad;" /> + </g> + </g> </svg> \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2013_1.svg b/collect-library/src/main/assets/omdb/icon_2013_1.svg index bd3e6b1e..ac4fd446 100644 --- a/collect-library/src/main/assets/omdb/icon_2013_1.svg +++ b/collect-library/src/main/assets/omdb/icon_2013_1.svg @@ -1,11 +1,10 @@ -<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" - "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg t="1695622778812" class="icon" viewBox="0 0 1024 1024" version="1.1" - xmlns="http://www.w3.org/2000/svg" p-id="8830" xmlns:xlink="http://www.w3.org/1999/xlink" - width="48" height="48"> - <path - d="M284.444444 227.555556h739.555556L739.555556 796.444444H0L284.444444 227.555556z m26.368 42.666666l-241.777777 483.555556h644.152889l241.777777-483.555556H310.812444z" - fill="#ffffff" p-id="8831"></path> - <path d="M310.812444 270.222222l-241.777777 483.555556h644.152889l241.777777-483.555556z" - fill="#ffffff" fill-opacity=".99" p-id="8832"></path> +<?xml version="1.0" encoding="UTF-8"?> +<svg id="b" xmlns="http://www.w3.org/2000/svg" width="136.1" height="113.4" + viewBox="0 0 136.1 113.4"> + <g id="c"> + <g> + <rect width="136.1" height="113.4" style="fill:none;" /> + <polygon points="109.7 56.7 0 56.7 26.4 0 136.1 0 109.7 56.7" style="fill:#fff;" /> + </g> + </g> </svg> \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2013_2.svg b/collect-library/src/main/assets/omdb/icon_2013_2.svg index eeb06059..9b4e18f7 100644 --- a/collect-library/src/main/assets/omdb/icon_2013_2.svg +++ b/collect-library/src/main/assets/omdb/icon_2013_2.svg @@ -1,11 +1,10 @@ -<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" - "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg t="1695622778812" class="icon" viewBox="0 0 1024 1024" version="1.1" - xmlns="http://www.w3.org/2000/svg" p-id="8830" xmlns:xlink="http://www.w3.org/1999/xlink" - width="48" height="48"> - <path - d="M284.444444 227.555556h739.555556L739.555556 796.444444H0L284.444444 227.555556z m26.368 42.666666l-241.777777 483.555556h644.152889l241.777777-483.555556H310.812444z" - fill="#eccc68" p-id="8831"></path> - <path d="M310.812444 270.222222l-241.777777 483.555556h644.152889l241.777777-483.555556z" - fill="#eccc68" fill-opacity=".99" p-id="8832"></path> +<?xml version="1.0" encoding="UTF-8"?> +<svg id="b" xmlns="http://www.w3.org/2000/svg" width="136.1" height="113.4" + viewBox="0 0 136.1 113.4"> + <g id="c"> + <g> + <rect width="136.1" height="113.4" style="fill:none;" /> + <polygon points="109.7 56.7 0 56.7 26.4 0 136.1 0 109.7 56.7" style="fill:#eccc68;" /> + </g> + </g> </svg> \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2013_6.svg b/collect-library/src/main/assets/omdb/icon_2013_6.svg index ad834913..8f5ad291 100644 --- a/collect-library/src/main/assets/omdb/icon_2013_6.svg +++ b/collect-library/src/main/assets/omdb/icon_2013_6.svg @@ -1,11 +1,10 @@ -<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" - "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg t="1695622778812" class="icon" viewBox="0 0 1024 1024" version="1.1" - xmlns="http://www.w3.org/2000/svg" p-id="8830" xmlns:xlink="http://www.w3.org/1999/xlink" - width="48" height="48"> - <path - d="M284.444444 227.555556h739.555556L739.555556 796.444444H0L284.444444 227.555556z m26.368 42.666666l-241.777777 483.555556h644.152889l241.777777-483.555556H310.812444z" - fill="#0000ff" p-id="8831"></path> - <path d="M310.812444 270.222222l-241.777777 483.555556h644.152889l241.777777-483.555556z" - fill="#0000ff" fill-opacity=".99" p-id="8832"></path> +<?xml version="1.0" encoding="UTF-8"?> +<svg id="b" xmlns="http://www.w3.org/2000/svg" width="136.1" height="113.4" + viewBox="0 0 136.1 113.4"> + <g id="c"> + <g> + <rect width="136.1" height="113.4" style="fill:none;" /> + <polygon points="109.7 56.7 0 56.7 26.4 0 136.1 0 109.7 56.7" style="fill:#0000ff;" /> + </g> + </g> </svg> \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2013_7.svg b/collect-library/src/main/assets/omdb/icon_2013_7.svg index 4528138f..305c101d 100644 --- a/collect-library/src/main/assets/omdb/icon_2013_7.svg +++ b/collect-library/src/main/assets/omdb/icon_2013_7.svg @@ -1,11 +1,10 @@ -<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" - "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg t="1695622778812" class="icon" viewBox="0 0 1024 1024" version="1.1" - xmlns="http://www.w3.org/2000/svg" p-id="8830" xmlns:xlink="http://www.w3.org/1999/xlink" - width="48" height="48"> - <path - d="M284.444444 227.555556h739.555556L739.555556 796.444444H0L284.444444 227.555556z m26.368 42.666666l-241.777777 483.555556h644.152889l241.777777-483.555556H310.812444z" - fill="#00ff00" p-id="8831"></path> - <path d="M310.812444 270.222222l-241.777777 483.555556h644.152889l241.777777-483.555556z" - fill="#00ff00" fill-opacity=".99" p-id="8832"></path> +<?xml version="1.0" encoding="UTF-8"?> +<svg id="b" xmlns="http://www.w3.org/2000/svg" width="136.1" height="113.4" + viewBox="0 0 136.1 113.4"> + <g id="c"> + <g> + <rect width="136.1" height="113.4" style="fill:none;" /> + <polygon points="109.7 56.7 0 56.7 26.4 0 136.1 0 109.7 56.7" style="fill:#00ff00;" /> + </g> + </g> </svg> \ No newline at end of file diff --git a/collect-library/src/main/java/com/navinfo/collect/library/enums/DataCodeEnum.kt b/collect-library/src/main/java/com/navinfo/collect/library/enums/DataCodeEnum.kt index 511c9b77..68d28973 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/enums/DataCodeEnum.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/enums/DataCodeEnum.kt @@ -81,6 +81,7 @@ enum class DataCodeEnum(var tableName: String, var code: String) { OMDB_TRAFFICLIGHT("交通灯", "4022"), OMDB_TOLLGATE("收费站", "4023"), OMDB_LANEINFO("车信", "4601"), + OMDB_CLM_LANEINFO("车信CLM", "4602"), OMDB_LANE_LINK_LG("车道中心线", "5001"); companion object { diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LocationLayerHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LocationLayerHandler.kt index a44d100f..e83ad7af 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LocationLayerHandler.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LocationLayerHandler.kt @@ -171,7 +171,7 @@ class LocationLayerHandler(context: AppCompatActivity, mapView: NIMapView) : mCurrentLocation?.run { val mapPosition = mMapView.vtmMap.mapPosition mapPosition.setPosition(this.latitude, this.longitude) - mMapView.vtmMap.animator().animateTo(300, mapPosition) + mMapView.vtmMap.animator().animateTo(800, mapPosition) } } diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt index b7e38784..74a48a0c 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt @@ -43,8 +43,16 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : */ private val mDefaultTextColor = "#4E55AF" + /** + * 默认Marker可用状态 + */ private var markerEnable = true + /** + * 默认轨迹可用状态 + */ + private var traceMarkerEnable = true + /** * 文字画笔 */ @@ -277,13 +285,16 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : // 设置矢量图层均在12级以上才显示 mMapView.vtmMap.events.bind(Map.UpdateListener { e, mapPosition -> if (e == Map.SCALE_EVENT) { - if(markerEnable){ + if (markerEnable) { qsRecordItemizedLayer.isEnabled = mapPosition.getZoomLevel() >= 12 - }else{ + } else { qsRecordItemizedLayer.isEnabled = false } - - niLocationItemizedLayer.isEnabled = mapPosition.getZoomLevel() >= 12 + if (traceMarkerEnable) { + niLocationItemizedLayer.isEnabled = mapPosition.getZoomLevel() >= 12 + } else { + niLocationItemizedLayer.isEnabled = false + } } }) } @@ -379,13 +390,26 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : mMapView.updateMap(true) } - fun setQsRecordMarkEnable(enable:Boolean){ + /** + * Marker是否显示 + */ + fun setQsRecordMarkEnable(enable: Boolean) { qsRecordItemizedLayer.isEnabled = enable markerEnable = enable qsRecordItemizedLayer.populate() mMapView.updateMap(true) } + /** + * 轨迹是否显示 + */ + fun setTraceMarkEnable(enable: Boolean) { + niLocationItemizedLayer.isEnabled = enable + traceMarkerEnable = enable + niLocationItemizedLayer.populate() + mMapView.updateMap(true) + } + /** * 增加或更新便签 @@ -520,11 +544,9 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : * 添加质检数据marker */ fun addNiLocationMarkerItem(niLocation: NiLocation) { - synchronized(this) { - var geoMarkerItem = createNILocationBitmap(niLocation) - niLocationItemizedLayer.addItem(geoMarkerItem) - niLocationItemizedLayer.update() - } + var geoMarkerItem = createNILocationBitmap(niLocation) + niLocationItemizedLayer.addItem(geoMarkerItem) + niLocationItemizedLayer.update() } private fun createNILocationBitmap(niLocation: NiLocation): MarkerItem { From 40d07cc32941d028d65e23b8fd60421e4419cc7b Mon Sep 17 00:00:00 2001 From: qiji4215 <qiji4215@navinfo.com> Date: Thu, 26 Oct 2023 09:43:40 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=96=B0=E5=A2=9Elink=E5=88=B7=E6=96=B0=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=B4=A9=E6=BA=83=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/navinfo/omqs/db/ImportOMDBHelper.kt | 4 - .../omqs/ui/activity/login/LoginViewModel.kt | 10 +- .../omqs/ui/fragment/tasklist/TaskFragment.kt | 2 + .../ui/fragment/tasklist/TaskListFragment.kt | 22 ++++ .../ui/fragment/tasklist/TaskViewModel.kt | 120 ++++++++++++------ .../library/data/entity/HadLinkDvoBean.kt | 6 + 6 files changed, 123 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt index f05caa67..1d307a3f 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt @@ -327,10 +327,6 @@ class ImportOMDBHelper @AssistedInject constructor( } DataCodeEnum.OMDB_LANE_MARK_BOUNDARYTYPE.code.toInt() -> { - var featurePid = renderEntity.properties["featurePid"] - if(featurePid!="135340259623248665"){ - continue - } var boundaryType = renderEntity.properties["boundaryType"] if (boundaryType != null) { when (boundaryType.toInt()) { diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt index fe1007b4..0f986a25 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt @@ -282,6 +282,12 @@ class LoginViewModel @Inject constructor( task.fileSize = item.fileSize task.status = item.status task.currentSize = item.currentSize + //增加mesh==null兼容性处理 + for (hadLink in item.hadLinkDvoList) { + if(hadLink.mesh==null){ + hadLink.mesh = "" + } + } task.hadLinkDvoList = item.hadLinkDvoList task.syncStatus = item.syncStatus //已上传后不在更新操作时间 @@ -293,8 +299,10 @@ class LoginViewModel @Inject constructor( } } else { for (hadLink in task.hadLinkDvoList) { - if(hadLink.geometry==null||hadLink.mesh==null){ + if(hadLink.geometry==null){ inSertData = false + }else if(hadLink.mesh==null){ + hadLink.mesh = "" }else{ hadLink.taskId = task.id } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskFragment.kt index 34bf24f0..b40efbc1 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskFragment.kt @@ -79,7 +79,9 @@ class TaskFragment : BaseFragment() { viewModel.liveDataAddLinkDialog.observe(viewLifecycleOwner){ viewModel.addTaskLink(requireContext(),it) } + viewModel.liveDataUpdateTask.observe(viewLifecycleOwner) { + } //注意:使用滑动菜单不能开启滑动删除,否则只有滑动删除没有滑动菜单 val mSwipeMenuCreator = SwipeMenuCreator { _, rightMenu, _ -> diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListFragment.kt index 5fa3f914..320137b5 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListFragment.kt @@ -145,6 +145,28 @@ class TaskListFragment : BaseFragment() { binding.taskListRecyclerview.smoothScrollToPosition(position) } + viewModel.liveDataCloseTask.observe(viewLifecycleOwner){ + when(it){ + TaskDelStatus.TASK_DEL_STATUS_BEGIN->{ + showLoadingDialog("正在重置...") + } + TaskDelStatus.TASK_DEL_STATUS_LOADING->{ + showLoadingDialog("正在重置...") + } + TaskDelStatus.TASK_DEL_STATUS_SUCCESS->{ + hideLoadingDialog() + Toast.makeText(context,"成功重置",Toast.LENGTH_LONG).show() + + } + TaskDelStatus.TASK_DEL_STATUS_FAILED->{ + hideLoadingDialog() + } + TaskDelStatus.TASK_DEL_STATUS_CANCEL->{ + + } + } + } + //监听并调用上传 viewModel.liveDataTaskUpload.observe(viewLifecycleOwner) { for ((key, value) in it) { diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt index 04416272..97ab87e3 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt @@ -4,6 +4,7 @@ import android.content.Context import android.content.SharedPreferences import android.content.SharedPreferences.OnSharedPreferenceChangeListener import android.os.Build +import android.util.Log import android.view.View import android.widget.Toast import androidx.annotation.RequiresApi @@ -31,6 +32,32 @@ import org.oscim.core.GeoPoint import java.io.File import javax.inject.Inject +enum class TaskDelStatus { + /** + * 删除开始 + */ + TASK_DEL_STATUS_BEGIN, + + /** + * 删除中 + */ + TASK_DEL_STATUS_LOADING, + + /** + * 删除成功 + */ + TASK_DEL_STATUS_SUCCESS, + + /** + * 删除失败 + */ + TASK_DEL_STATUS_FAILED, + + /** + * 取消删除 + */ + TASK_DEL_STATUS_CANCEL, +} @HiltViewModel class TaskViewModel @Inject constructor( @@ -61,7 +88,12 @@ class TaskViewModel @Inject constructor( /** * 用来确定是否关闭 */ - val liveDataCloseTask = MutableLiveData<Boolean>() + val liveDataCloseTask = MutableLiveData<TaskDelStatus>() + + /** + * 用来更新任务 + */ + val liveDataUpdateTask = MutableLiveData<TaskBean>() /** * 提示信息 @@ -107,7 +139,8 @@ class TaskViewModel @Inject constructor( if (currentSelectTaskBean == null) { liveDataToastMessage.postValue("还没有开启任何任务") } else { - val links = realmOperateHelper.queryLink(realm, + val links = realmOperateHelper.queryLink( + realm, point = point, ) if (links.isNotEmpty()) { @@ -125,7 +158,8 @@ class TaskViewModel @Inject constructor( } else { viewModelScope.launch(Dispatchers.IO) { val realm = realmOperateHelper.getSelectTaskRealmInstance() - val links = realmOperateHelper.queryLink(realm, + val links = realmOperateHelper.queryLink( + realm, point = point, ) if (links.isNotEmpty()) { @@ -178,22 +212,34 @@ class TaskViewModel @Inject constructor( task.fileSize = item.fileSize task.status = item.status task.currentSize = item.currentSize + //增加mesh==null兼容性处理 + for (hadLink in item.hadLinkDvoList) { + if (hadLink.mesh == null) { + hadLink.mesh = "" + Log.e("qj", "${task.id}==null") + } + } task.hadLinkDvoList = item.hadLinkDvoList task.syncStatus = item.syncStatus //已上传后不在更新操作时间 if (task.syncStatus != FileManager.Companion.FileUploadStatus.DONE) { //赋值时间,用于查询过滤 task.operationTime = DateTimeUtil.getNowDate().time - }else{//已上传数据不做更新 + } else {//已上传数据不做更新 continue } } else { for (hadLink in task.hadLinkDvoList) { hadLink.taskId = task.id + if (hadLink.mesh == null) { + hadLink.mesh = "" + Log.e("qj", "${task.id}==新增==null") + } } //赋值时间,用于查询过滤 task.operationTime = DateTimeUtil.getNowDate().time } + Log.e("qj", "${task.id}") realm.copyToRealmOrUpdate(task) } } @@ -413,7 +459,7 @@ class TaskViewModel @Inject constructor( /** * 重新下载数据任务 */ - fun resetDownload(context: Context, taskBean: TaskBean){ + fun resetDownload(context: Context, taskBean: TaskBean) { val mDialog = FirstDialog(context) mDialog.setTitle("提示?") mDialog.setMessage("是否重置下载状态,请确认!") @@ -421,58 +467,55 @@ class TaskViewModel @Inject constructor( "确定" ) { dialog, _ -> dialog.dismiss() + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_BEGIN) viewModelScope.launch(Dispatchers.IO) { //删除已下载的数据 - val fileTemp = File("${Constant.DOWNLOAD_PATH}${taskBean.evaluationTaskName}_${taskBean.dataVersion}.zip") - if(fileTemp.exists()){ + val fileTemp = + File("${Constant.DOWNLOAD_PATH}${taskBean.evaluationTaskName}_${taskBean.dataVersion}.zip") + if (fileTemp.exists()) { fileTemp.delete() } val taskFileTemp = File(Constant.USER_DATA_PATH + "/${taskBean.id}") //重命名 - if(taskFileTemp.exists()){ - var currentSelectTaskFolder = File(Constant.USER_DATA_PATH + "/${taskBean.id}") + if (taskFileTemp.exists()) { +/* var currentSelectTaskFolder = File(Constant.USER_DATA_PATH + "/${taskBean.id}") var currentSelectTaskConfig = RealmConfiguration.Builder().directory(currentSelectTaskFolder) - .name("OMQS.realm").encryptionKey(Constant.PASSWORD).allowQueriesOnUiThread(true) + .name("OMQS.realm").encryptionKey(Constant.PASSWORD) + .allowQueriesOnUiThread(true) .schemaVersion(2).build() - //删除已有所有数据 - Realm.getInstance(currentSelectTaskConfig).deleteAll() - Realm.getInstance(currentSelectTaskConfig).refresh() - Realm.getInstance(currentSelectTaskConfig).close() + Realm.getInstance(currentSelectTaskConfig).executeTransaction { r -> + //删除已有所有数据 + r.delete(RenderEntity::class.java) + r.delete(ReferenceEntity::class.java) + } + Realm.getInstance(currentSelectTaskConfig).close()*/ } //将下载状态修改已下载 val realm = realmOperateHelper.getRealmDefaultInstance() taskBean.syncStatus = FileManager.Companion.FileUploadStatus.NONE taskBean.status = FileManager.Companion.FileDownloadStatus.NONE - realm.executeTransaction { r -> - r.copyToRealmOrUpdate(taskBean) - } - val nowTime: Long = DateTimeUtil.getNowDate().time - val beginNowTime: Long = nowTime - 90 * 3600 * 24 * 1000L - val syncUpload: Int = FileManager.Companion.FileUploadStatus.DONE - val objects = - realm.where(TaskBean::class.java).notEqualTo("syncStatus", syncUpload).or() - .between("operationTime", beginNowTime, nowTime) - .equalTo("syncStatus", syncUpload).findAll() - val taskList = realm.copyFromRealm(objects) - for (item in taskList) { - FileManager.checkOMDBFileInfo(item) - } - liveDataTaskList.postValue(taskList) + realm.beginTransaction() + realm.copyToRealmOrUpdate(taskBean) + realm.commitTransaction() realm.close() + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_SUCCESS) withContext(Dispatchers.Main) { - if(taskBean.id== currentSelectTaskBean?.id ?: 0){ + if (taskBean.id == currentSelectTaskBean?.id ?: 0) { mapController.layerManagerHandler.updateOMDBVectorTileLayer() - }else{ + } else { setSelectTaskBean(taskBean) } + realmOperateHelper.getRealmDefaultInstance().refresh() + //重新加载数据 + getLocalTaskList() } } } mDialog.setNegativeButton( "取消" ) { _, _ -> - liveDataCloseTask.postValue(false) + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_CANCEL) mDialog.dismiss() } mDialog.show() @@ -489,7 +532,9 @@ class TaskViewModel @Inject constructor( "确定" ) { dialog, _ -> dialog.dismiss() + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_BEGIN) viewModelScope.launch(Dispatchers.IO) { + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_LOADING) val realm = realmOperateHelper.getRealmDefaultInstance() realm.executeTransaction { val objects = @@ -523,14 +568,14 @@ class TaskViewModel @Inject constructor( FileManager.checkOMDBFileInfo(item) } liveDataTaskList.postValue(taskList) - liveDataCloseTask.postValue(true) + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_SUCCESS) realm.close() } } mDialog.setNegativeButton( "取消" ) { _, _ -> - liveDataCloseTask.postValue(false) + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_CANCEL) mDialog.dismiss() } mDialog.show() @@ -641,7 +686,7 @@ class TaskViewModel @Inject constructor( } //根据Link数据查询对应数据上要素,对要素进行显示重置 data.properties["linkPid"]?.let { - realmOperateHelper.queryLinkToMutableRenderEntityList(realm,it) + realmOperateHelper.queryLinkToMutableRenderEntityList(realm, it) ?.forEach { renderEntity -> if (renderEntity.enable != 1) { renderEntity.enable = 1 @@ -696,7 +741,10 @@ class TaskViewModel @Inject constructor( //重置数据为隐藏 if (hadLinkDvoBean.linkStatus == 2) { - realmOperateHelper.queryLinkToMutableRenderEntityList(realm,hadLinkDvoBean.linkPid) + realmOperateHelper.queryLinkToMutableRenderEntityList( + realm, + hadLinkDvoBean.linkPid + ) ?.forEach { renderEntity -> if (renderEntity.enable == 1) { renderEntity.enable = 0 diff --git a/collect-library/src/main/java/com/navinfo/collect/library/data/entity/HadLinkDvoBean.kt b/collect-library/src/main/java/com/navinfo/collect/library/data/entity/HadLinkDvoBean.kt index 8b486d45..d85d5dd3 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/data/entity/HadLinkDvoBean.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/data/entity/HadLinkDvoBean.kt @@ -1,5 +1,7 @@ package com.navinfo.collect.library.data.entity +import com.navinfo.collect.library.utils.GeometryTools +import com.navinfo.collect.library.utils.GeometryToolsKt import io.realm.RealmObject import io.realm.annotations.PrimaryKey @@ -12,11 +14,13 @@ open class HadLinkDvoBean @JvmOverloads constructor( * 图幅号 */ var mesh: String = "", + /** * linkPid */ @PrimaryKey var linkPid: String = "", + /** * (几何)加偏后 */ @@ -31,10 +35,12 @@ open class HadLinkDvoBean @JvmOverloads constructor( * 1:源库link,2:选择link 3:现场新增 */ var linkStatus: Int = 1, + /** * 详细属性 */ var linkInfo: LinkInfoBean? = null, + /** * 长度(米) */ From d3398ae7558135ff866beb8c0e2804fa5ee731cf Mon Sep 17 00:00:00 2001 From: qiji4215 <qiji4215@navinfo.com> Date: Thu, 26 Oct 2023 14:58:43 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BD=A8=E8=BF=B9?= =?UTF-8?q?=E5=A4=9A=E5=B1=82=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/navinfo/omqs/Constant.kt | 7 ++ .../omqs/ui/activity/map/MainActivity.kt | 3 +- .../omqs/ui/activity/map/MainViewModel.kt | 13 +++ .../personalcenter/PersonalCenterFragment.kt | 5 +- .../ui/fragment/tasklist/TaskViewModel.kt | 27 ++++-- .../collect/library/map/NIMapView.java | 1 + .../library/map/handler/MarkHandler.kt | 94 ++++++++++++++++++- 7 files changed, 136 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/navinfo/omqs/Constant.kt b/app/src/main/java/com/navinfo/omqs/Constant.kt index 9ee9f307..5d685185 100644 --- a/app/src/main/java/com/navinfo/omqs/Constant.kt +++ b/app/src/main/java/com/navinfo/omqs/Constant.kt @@ -40,6 +40,13 @@ class Constant { */ lateinit var USER_DATA_PATH: String + /** + * 轨迹渲染个数统计 + */ + var TRACE_COUNT : Int = 0 + + var TRACE_COUNT_TIME : Int = 10 + /** * 当前安装任务 */ diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt index e19683fe..6202bde2 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt @@ -344,7 +344,7 @@ class MainActivity : BaseActivity() { } } viewModel.liveDataAutoLocation.observe(this) { - if (it == true) { + if (it == true&&Constant.INDOOR_IP==null|| Constant.INDOOR_IP == "") { onClickLocation() } } @@ -844,6 +844,7 @@ class MainActivity : BaseActivity() { */ fun setTopMenuButtonVisibility(visibility: Int) { binding.mainActivityMenu.visibility = visibility + binding.mainActivityStatusCamera.visibility = visibility if (visibility != View.VISIBLE) { binding.mainActivityMenuGroup.visibility = View.INVISIBLE binding.mainActivityMenu.isSelected = false diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt index 2d628cbf..fb1cecb0 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt @@ -246,6 +246,8 @@ class MainViewModel @Inject constructor( // 定义一个互斥锁 private val naviMutex = Mutex() + private var traceCount = 0 + init { mapController.mMapView.vtmMap.events.bind(Map.UpdateListener { e, mapPosition -> when (e) { @@ -527,7 +529,14 @@ class MainViewModel @Inject constructor( ).niLocationDao.findToTaskIdAll(id.toString()) if (list != null) { for (location in list) { + Constant.TRACE_COUNT++ + mapController.markerHandle.addNiLocationMarkerItem(location) + + if(Constant.TRACE_COUNT%Constant.TRACE_COUNT_TIME==0){ + mapController.markerHandle.addNiLocationMarkerItemSimple(location) + Log.e("qj","$traceCount===轨迹") + } } } } @@ -592,10 +601,14 @@ class MainViewModel @Inject constructor( } //室内整理工具时不能进行轨迹存储,判断轨迹间隔要超过2.5并小于60米 if (Constant.INDOOR_IP.isEmpty() && (disance == 0.0 || (disance > 2.5 && disance < 60))) { + traceCount ++ Log.e("jingo", "轨迹插入开始") CMLog.writeLogtoFile(MainViewModel::class.java.name,"insertTrace","开始") traceDataBase.niLocationDao.insert(location) mapController.markerHandle.addNiLocationMarkerItem(location) + if(Constant.TRACE_COUNT%Constant.TRACE_COUNT_TIME==0){ + mapController.markerHandle.addNiLocationMarkerItemSimple(location) + } mapController.mMapView.vtmMap.updateMap(true) lastNiLocaion = location CMLog.writeLogtoFile(MainViewModel::class.java.name,"insertTrace",gson.toJson(location)) diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt index 6d06c911..d8c9f121 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt @@ -7,6 +7,7 @@ import android.net.Uri import android.os.Build import android.os.Bundle import android.view.LayoutInflater +import android.view.MenuItem import android.view.View import android.view.ViewGroup import android.widget.TimePicker @@ -21,6 +22,7 @@ import com.blankj.utilcode.util.UriUtils import com.github.k1rakishou.fsaf.FileChooser import com.github.k1rakishou.fsaf.callback.FSAFActivityCallbacks import com.github.k1rakishou.fsaf.callback.FileChooserCallback +import com.google.android.material.internal.NavigationMenuItemView import com.google.android.material.timepicker.MaterialTimePicker import com.navinfo.collect.library.enums.DataLayerEnum import com.navinfo.collect.library.map.NIMapController @@ -40,6 +42,7 @@ import com.permissionx.guolindev.PermissionX import dagger.hilt.android.AndroidEntryPoint import org.oscim.core.GeoPoint import org.oscim.core.MapPosition +import org.oscim.utils.MinHeap.Item import javax.inject.Inject /** @@ -73,7 +76,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - binding.root.setNavigationItemSelectedListener { + binding.root.setNavigationItemSelectedListener { it -> when (it.itemId) { R.id.personal_center_menu_offline_map -> findNavController().navigate(R.id.OfflineMapFragment) diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt index 97ab87e3..d4849aba 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt @@ -318,6 +318,23 @@ class TaskViewModel @Inject constructor( liveDataTaskLinks.value = taskBean.hadLinkDvoList showTaskLinks(taskBean) + //重新加载轨迹 + viewModelScope.launch(Dispatchers.IO) { + Constant.TRACE_COUNT = 0 + val list: List<NiLocation>? = TraceDataBase.getDatabase( + mapController.mMapView.context, Constant.USER_DATA_PATH + ).niLocationDao.findToTaskIdAll(taskBean.id.toString()) + list!!.forEach { + + Constant.TRACE_COUNT ++ + + mapController.markerHandle.addNiLocationMarkerItem(it) + + if(Constant.TRACE_COUNT%Constant.TRACE_COUNT_TIME==0){ + mapController.markerHandle.addNiLocationMarkerItemSimple(it) + } + } + } MapParamUtils.setTaskId(taskBean.id) Constant.currentSelectTaskFolder = File(Constant.USER_DATA_PATH + "/${taskBean.id}") Constant.currentSelectTaskConfig = @@ -365,16 +382,6 @@ class TaskViewModel @Inject constructor( ) } } - - //重新加载轨迹 - viewModelScope.launch(Dispatchers.IO) { - val list: List<NiLocation>? = TraceDataBase.getDatabase( - mapController.mMapView.context, Constant.USER_DATA_PATH - ).niLocationDao.findToTaskIdAll(taskBean.id.toString()) - list!!.forEach { - mapController.markerHandle.addNiLocationMarkerItem(it) - } - } } /** diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/NIMapView.java b/collect-library/src/main/java/com/navinfo/collect/library/map/NIMapView.java index 423f1e96..a6b6858d 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/NIMapView.java +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/NIMapView.java @@ -608,6 +608,7 @@ public final class NIMapView extends RelativeLayout { LABEL(4)/*图标,文字图层*/, OPERATE_LINE(5)/*操作图层组*/, OPERATE_MARKER(6)/*操作图层组*/; + int groupIndex; LAYER_GROUPS(int groupIndex) { diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt index 74a48a0c..91d3a010 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt @@ -28,6 +28,8 @@ import org.oscim.backend.canvas.Paint import org.oscim.core.GeoPoint import org.oscim.layers.marker.* import org.oscim.layers.marker.ItemizedLayer.OnItemGestureListener +import org.oscim.layers.tile.vector.VectorTileLayer +import org.oscim.layers.vector.VectorLayer import org.oscim.layers.vector.geometries.* import org.oscim.map.Map import java.util.* @@ -53,6 +55,7 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : */ private var traceMarkerEnable = true + /** * 文字画笔 */ @@ -187,6 +190,45 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : layer } + /** + * 评测精简数据marker 图层 + */ + private val niLocationItemizedLayerSimple: ItemizedLayer by lazy { + + val symbol = MarkerSymbol(niLocationBitmap, MarkerSymbol.HotspotPlace.CENTER) + val layerSimple = ItemizedLayer( + mapView.vtmMap, + symbol, + ) + layerSimple.setOnItemGestureListener(object : OnItemGestureListener<MarkerInterface> { + override fun onItemSingleTapUp(index: Int, item: MarkerInterface?): Boolean { + val tag = mMapView.listenerTagList.last() + val listenerList = mMapView.listenerList[tag] + if (listenerList != null) { + for (listener in listenerList) { +/* if (listener is OnNiLocationItemListener) { + listener.onNiLocation( + tag, + index, + (niLocationItemizedLayerSimple.itemList[index] as MarkerItem).uid as NiLocation + ) + break + }*/ + } + } + return true + } + + override fun onItemLongPress(index: Int, item: MarkerInterface?): Boolean { + return true + } + + }) + addLayer(layerSimple, NIMapView.LAYER_GROUPS.OPERATE_MARKER) + layerSimple + } + + /** * 评测数据marker 图层 */ @@ -221,7 +263,7 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : } }) - + layer.isEnabled = false addLayer(layer, NIMapView.LAYER_GROUPS.OPERATE_MARKER) layer } @@ -291,9 +333,11 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : qsRecordItemizedLayer.isEnabled = false } if (traceMarkerEnable) { - niLocationItemizedLayer.isEnabled = mapPosition.getZoomLevel() >= 12 + niLocationItemizedLayer.isEnabled = mapPosition.getZoomLevel() in 17..20 + niLocationItemizedLayerSimple.isEnabled = mapPosition.getZoomLevel() in 12..16 } else { niLocationItemizedLayer.isEnabled = false + niLocationItemizedLayerSimple.isEnabled = false } } }) @@ -405,8 +449,10 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : */ fun setTraceMarkEnable(enable: Boolean) { niLocationItemizedLayer.isEnabled = enable + niLocationItemizedLayerSimple.isEnabled = enable traceMarkerEnable = enable niLocationItemizedLayer.populate() + niLocationItemizedLayerSimple.populate() mMapView.updateMap(true) } @@ -549,6 +595,15 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : niLocationItemizedLayer.update() } + /** + * 添加质检数据marker + */ + fun addNiLocationMarkerItemSimple(niLocation: NiLocation) { + var geoMarkerItem = createNILocationBitmap(niLocation) + niLocationItemizedLayerSimple.addItem(geoMarkerItem) + niLocationItemizedLayerSimple.update() + } + private fun createNILocationBitmap(niLocation: NiLocation): MarkerItem { val direction: Double = niLocation.direction @@ -813,6 +868,8 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : fun clearNiLocationLayer() { niLocationItemizedLayer.removeAllItems() niLocationItemizedLayer.update() + niLocationItemizedLayerSimple.removeAllItems() + niLocationItemizedLayerSimple.update() } /** @@ -827,6 +884,18 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : return niLocationItemizedLayer.itemList.size } + fun getNILocationItemizedLayerSimpleSize(): Int { + return niLocationItemizedLayerSimple.itemList.size + } + + fun getNILocationSimple(index: Int): NiLocation? { + return if (index > -1 && index < getNILocationItemizedLayerSimpleSize()) { + ((niLocationItemizedLayerSimple.itemList[index]) as MarkerItem).uid as NiLocation + } else { + null + } + } + fun getNILocation(index: Int): NiLocation? { return if (index > -1 && index < getNILocationItemizedLayerSize()) { ((niLocationItemizedLayer.itemList[index]) as MarkerItem).uid as NiLocation @@ -855,6 +924,27 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : return -1 } + + fun getNILocationSimpleIndex(niLocation: NiLocation): Int? { + + var list = niLocationItemizedLayerSimple.itemList + + if (niLocation != null && list.isNotEmpty()) { + + var index = -1 + + list.forEach { + + index += 1 + + if (((it as MarkerItem).uid as NiLocation).id.equals(niLocation.id)) { + return index + } + } + } + + return -1 + } } interface OnQsRecordItemClickListener : BaseClickListener { From b40a9e2ebb61815d78e6d85cc12194b584d01d61 Mon Sep 17 00:00:00 2001 From: qiji4215 <qiji4215@navinfo.com> Date: Fri, 27 Oct 2023 14:05:59 +0800 Subject: [PATCH 5/5] merge codew --- .../com/navinfo/omqs/db/ImportOMDBHelper.kt | 994 ++++++++---------- .../com/navinfo/omqs/db/ImportPreProcess.kt | 7 +- .../ui/fragment/tasklist/TaskViewModel.kt | 71 +- vtm | 2 +- 4 files changed, 516 insertions(+), 558 deletions(-) diff --git a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt index 4a273c82..11adb7c2 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt @@ -21,6 +21,7 @@ import com.navinfo.omqs.Constant.Companion.installTaskid import com.navinfo.omqs.bean.ImportConfig import com.navinfo.omqs.db.deep.LinkList import com.navinfo.omqs.hilt.OMDBDataBaseHiltFactory +import com.navinfo.omqs.util.CMLog import dagger.assisted.Assisted import dagger.assisted.AssistedInject import io.realm.Realm @@ -210,623 +211,514 @@ class ImportOMDBHelper @AssistedInject constructor( // 遍历解压后的文件,读取该数据返回 // Log.d("ImportOMDBHelper", "表解析===开始时间$dataImportTime===") - + CMLog.writeLogtoFile( + ImportOMDBHelper::class.java.name, + "importOmdbZipFile", + "开始" + ) for (importConfig in importConfigList) { for ((index, currentEntry) in importConfig.tableMap.entries.withIndex()) { processIndex += 1 -// Log.d( -// "ImportOMDBHelper", -// "表解析===开始时间$tableImportTime===${currentEntry.value.table}" -// ) -// Log.d( -// "ImportOMDBHelper", -// "表解析===processIndex${processIndex}====${processIndex}/${tableNum}" -// ) -// val listResult = mutableListOf<RenderEntity>() + val currentConfig = currentEntry.value + + CMLog.writeLogtoFile( + ImportOMDBHelper::class.java.name, + "importOmdbZipFile", + "${currentConfig.table}开始" + ) + val txtFile = unZipFiles.find { it.name == currentConfig.table } - if (txtFile != null) { - val fileReader = FileReader(txtFile) - val bufferedReader = BufferedReader(fileReader) - var line: String? = bufferedReader.readLine() - while (line != null) { - if (line == null || line.trim() == "") { - line = bufferedReader.readLine() - continue - } - elementIndex += 1 - dataIndex += 1 -// Log.d("ImportOMDBHelper", "解析第:${index + 1}行") - val map = gson.fromJson<Map<String, Any>>( - line, object : TypeToken<Map<String, Any>>() {}.type - ).toMutableMap() - map["qi_table"] = currentConfig.table - map["qi_name"] = currentConfig.name - map["qi_code"] = - if (currentConfig.code == 0) currentConfig.code else currentEntry.key - map["qi_zoomMin"] = currentConfig.zoomMin - map["qi_zoomMax"] = currentConfig.zoomMax + Log.e("qj", "开始遍历文件==${currentConfig.table}") + if (txtFile != null && txtFile.exists()) { + try { - // 先查询这个mesh下有没有数据,如果有则跳过即可 - val renderEntity = RenderEntity() - renderEntity.code = map["qi_code"].toString() - renderEntity.name = map["qi_name"].toString() - renderEntity.table = map["qi_table"].toString() - renderEntity.taskId = task.id - renderEntity.zoomMin = map["qi_zoomMin"].toString().toInt() - renderEntity.zoomMax = map["qi_zoomMax"].toString().toInt() + Log.e("qj", "开始遍历文件1") + val fileReader = FileReader(txtFile) + val bufferedReader = BufferedReader(fileReader) + var line: String? = bufferedReader.readLine() - // 在外层记录当前数据的linkPid - if (map.containsKey("linkPid")) { - renderEntity.linkPid = - map["linkPid"].toString().split(",")[0] - } else if (map.containsKey("linkList")) { - val linkList = map["linkList"].toString() - if (!linkList.isNullOrEmpty() && linkList != "null") { - val list: List<LinkList> = gson.fromJson( - linkList, - object : TypeToken<List<LinkList>>() {}.type - ) - renderEntity.linkPid = list[0].linkPid - } - } - - Log.e( - "jingo", - "安装数据 ${renderEntity.table} ${renderEntity.linkPid} ${elementIndex} ${insertIndex}" - ) - renderEntity.geometry = map["geometry"].toString() -// Log.d("ImportOMDBHelper", "解析===1处理3D") - // 其他数据插入到Properties中 - /* if (!currentConfig.is3D) { // 如果是非3d要素,则自动将Z轴坐标全部置为0 - val coordinates = - renderEntity.wkt?.coordinates?.map { coordinate -> - coordinate.z = 0.0 - coordinate - }?.toTypedArray() - var newGeometry: Geometry? = null - if (renderEntity.wkt?.geometryType == Geometry.TYPENAME_POINT) { - newGeometry = GeometryTools.createPoint( - coordinates!![0].x, - coordinates!![0].y - ) - } else if (renderEntity.wkt?.geometryType == Geometry.TYPENAME_LINESTRING) { - newGeometry = - GeometryTools.createLineString(coordinates) - } else if (renderEntity.wkt?.geometryType == Geometry.TYPENAME_POLYGON) { - newGeometry = - GeometryTools.createLineString(coordinates) - } - if (newGeometry != null) { - renderEntity.geometry = newGeometry.toString() - } - }*/ -// Log.d("ImportOMDBHelper", "解析===2处理3D") -// Log.d("ImportOMDBHelper", "解析===1处理属性") - for ((key, value) in map) { - when (value) { - is String -> renderEntity.properties[key] = value - is Int -> renderEntity.properties[key] = - value.toInt().toString() - - is Double -> renderEntity.properties[key] = - value.toDouble().toString() - - else -> renderEntity.properties[key] = value.toString() - } - } -// Log.d("ImportOMDBHelper", "解析===2处理属性") -// Log.d("ImportOMDBHelper", "解析===1处理name") - // 如果properties中不包含name,那么自动将要素名称添加进properties中 - if (!renderEntity.properties.containsKey("name")) { - renderEntity.properties["name"] = renderEntity.name; - } -// Log.d("ImportOMDBHelper", "解析===2处理name") -// Log.d("ImportOMDBHelper", "解析===1处理杆状物") - - if (currentConfig.filterData) { - when (renderEntity.code.toInt()) { - - DataCodeEnum.OMDB_POLE.code.toInt() -> { - //过滤树类型的杆状物,无需导入到数据库中 - val poleType = renderEntity.properties["poleType"] - if (poleType != null && poleType.toInt() == 2) { - line = bufferedReader.readLine() - continue - } - } - - DataCodeEnum.OMDB_LANE_MARK_BOUNDARYTYPE.code.toInt() -> { - val boundaryType = - renderEntity.properties["boundaryType"] - if (boundaryType != null) { - when (boundaryType.toInt()) { - 0, 1, 6, 8, 9 -> { - renderEntity.enable = 0 -// Log.e( -// "qj", -// "过滤不显示数据${renderEntity.table}" -// ) - line = bufferedReader.readLine() - continue - } - } - } - } - - DataCodeEnum.OMDB_RDBOUND_BOUNDARYTYPE.code.toInt() -> { - val boundaryType = - renderEntity.properties["boundaryType"] - if (boundaryType != null) { - when (boundaryType.toInt()) { - 0, 1, 3, 4, 5, 7, 9 -> { - renderEntity.enable = 0 -// Log.e( -// "qj", -// "过滤不显示数据${renderEntity.table}" -// ) - line = bufferedReader.readLine() - continue - } - } - } - } - - DataCodeEnum.OMDB_OBJECT_STOPLOCATION.code.toInt() -> { - val locationType = - renderEntity.properties["locationType"] - if (locationType != null) { - when (locationType.toInt()) { - 3, 4 -> { - renderEntity.enable = 0 -// Log.e( -// "qj", -// "过滤不显示数据${renderEntity.table}" -// ) - line = bufferedReader.readLine() - continue - } - } - } - } - - DataCodeEnum.OMDB_RESTRICTION.code.toInt() -> { - if (renderEntity.properties.containsKey("linkIn") && renderEntity.properties.containsKey( - "linkOut" - ) - ) { - val linkIn = renderEntity.properties["linkIn"] - val linkOut = renderEntity.properties["linkOut"] - if (linkIn != null && linkOut != null) { - val checkMsg = "$linkIn$linkOut" - if (resHashMap.containsKey(checkMsg)) { -// Log.e( -// "qj", -// "${renderEntity.name}==过滤交限linkin与linkout相同且存在多条数据" -// ) - line = bufferedReader.readLine() - continue - } else { - resHashMap[checkMsg] = renderEntity - } - } - } - } - } - - } - -// Log.d("ImportOMDBHelper", "解析===2处理杆状物") -// Log.d("ImportOMDBHelper", "解析===1任务路线匹配") - - //遍历判断只显示与任务Link相关的任务数据 - if (currentConfig.checkLinkId) { - - if (renderEntity.linkPid.isNotEmpty()) { - - val currentLinkPid = renderEntity.linkPid - -// Log.d( -// "ImportOMDBHelper", -// "解析===1任务路线匹配${currentLinkPid}" -// ) - - if (!currentLinkPid.isNullOrEmpty() && currentLinkPid != "null") { - - val list = currentLinkPid.split(",") - - if (list.isNotEmpty()) { - -// Log.d( -// "ImportOMDBHelper", -// "解析===1任务路线匹配${list.size}" -// ) - - m@ for (linkPid in list) { - if (hashMap.containsKey(linkPid.toLong())) { - renderEntity.enable = 1 -// Log.e( -// "qj", -// "${renderEntity.name}==包括任务link" -// ) - break@m - } - } - } - } - - } else if (renderEntity.code.toInt() == DataCodeEnum.OMDB_INTERSECTION.code.toInt()||renderEntity.code.toInt() == DataCodeEnum.OMDB_LANE_CONSTRUCTION.code.toInt() && renderEntity.properties.containsKey( - "linkList" - ) - ) { - - if (renderEntity.properties["linkList"] != null) { - -// Log.e( -// "qj", -// "linkList==开始${renderEntity.name}==${renderEntity.properties["linkList"]}}" -// ) - - val linkList = renderEntity.properties["linkList"] - - if (!linkList.isNullOrEmpty() && linkList != "null") { - -// Log.e( -// "qj", -// "linkList==${renderEntity.name}==${renderEntity.properties["linkList"]}}" -// ) - - val list: List<LinkList> = gson.fromJson( - linkList, - object : TypeToken<List<LinkList>>() {}.type - ) - - m@ for (link in list) { - if (hashMap.containsKey(link.linkPid.toLong())) { - renderEntity.enable = 1 -// Log.e( -// "qj", -// "${renderEntity.name}==包括任务link" -// ) - break@m - } - } - } - } - } else { - //不包括linkPid直接过滤 + while (line != null) { + if (line == null || line.trim() == "") { line = bufferedReader.readLine() continue } - //过滤掉非任务路线上的数据 - if (renderEntity.enable != 1) { -// Log.e( -// "qj", -// "${renderEntity.name}==过滤不包括任务路线上的数据" -// ) - line = bufferedReader.readLine() - continue + elementIndex += 1 + dataIndex += 1 + val map = gson.fromJson<Map<String, Any>>( + line, object : TypeToken<Map<String, Any>>() {}.type + ).toMutableMap() + map["qi_table"] = currentConfig.table + map["qi_name"] = currentConfig.name + map["qi_code"] = + if (currentConfig.code == 0) currentConfig.code else currentEntry.key + map["qi_zoomMin"] = currentConfig.zoomMin + map["qi_zoomMax"] = currentConfig.zoomMax + + // 先查询这个mesh下有没有数据,如果有则跳过即可 + val renderEntity = RenderEntity() + renderEntity.code = map["qi_code"].toString() + renderEntity.name = map["qi_name"].toString() + renderEntity.table = map["qi_table"].toString() + renderEntity.taskId = task.id + renderEntity.zoomMin = map["qi_zoomMin"].toString().toInt() + renderEntity.zoomMax = map["qi_zoomMax"].toString().toInt() + + Log.e( + "jingo", + "安装数据 ${renderEntity.table} ${renderEntity.linkPid} $elementIndex $insertIndex" + ) + + renderEntity.geometry = map["geometry"].toString() + Log.e("jingo", "map解析开始") + for ((key, value) in map) { + when (value) { + is String -> renderEntity.properties[key] = value + is Int -> renderEntity.properties[key] = + value.toInt().toString() + + is Double -> renderEntity.properties[key] = + value.toDouble().toString() + + else -> renderEntity.properties[key] = + value.toString() + } } - } else { - renderEntity.enable = 1 + // 如果properties中不包含name,那么自动将要素名称添加进properties中 + if (!renderEntity.properties.containsKey("name")) { + renderEntity.properties["name"] = renderEntity.name; + } - /* var geometry = GeometryTools.createGeometry(renderEntity.geometry) - if(multipLine.intersects(geometry)){ - renderEntity.enable = 1 - }else{ - val dis = multipLine.distance(GeometryTools.createGeometry(renderEntity.geometry)) - if(dis>36){ - continue - }else{ - renderEntity.enable = 1 - } - }*/ -// Log.e("qj", "${renderEntity.name}==不包括任务linkPid") - } -// Log.d("ImportOMDBHelper", "解析===2任务路线匹配") -// Log.d("ImportOMDBHelper", "解析===1预处理") + Log.e("jingo", "map解析结束") - if (currentConfig.catch) { - renderEntity.catchEnable = 1 - } else { - renderEntity.catchEnable = 0 - } - - // 对renderEntity做预处理后再保存 - val resultEntity = - importConfig.transformProperties(renderEntity, realm) -// Log.d("ImportOMDBHelper", "解析===2预处理") - if (resultEntity != null) { - -// Log.d("ImportOMDBHelper", "解析===1子code处理") - //对code编码需要特殊处理 存在多个属性值时,渲染优先级:SA>PA,存在多个属性值时,渲染优先级:FRONTAGE>MAIN_SIDE_A CCESS - - if (currentConfig.existSubCode) { + if (currentConfig.filterData) { when (renderEntity.code.toInt()) { - DataCodeEnum.OMDB_LINK_ATTRIBUTE.code.toInt() -> { -// Log.e("qj", "道路属性===0") + DataCodeEnum.OMDB_POLE.code.toInt() -> { + //过滤树类型的杆状物,无需导入到数据库中 + val poleType = + renderEntity.properties["poleType"] + if (poleType != null && poleType.toInt() == 2) { + line = bufferedReader.readLine() + continue + } + } - var type = renderEntity.properties["sa"] - - if (type != null && type == "1") { - renderEntity.code = - DataCodeEnum.OMDB_LINK_ATTRIBUTE_SA.code -// Log.e("qj", "道路属性===1") - } else { - type = renderEntity.properties["pa"] - if (type != null && type == "1") { - renderEntity.code = - DataCodeEnum.OMDB_LINK_ATTRIBUTE_PA.code -// Log.e("qj", "道路属性===2") - } else { - type = - renderEntity.properties["frontage"] - if (type != null && type == "1") { - renderEntity.code = - DataCodeEnum.OMDB_LINK_ATTRIBUTE_FORNTAGE.code - renderEntity.zoomMin = 15 - renderEntity.zoomMax = 17 -// Log.e("qj", "道路属性===3") - } else { - type = - renderEntity.properties["mainSideAccess"] - if (type != null && type == "1") { - renderEntity.code = - DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code - renderEntity.zoomMin = 15 - renderEntity.zoomMax = 17 -// Log.e("qj", "道路属性===4") - } else { - renderEntity.enable = 0 - renderEntity.zoomMin = 15 - renderEntity.zoomMax = 17 -// Log.e( -// "qj", -// "过滤不显示数据${renderEntity.table}" -// ) -// Log.e("qj", "道路属性===5") - line = bufferedReader.readLine() - continue - } + DataCodeEnum.OMDB_LANE_MARK_BOUNDARYTYPE.code.toInt() -> { + val boundaryType = + renderEntity.properties["boundaryType"] + if (boundaryType != null) { + when (boundaryType.toInt()) { + 0, 1, 6, 8, 9 -> { + renderEntity.enable = 0 + line = bufferedReader.readLine() + continue } } } } - //桥 - DataCodeEnum.OMDB_BRIDGE.code.toInt() -> { - when (renderEntity.properties["bridgeType"]) { - "1" -> renderEntity.code = - DataCodeEnum.OMDB_BRIDGE_1.code - "2" -> renderEntity.code = - DataCodeEnum.OMDB_BRIDGE_2.code - // "3" -> renderEntity.code = DataCodeEnum.OMDB_BRIDGE_3.code - else -> DataCodeEnum.OMDB_BRIDGE.code - } - } - DataCodeEnum.OMDB_RAMP.code.toInt() -> { - /*匝道*/ - val formWay = - renderEntity.properties["formOfWay"] - if (formWay != null) { - when (formWay.toInt()) { - 93 -> renderEntity.code = - DataCodeEnum.OMDB_RAMP_1.code - - 98 -> renderEntity.code = - DataCodeEnum.OMDB_RAMP_2.code - - 99 -> renderEntity.code = - DataCodeEnum.OMDB_RAMP_3.code - - 100 -> renderEntity.code = - DataCodeEnum.OMDB_RAMP_4.code - - 102 -> renderEntity.code = - DataCodeEnum.OMDB_RAMP_5.code - - 103 -> renderEntity.code = - DataCodeEnum.OMDB_RAMP_6.code - - 104 -> renderEntity.code = - DataCodeEnum.OMDB_RAMP_7.code + DataCodeEnum.OMDB_RDBOUND_BOUNDARYTYPE.code.toInt() -> { + val boundaryType = + renderEntity.properties["boundaryType"] + if (boundaryType != null) { + when (boundaryType.toInt()) { + 0, 1, 3, 4, 5, 7, 9 -> { + renderEntity.enable = 0 + line = bufferedReader.readLine() + continue + } } } } - DataCodeEnum.OMDB_LINK_FORM1.code.toInt() -> { - /*道路形态1*/ - val formWay = - renderEntity.properties["formOfWay"] - if (formWay != null) { - when (formWay.toInt()) { - 35 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM1_1.code - - 37 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM1_2.code - - 38 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM1_3.code + DataCodeEnum.OMDB_OBJECT_STOPLOCATION.code.toInt() -> { + val locationType = + renderEntity.properties["locationType"] + if (locationType != null) { + when (locationType.toInt()) { + 3, 4 -> { + renderEntity.enable = 0 + line = bufferedReader.readLine() + continue + } } } } - DataCodeEnum.OMDB_LINK_FORM2.code.toInt() -> { -// Log.e( -// "qj", -// "道路形态2${renderEntity.properties["formOfWay"]}" -// ) - /*道路形态2*/ - val formWay = - renderEntity.properties["formOfWay"] - if (formWay != null) { - when (formWay.toInt()) { - 10 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_1.code + DataCodeEnum.OMDB_RESTRICTION.code.toInt() -> { + if (renderEntity.properties.containsKey("linkIn") && renderEntity.properties.containsKey( + "linkOut" + ) + ) { + val linkIn = + renderEntity.properties["linkIn"] + val linkOut = + renderEntity.properties["linkOut"] + if (linkIn != null && linkOut != null) { + val checkMsg = "$linkIn$linkOut" + if (resHashMap.containsKey(checkMsg)) { + line = bufferedReader.readLine() + continue + } else { + resHashMap[checkMsg] = renderEntity + } + } + } + } + } + } - 11 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_2.code + //遍历判断只显示与任务Link相关的任务数据 + if (currentConfig.checkLinkId) { - 17 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_3.code + if (renderEntity.linkPid.isNotEmpty()) { - 18 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_4.code + val currentLinkPid = renderEntity.linkPid - 20 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_5.code - 22 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_6.code + if (!currentLinkPid.isNullOrEmpty() && currentLinkPid != "null") { - 36 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_7.code + val list = currentLinkPid.split(",") - 52 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_8.code + if (list.isNotEmpty()) { - 53 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_9.code - - 54 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_10.code - - 60 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_11.code - - 84 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_12.code - - 85 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_13.code + m@ for (linkPid in list) { + if (hashMap.containsKey(linkPid.toLong())) { + renderEntity.enable = 1 + break@m + } } } } - DataCodeEnum.OMDB_LANE_CONSTRUCTION.code.toInt() -> { - //特殊处理空数据,渲染原则使用 - val startTime = - renderEntity.properties["startTime"] - if (startTime == null || startTime == "") { - renderEntity.properties["startTime"] = - "null" + } else if (renderEntity.code.toInt() == DataCodeEnum.OMDB_INTERSECTION.code.toInt() || renderEntity.code.toInt() == DataCodeEnum.OMDB_LANE_CONSTRUCTION.code.toInt() && renderEntity.properties.containsKey( + "linkList" + ) + ) { + + if (renderEntity.properties["linkList"] != null) { + + val linkList = + renderEntity.properties["linkList"] + + if (!linkList.isNullOrEmpty() && linkList != "null") { + + val list: List<LinkList> = gson.fromJson( + linkList, + object : + TypeToken<List<LinkList>>() {}.type + ) + + m@ for (link in list) { + if (hashMap.containsKey(link.linkPid.toLong())) { + renderEntity.enable = 1 + break@m + } + } + } + } + } else { + //不包括linkPid直接过滤 + line = bufferedReader.readLine() + continue + } + //过滤掉非任务路线上的数据 + if (renderEntity.enable != 1) { + line = bufferedReader.readLine() + continue + } + + } else { + renderEntity.enable = 1 + } + + if (currentConfig.catch) { + renderEntity.catchEnable = 1 + } else { + renderEntity.catchEnable = 0 + } + + var resultEntity = importConfig.transformProperties(renderEntity, realm) + + if (resultEntity != null) { + + if (currentConfig.existSubCode) { + when (renderEntity.code.toInt()) { + DataCodeEnum.OMDB_LINK_ATTRIBUTE.code.toInt() -> { + var type = renderEntity.properties["sa"] + + if (type != null && type == "1") { + renderEntity.code = + DataCodeEnum.OMDB_LINK_ATTRIBUTE_SA.code + } else { + type = renderEntity.properties["pa"] + if (type != null && type == "1") { + renderEntity.code = + DataCodeEnum.OMDB_LINK_ATTRIBUTE_PA.code + } else { + type = + renderEntity.properties["frontage"] + if (type != null && type == "1") { + renderEntity.code = + DataCodeEnum.OMDB_LINK_ATTRIBUTE_FORNTAGE.code + renderEntity.zoomMin = 15 + renderEntity.zoomMax = 17 + } else { + type = + renderEntity.properties["mainSideAccess"] + if (type != null && type == "1") { + renderEntity.code = + DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code + renderEntity.zoomMin = 15 + renderEntity.zoomMax = 17 + } else { + renderEntity.enable = 0 + renderEntity.zoomMin = 15 + renderEntity.zoomMax = 17 + line = + bufferedReader.readLine() + continue + } + } + } + } + } + //桥 + DataCodeEnum.OMDB_BRIDGE.code.toInt() -> { + when (renderEntity.properties["bridgeType"]) { + "1" -> renderEntity.code = + DataCodeEnum.OMDB_BRIDGE_1.code + + "2" -> renderEntity.code = + DataCodeEnum.OMDB_BRIDGE_2.code + + else -> DataCodeEnum.OMDB_BRIDGE.code + } + } + + DataCodeEnum.OMDB_RAMP.code.toInt() -> { + //*匝道*//* + val formWay = + renderEntity.properties["formOfWay"] + if (formWay != null) { + when (formWay.toInt()) { + 93 -> renderEntity.code = + DataCodeEnum.OMDB_RAMP_1.code + + 98 -> renderEntity.code = + DataCodeEnum.OMDB_RAMP_2.code + + 99 -> renderEntity.code = + DataCodeEnum.OMDB_RAMP_3.code + + 100 -> renderEntity.code = + DataCodeEnum.OMDB_RAMP_4.code + + 102 -> renderEntity.code = + DataCodeEnum.OMDB_RAMP_5.code + + 103 -> renderEntity.code = + DataCodeEnum.OMDB_RAMP_6.code + + 104 -> renderEntity.code = + DataCodeEnum.OMDB_RAMP_7.code + } + } + } + + DataCodeEnum.OMDB_LINK_FORM1.code.toInt() -> { + //*道路形态1*//* + val formWay = + renderEntity.properties["formOfWay"] + if (formWay != null) { + when (formWay.toInt()) { + 35 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM1_1.code + + 37 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM1_2.code + + 38 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM1_3.code + } + } + } + + DataCodeEnum.OMDB_LINK_FORM2.code.toInt() -> { + //*道路形态2*//* + val formWay = + renderEntity.properties["formOfWay"] + if (formWay != null) { + when (formWay.toInt()) { + 10 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_1.code + + 11 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_2.code + + 17 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_3.code + + 18 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_4.code + + 20 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_5.code + + 22 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_6.code + + 36 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_7.code + + 52 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_8.code + + 53 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_9.code + + 54 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_10.code + + 60 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_11.code + + 84 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_12.code + + 85 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_13.code + } + } + } + + DataCodeEnum.OMDB_LANE_CONSTRUCTION.code.toInt() -> { + //特殊处理空数据,渲染原则使用 + val startTime = + renderEntity.properties["startTime"] + if (startTime == null || startTime == "") { + renderEntity.properties["startTime"] = + "null" + } + } + } + + if (renderEntity.table == DataCodeEnum.OMDB_NODE_FORM.name) {//特殊处理,因为code相同,使用表名判断 + //过滤不需要渲染的要素 + val formOfWay = + renderEntity.properties["formOfWay"] + if (formOfWay != null && formOfWay.toInt() == 30) { + renderEntity.enable = 2 + renderEntity.code = + DataCodeEnum.OMDB_NODE_FORM.code + } else { + line = bufferedReader.readLine() + continue + } + } else if (renderEntity.table == DataCodeEnum.OMDB_NODE_PA.name) {//特殊处理,因为code相同,使用表名判断 + //过滤不需要渲染的要素 + val attributeType = + renderEntity.properties["attributeType"] + if (attributeType != null && attributeType.toInt() == 30) { + renderEntity.enable = 2 + renderEntity.code = + DataCodeEnum.OMDB_NODE_PA.code + } else { + line = bufferedReader.readLine() + continue } } } - if (renderEntity.table == DataCodeEnum.OMDB_NODE_FORM.name) {//特殊处理,因为code相同,使用表名判断 - //过滤不需要渲染的要素 - val formOfWay = renderEntity.properties["formOfWay"] - if (formOfWay != null && formOfWay.toInt() == 30) { - renderEntity.enable = 2 - renderEntity.code = - DataCodeEnum.OMDB_NODE_FORM.code - } else { -// Log.e( -// "qj", -// "过滤不显示数据${renderEntity.table}" -// ) - line = bufferedReader.readLine() - continue - } - } else if (renderEntity.table == DataCodeEnum.OMDB_NODE_PA.name) {//特殊处理,因为code相同,使用表名判断 - //过滤不需要渲染的要素 - val attributeType = - renderEntity.properties["attributeType"] - if (attributeType != null && attributeType.toInt() == 30) { - renderEntity.enable = 2 - renderEntity.code = - DataCodeEnum.OMDB_NODE_PA.code - } else { -// Log.e( -// "qj", -// "过滤不显示数据${renderEntity.table}" -// ) - line = bufferedReader.readLine() - continue - } + ++insertIndex + + //移除该字段,减少数据量 + if (renderEntity.properties.containsKey("geometry")) { + renderEntity.properties.remove("geometry") } - } -// Log.d("ImportOMDBHelper", "解析===2子code处理") - ++insertIndex - Log.e("qj", "统计==${insertIndex}") - - //移除该字段,减少数据量 - if (renderEntity.properties.containsKey("geometry")) { - renderEntity.properties.remove("geometry") - } - - //移除该字段,减少数据量 - if (renderEntity.properties.containsKey("linkPid")) { - renderEntity.properties.remove("linkPid") - } - - // 如果当前解析的是OMDB_RD_LINK数据,将其缓存在预处理类中,以便后续处理其他要素时使用 - if (currentConfig.code == DataCodeEnum.OMDB_RD_LINK.code.toInt()) { - if (renderEntity.linkRelation == null) { - renderEntity.linkRelation = LinkRelation() + //移除该字段,减少数据量 + if (renderEntity.properties.containsKey("linkPid")) { + renderEntity.properties.remove("linkPid") } - renderEntity.linkRelation!!.linkPid = - renderEntity.linkPid - renderEntity.linkRelation!!.sNodeId = - renderEntity.properties["snodePid"] - renderEntity.linkRelation!!.eNodeId = - renderEntity.properties["enodePid"] - } - renderEntity.propertiesDb = StrZipUtil.compress( - gson.toJson(renderEntity.properties).toString() - ) - listRenderEntity.add(renderEntity) + // 如果当前解析的是OMDB_RD_LINK数据,将其缓存在预处理类中,以便后续处理其他要素时使用 + if (currentConfig.code == DataCodeEnum.OMDB_RD_LINK.code.toInt()) { + if (renderEntity.linkRelation == null) { + renderEntity.linkRelation = LinkRelation() + } + renderEntity.linkRelation!!.linkPid = + renderEntity.linkPid + renderEntity.linkRelation!!.sNodeId = + renderEntity.properties["snodePid"] + renderEntity.linkRelation!!.eNodeId = + renderEntity.properties["enodePid"] + } + + //去掉暂用控件较大的字段多余属性字段 + if (renderEntity.properties.containsKey("shapeList")) { + renderEntity.properties.remove("shapeList") + } + + var gsonStr = gson.toJson(renderEntity.properties).toString() + renderEntity.propertiesDb = StrZipUtil.compress(gsonStr) + + listRenderEntity.add(renderEntity) + } + + if (listRenderEntity.size > 50000) { + Log.e("jingo", "50000刷新") + realm.copyToRealmOrUpdate(listRenderEntity) + realm.commitTransaction() + realm.close() + listRenderEntity.clear() + insertIndex = 0 + realm = Realm.getInstance(currentInstallTaskConfig) + realm.beginTransaction() + } + line = bufferedReader.readLine() } - - if (listRenderEntity.size > 10000) { - Log.e( - "jingo", "10000刷新" - ) - realm.copyToRealm(listRenderEntity) - realm.commitTransaction() - realm.close() - listRenderEntity.clear() - insertIndex = 0 -// Realm.compactRealm(currentInstallTaskConfig) - realm = Realm.getInstance(currentInstallTaskConfig) - realm.beginTransaction() - } - line = bufferedReader.readLine() + bufferedReader.close() + } catch (e: Exception) { + CMLog.writeLogtoFile( + ImportOMDBHelper::class.java.name, + "importOmdbZipFile", + "${currentConfig.table}安装异常" + ) } - bufferedReader.close() + } else { + CMLog.writeLogtoFile( + ImportOMDBHelper::class.java.name, + "importOmdbZipFile", + "文件不存在" + ) } // 1个文件发送一次flow流 emit("${processIndex}/${tableNum}") -// Log.d("ImportOMDBHelper", "表解析===2${currentConfig.table}") -// Log.d( -// "ImportOMDBHelper", -// "表解析===结束用时时间${(System.currentTimeMillis() - tableImportTime)}===${currentEntry.value.table}===$elementIndex" -// ) + CMLog.writeLogtoFile( + ImportOMDBHelper::class.java.name, + "importOmdbZipFile", + "${currentConfig.table}结束==$elementIndex" + ) elementIndex = 0 -// tableImportTime = System.currentTimeMillis() - } } + CMLog.writeLogtoFile( + ImportOMDBHelper::class.java.name, + "importOmdbZipFile", + "结束===总量$dataIndex" + ) - realm.copyToRealm(listRenderEntity) + realm.copyToRealmOrUpdate(listRenderEntity) realm.commitTransaction() - realm.close() listRenderEntity.clear() -// Log.d( -// "ImportOMDBHelper", -// "表解析===结束用时时间${(System.currentTimeMillis() - dataImportTime)}===$dataIndex===插入$insertIndex" -// ) Log.e("qj", "安装结束") } catch (e: Exception) { if (realm.isInTransaction) { diff --git a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt index 871db6ee..c71508c0 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt @@ -740,9 +740,11 @@ class ImportPreProcess { // angleReference.renderEntityId = renderEntity.id angleReference.name = "${renderEntity.name}车道中线面" angleReference.table = renderEntity.table + Log.e("jingo", "几何转换开始") angleReference.geometry = - GeometryTools.createGeometry(renderEntity.geometry).buffer(0.000035) + GeometryTools.createGeometry(renderEntity.geometry).buffer(0.000010) .toString()//GeometryTools.computeLine(0.000035,0.000035,renderEntity.geometry) + Log.e("jingo", "几何转换结束") angleReference.properties["qi_table"] = renderEntity.table angleReference.properties["widthProperties"] = "3" angleReference.zoomMin = renderEntity.zoomMin @@ -750,9 +752,6 @@ class ImportPreProcess { angleReference.taskId = renderEntity.taskId angleReference.enable = renderEntity.enable val listResult = mutableListOf<ReferenceEntity>() - angleReference.propertiesDb = StrZipUtil.compress( - gson.toJson(angleReference.properties).toString() - ) listResult.add(angleReference) insertData(listResult) } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt index 67fac786..9e17469e 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt @@ -473,6 +473,71 @@ class TaskViewModel @Inject constructor( } } + /** + * 重新下载数据任务 + */ + fun resetDownload(context: Context, taskBean: TaskBean) { + val mDialog = FirstDialog(context) + mDialog.setTitle("提示?") + mDialog.setMessage("是否重置下载状态,请确认!") + mDialog.setPositiveButton( + "确定" + ) { dialog, _ -> + dialog.dismiss() + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_BEGIN) + viewModelScope.launch(Dispatchers.IO) { + //删除已下载的数据 + val fileTemp = + File("${Constant.DOWNLOAD_PATH}${taskBean.evaluationTaskName}_${taskBean.dataVersion}.zip") + if (fileTemp.exists()) { + fileTemp.delete() + } + val taskFileTemp = File(Constant.USER_DATA_PATH + "/${taskBean.id}") + //重命名 + if (taskFileTemp.exists()) { + /* var currentSelectTaskFolder = File(Constant.USER_DATA_PATH + "/${taskBean.id}") + var currentSelectTaskConfig = + RealmConfiguration.Builder().directory(currentSelectTaskFolder) + .name("OMQS.realm").encryptionKey(Constant.PASSWORD) + .allowQueriesOnUiThread(true) + .schemaVersion(2).build() + Realm.getInstance(currentSelectTaskConfig).executeTransaction { r -> + //删除已有所有数据 + r.delete(RenderEntity::class.java) + r.delete(ReferenceEntity::class.java) + } + Realm.getInstance(currentSelectTaskConfig).close()*/ + } + //将下载状态修改已下载 + val realm = realmOperateHelper.getRealmDefaultInstance() + taskBean.syncStatus = FileManager.Companion.FileUploadStatus.NONE + taskBean.status = FileManager.Companion.FileDownloadStatus.NONE + realm.beginTransaction() + realm.copyToRealmOrUpdate(taskBean) + realm.commitTransaction() + realm.close() + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_SUCCESS) + withContext(Dispatchers.Main) { + if (taskBean.id == currentSelectTaskBean?.id ?: 0) { + mapController.layerManagerHandler.updateOMDBVectorTileLayer() + } else { + setSelectTaskBean(taskBean) + } + realmOperateHelper.getRealmDefaultInstance().refresh() + //重新加载数据 + getLocalTaskList() + } + } + } + mDialog.setNegativeButton( + "取消" + ) { _, _ -> + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_CANCEL) + mDialog.dismiss() + } + mDialog.show() + } + /** * 关闭任务 */ @@ -484,7 +549,9 @@ class TaskViewModel @Inject constructor( "确定" ) { dialog, _ -> dialog.dismiss() + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_BEGIN) viewModelScope.launch(Dispatchers.IO) { + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_LOADING) val realm = realmOperateHelper.getRealmDefaultInstance() realm.executeTransaction { val objects = @@ -518,14 +585,14 @@ class TaskViewModel @Inject constructor( FileManager.checkOMDBFileInfo(item) } liveDataTaskList.postValue(taskList) - liveDataCloseTask.postValue(true) + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_SUCCESS) realm.close() } } mDialog.setNegativeButton( "取消" ) { _, _ -> - liveDataCloseTask.postValue(false) + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_CANCEL) mDialog.dismiss() } mDialog.show() diff --git a/vtm b/vtm index c046e788..9e0cc6dc 160000 --- a/vtm +++ b/vtm @@ -1 +1 @@ -Subproject commit c046e788f5c739612a31c308639fca2de639669a +Subproject commit 9e0cc6dcdce04d1082ed6459e8810d6329e8cfdc