From 6d4f23517cab2e9bee8e6f11a0a60884498314ce Mon Sep 17 00:00:00 2001 From: chenglifeng Date: Mon, 3 Mar 2025 10:35:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=87=E6=8D=A2=E9=A1=B9=E7=9B=AE=E6=97=B6?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=BD=93=E5=89=8D=E9=A1=B9=E7=9B=AE=E5=9D=90?= =?UTF-8?q?=E6=A0=87=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../viewmodel/CoordinateSystemViewModel.kt | 22 +----- .../logic/viewmodel/ProjectViewModel.kt | 24 +++++- .../java/com/project/survey/network/Api.kt | 3 +- .../survey/ui/home/InstrumentFragment.kt | 1 + .../CoordinateSystemContainerFragment.java | 16 +++- .../survey/ui/project/ProjectListActivity.kt | 77 ++++++++++++------- .../menu/menu_fragment_coordinate_system.xml | 4 +- 7 files changed, 88 insertions(+), 59 deletions(-) diff --git a/app/src/main/java/com/project/survey/logic/viewmodel/CoordinateSystemViewModel.kt b/app/src/main/java/com/project/survey/logic/viewmodel/CoordinateSystemViewModel.kt index 3d68e45..0454886 100644 --- a/app/src/main/java/com/project/survey/logic/viewmodel/CoordinateSystemViewModel.kt +++ b/app/src/main/java/com/project/survey/logic/viewmodel/CoordinateSystemViewModel.kt @@ -2,18 +2,8 @@ package com.project.survey.logic.viewmodel import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import blankj.utilcode.util.ActivityUtils -import com.bingce.data.base.user.UserConfig -import com.bingce.data.base.user.UserConfigConstants -import com.bingce.data.database.AppDataBase -import com.google.gson.Gson -import com.project.survey.constants.SPConstants import com.project.survey.model.CoordinateSystemData -import com.project.survey.model.LoginBean import com.project.survey.network.RetrofitClient -import com.project.survey.ui.login.LoginActivity -import com.project.survey.ui.project.ProjectListActivity -import com.project.survey.util.SPUtils class CoordinateSystemViewModel : BaseViewModel() { @@ -42,17 +32,7 @@ class CoordinateSystemViewModel : BaseViewModel() { launch { val res = api.downloadCoordinateSystem() if (res.success) { - if (res.data == null || res.data is String) { - errorResponse.postValue(res.message) - return@launch - } - try { - val gson = Gson() - val data = gson.fromJson(res.data.toString(), CoordinateSystemData::class.java) - _downloadCoordinateSystemResponse.postValue(data) - } catch (e: Exception) { - errorResponse.postValue(res.message) - } + _downloadCoordinateSystemResponse.postValue(res.data) } else { errorResponse.postValue(res.message) } diff --git a/app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt b/app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt index 60757d9..68a3d27 100644 --- a/app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt +++ b/app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt @@ -23,6 +23,8 @@ import com.project.survey.model.PointEntry import com.project.survey.model.ProjectBean import com.project.survey.network.RetrofitClient import com.project.survey.util.SPUtils +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext class ProjectViewModel : BaseViewModel() { @@ -74,10 +76,10 @@ class ProjectViewModel : BaseViewModel() { fun loadFuncPerm(bean: ApprovalBean) { launch { val res = api.loadFuncPerm(funcCode = bean.funcCode) - if ("BD_KZW_ZY" == bean.funcCode){ //如果是专用控制网的,子功能也需要调用 + if ("BD_KZW_ZY" == bean.funcCode) { //如果是专用控制网的,子功能也需要调用 api.loadFuncPerm(funcCode = "BD_KZWZBCG_CHILD_ZY") } - if ("BD_KZW" == bean.funcCode){ //如果是首级控制网的,子功能也需要调用 + if ("BD_KZW" == bean.funcCode) { //如果是首级控制网的,子功能也需要调用 api.loadFuncPerm(funcCode = "BD_KZWZBCG_CHILD") } if (res.success) { @@ -302,4 +304,22 @@ class ProjectViewModel : BaseViewModel() { } } + /** + * 拉取坐标 + */ + fun fetchCoordinateSystem(onSuccess: (String) -> Unit, onFailure: (String) -> Unit) { + launch { + val res = api.downloadCoordinateSystem() + if (res.success) { + withContext(Dispatchers.Main) { + onSuccess(res.data.ZBZHCS_ZHCS) + } + } else { + withContext(Dispatchers.Main) { + onFailure(res.message) + } + } + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/network/Api.kt b/app/src/main/java/com/project/survey/network/Api.kt index 524ece6..d6255f4 100644 --- a/app/src/main/java/com/project/survey/network/Api.kt +++ b/app/src/main/java/com/project/survey/network/Api.kt @@ -6,6 +6,7 @@ import com.project.survey.model.ApprovalResponse import com.project.survey.model.ControlNetworkBean import com.project.survey.model.ControlNetCGBean import com.project.survey.model.ControlNetworkInfoBean +import com.project.survey.model.CoordinateSystemData import com.project.survey.model.FirstControlNetworkBean import com.project.survey.model.FirstControlNetworkVersionBean import com.project.survey.model.InspectionReportBean @@ -280,5 +281,5 @@ interface Api { suspend fun downloadCoordinateSystem( // @Header("projectId") projectId: String = SPUtils.getString(SPConstants.PROJECT_ID) @Field("projectId") projectId: String = SPUtils.getString(SPConstants.PROJECT_ID) - ): HttpResult + ): HttpResult } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/ui/home/InstrumentFragment.kt b/app/src/main/java/com/project/survey/ui/home/InstrumentFragment.kt index 9dcfc5b..da9626e 100644 --- a/app/src/main/java/com/project/survey/ui/home/InstrumentFragment.kt +++ b/app/src/main/java/com/project/survey/ui/home/InstrumentFragment.kt @@ -114,6 +114,7 @@ class InstrumentFragment : BaseBindingFragment() { } //坐标系统 mBinding.itemCoordinateSystem.setOnClickListener { +// BingCeCoordinateSystemActivity.view(requireContext(), "坐标系统", "") BingCeCoordinateSystemActivity.viewAndModifyCurrentCoordinateSystem(requireContext()) } //点校正 diff --git a/app/src/main/java/com/project/survey/ui/instrument/coordinatesystem/fragment/CoordinateSystemContainerFragment.java b/app/src/main/java/com/project/survey/ui/instrument/coordinatesystem/fragment/CoordinateSystemContainerFragment.java index c41faec..4f4719c 100644 --- a/app/src/main/java/com/project/survey/ui/instrument/coordinatesystem/fragment/CoordinateSystemContainerFragment.java +++ b/app/src/main/java/com/project/survey/ui/instrument/coordinatesystem/fragment/CoordinateSystemContainerFragment.java @@ -325,11 +325,19 @@ public class CoordinateSystemContainerFragment extends AbstractCoordinateSystemC mSlidingTabLayout.setCurrentTab(index, true); } }); - } else*/ if (itemId == R.id.menu_fragment_coordinate_system_share) { //分享坐标系统 + } else*/ if (itemId == R.id.menu_fragment_coordinate_system_share) { //上传 // showShareParametersDialog(); - String coordinateSystemString = CoordinateSystemUtil.exportCoordSysString(currentCoordinateSystem()); - viewModel.uploadCoordinateSystem(coordinateSystemString); - } else if (itemId == R.id.menu_fragment_coordinate_system_import) { //导入坐标系统 + new MaterialDialog.Builder(requireContext()) + .title("提示") + .content("上传坐标系统参数后,其他用户可下载使用,确认将该坐标参数上传至平台吗?") + .positiveText(R.string.confirm) + .negativeText(R.string.cancel) + .onPositive((materialDialog, dialogAction) -> { + String coordinateSystemString = CoordinateSystemUtil.exportCoordSysString(currentCoordinateSystem()); + viewModel.uploadCoordinateSystem(coordinateSystemString); + }) + .show(); + } else if (itemId == R.id.menu_fragment_coordinate_system_import) { //下载 // showImportParametersDialog(); viewModel.downloadCoordinateSystem(); } diff --git a/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt b/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt index f9b5aa2..c6bacc2 100644 --- a/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt +++ b/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt @@ -5,6 +5,7 @@ import android.view.MenuItem import androidx.activity.viewModels import com.afollestad.materialdialogs.MaterialDialog import com.bingce.coordlib.model.CoordinateSystem +import com.bingce.coordlib.util.CoordinateSystemUtil import com.bingce.data.database.KeyValueDb import com.bingce.data.database.ProjectDb import com.bingce.data.surveyor.designdata.kv.KeyValueConstants @@ -17,8 +18,10 @@ import com.project.survey.constants.SPConstants import com.project.survey.databinding.ActivityProjectListBinding import com.project.survey.extend.smartDismiss import com.project.survey.extend.toast +import com.project.survey.extend.toastLong import com.project.survey.logic.event.Message import com.project.survey.logic.viewmodel.ProjectViewModel +import com.project.survey.model.ProjectBean import com.project.survey.ui.MainActivity import com.project.survey.ui.base.BaseBindingActivity import com.project.survey.ui.login.LoginActivity @@ -93,44 +96,60 @@ class ProjectListActivity : BaseBindingActivity(), O } override fun initListener() { - adapter.setOnItemClickListener { _, _, position -> + adapter.setOnItemClickListener { adapter, _, position -> adapter.getItem(position)?.let { bean -> // 进入项目,设置当前项目 SPUtils.put(SPConstants.CURRENT_PROJECT, bean) SPUtils.put(SPConstants.PROJECT_ID, bean.XMXX_ID) - // 存储配置--当前项目 - ThreadPoolUtil.execute { - //存储新的项目 - ProjectDb.getInstance().save( - ProjectRecord( - bean.XMXX_ID, - bean.XMXX_NAME, - CoordinateSystem.newCoordinateSystem(this), - Date().time - ).apply { - author = bean.XMXX_CONTACTNAME - } - ) + // 查询当前项目坐标系统 + viewModel.fetchCoordinateSystem({ coordinateSystemString -> + val coordinateSystem = + CoordinateSystemUtil.importCoordSysString(coordinateSystemString) + nav2Main(bean, coordinateSystem) + }, { message -> + toastLong(message + "使用默认坐标系统") + nav2Main(bean) + }) + + } + } + } - var currentProjectConfig = - KeyValueDb.getInstance().findData(KeyValueConstants.KEY_CURRENT_PROJECT_ID) - if (currentProjectConfig != null) { - currentProjectConfig.value = bean.XMXX_ID - } else { - currentProjectConfig = - KeyValueRecord( - KeyValueConstants.KEY_CURRENT_PROJECT_ID, - bean.XMXX_ID - ) - } - KeyValueDb.getInstance().save(currentProjectConfig) + private fun nav2Main( + bean: ProjectBean, + coordinateSystem: CoordinateSystem = CoordinateSystem.newCoordinateSystem(this) + ) { + // 存储配置--当前项目 + ThreadPoolUtil.execute { + //存储新的项目 + ProjectDb.getInstance().save( + ProjectRecord( + bean.XMXX_ID, + bean.XMXX_NAME, + coordinateSystem, + Date().time + ).apply { + author = bean.XMXX_CONTACTNAME } + ) - viewModel.msgEvent.postValue(Message(EventConstants.UPDATE_PROJECT)) - MainActivity.start() - ActivityNavUtil.finishActivity() + var currentProjectConfig = + KeyValueDb.getInstance().findData(KeyValueConstants.KEY_CURRENT_PROJECT_ID) + if (currentProjectConfig != null) { + currentProjectConfig.value = bean.XMXX_ID + } else { + currentProjectConfig = + KeyValueRecord( + KeyValueConstants.KEY_CURRENT_PROJECT_ID, + bean.XMXX_ID + ) } + KeyValueDb.getInstance().save(currentProjectConfig) } + + viewModel.msgEvent.postValue(Message(EventConstants.UPDATE_PROJECT)) + MainActivity.start() + ActivityNavUtil.finishActivity() } // private fun initTabLayout() { diff --git a/app/src/main/res/menu/menu_fragment_coordinate_system.xml b/app/src/main/res/menu/menu_fragment_coordinate_system.xml index b61d166..21c97a7 100644 --- a/app/src/main/res/menu/menu_fragment_coordinate_system.xml +++ b/app/src/main/res/menu/menu_fragment_coordinate_system.xml @@ -13,10 +13,10 @@ \ No newline at end of file