切换项目时更新当前项目坐标系统

main
chenglifeng 4 months ago
parent 9ee9332188
commit 6d4f23517c
  1. 22
      app/src/main/java/com/project/survey/logic/viewmodel/CoordinateSystemViewModel.kt
  2. 24
      app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt
  3. 3
      app/src/main/java/com/project/survey/network/Api.kt
  4. 1
      app/src/main/java/com/project/survey/ui/home/InstrumentFragment.kt
  5. 16
      app/src/main/java/com/project/survey/ui/instrument/coordinatesystem/fragment/CoordinateSystemContainerFragment.java
  6. 77
      app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt
  7. 4
      app/src/main/res/menu/menu_fragment_coordinate_system.xml

@ -2,18 +2,8 @@ package com.project.survey.logic.viewmodel
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData 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.CoordinateSystemData
import com.project.survey.model.LoginBean
import com.project.survey.network.RetrofitClient 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() { class CoordinateSystemViewModel : BaseViewModel() {
@ -42,17 +32,7 @@ class CoordinateSystemViewModel : BaseViewModel() {
launch { launch {
val res = api.downloadCoordinateSystem() val res = api.downloadCoordinateSystem()
if (res.success) { if (res.success) {
if (res.data == null || res.data is String) { _downloadCoordinateSystemResponse.postValue(res.data)
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)
}
} else { } else {
errorResponse.postValue(res.message) errorResponse.postValue(res.message)
} }

@ -23,6 +23,8 @@ import com.project.survey.model.PointEntry
import com.project.survey.model.ProjectBean import com.project.survey.model.ProjectBean
import com.project.survey.network.RetrofitClient import com.project.survey.network.RetrofitClient
import com.project.survey.util.SPUtils import com.project.survey.util.SPUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
class ProjectViewModel : BaseViewModel() { class ProjectViewModel : BaseViewModel() {
@ -74,10 +76,10 @@ class ProjectViewModel : BaseViewModel() {
fun loadFuncPerm(bean: ApprovalBean) { fun loadFuncPerm(bean: ApprovalBean) {
launch { launch {
val res = api.loadFuncPerm(funcCode = bean.funcCode) 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") api.loadFuncPerm(funcCode = "BD_KZWZBCG_CHILD_ZY")
} }
if ("BD_KZW" == bean.funcCode){ //如果是首级控制网的,子功能也需要调用 if ("BD_KZW" == bean.funcCode) { //如果是首级控制网的,子功能也需要调用
api.loadFuncPerm(funcCode = "BD_KZWZBCG_CHILD") api.loadFuncPerm(funcCode = "BD_KZWZBCG_CHILD")
} }
if (res.success) { 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)
}
}
}
}
} }

@ -6,6 +6,7 @@ import com.project.survey.model.ApprovalResponse
import com.project.survey.model.ControlNetworkBean import com.project.survey.model.ControlNetworkBean
import com.project.survey.model.ControlNetCGBean import com.project.survey.model.ControlNetCGBean
import com.project.survey.model.ControlNetworkInfoBean import com.project.survey.model.ControlNetworkInfoBean
import com.project.survey.model.CoordinateSystemData
import com.project.survey.model.FirstControlNetworkBean import com.project.survey.model.FirstControlNetworkBean
import com.project.survey.model.FirstControlNetworkVersionBean import com.project.survey.model.FirstControlNetworkVersionBean
import com.project.survey.model.InspectionReportBean import com.project.survey.model.InspectionReportBean
@ -280,5 +281,5 @@ interface Api {
suspend fun downloadCoordinateSystem( suspend fun downloadCoordinateSystem(
// @Header("projectId") projectId: String = SPUtils.getString(SPConstants.PROJECT_ID) // @Header("projectId") projectId: String = SPUtils.getString(SPConstants.PROJECT_ID)
@Field("projectId") projectId: String = SPUtils.getString(SPConstants.PROJECT_ID) @Field("projectId") projectId: String = SPUtils.getString(SPConstants.PROJECT_ID)
): HttpResult<Any?> ): HttpResult<CoordinateSystemData>
} }

@ -114,6 +114,7 @@ class InstrumentFragment : BaseBindingFragment<FragmentInstrumentBinding>() {
} }
//坐标系统 //坐标系统
mBinding.itemCoordinateSystem.setOnClickListener { mBinding.itemCoordinateSystem.setOnClickListener {
// BingCeCoordinateSystemActivity.view(requireContext(), "坐标系统", "")
BingCeCoordinateSystemActivity.viewAndModifyCurrentCoordinateSystem(requireContext()) BingCeCoordinateSystemActivity.viewAndModifyCurrentCoordinateSystem(requireContext())
} }
//点校正 //点校正

@ -325,11 +325,19 @@ public class CoordinateSystemContainerFragment extends AbstractCoordinateSystemC
mSlidingTabLayout.setCurrentTab(index, true); 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(); // showShareParametersDialog();
String coordinateSystemString = CoordinateSystemUtil.exportCoordSysString(currentCoordinateSystem()); new MaterialDialog.Builder(requireContext())
viewModel.uploadCoordinateSystem(coordinateSystemString); .title("提示")
} else if (itemId == R.id.menu_fragment_coordinate_system_import) { //导入坐标系统 .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(); // showImportParametersDialog();
viewModel.downloadCoordinateSystem(); viewModel.downloadCoordinateSystem();
} }

@ -5,6 +5,7 @@ import android.view.MenuItem
import androidx.activity.viewModels import androidx.activity.viewModels
import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.MaterialDialog
import com.bingce.coordlib.model.CoordinateSystem import com.bingce.coordlib.model.CoordinateSystem
import com.bingce.coordlib.util.CoordinateSystemUtil
import com.bingce.data.database.KeyValueDb import com.bingce.data.database.KeyValueDb
import com.bingce.data.database.ProjectDb import com.bingce.data.database.ProjectDb
import com.bingce.data.surveyor.designdata.kv.KeyValueConstants 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.databinding.ActivityProjectListBinding
import com.project.survey.extend.smartDismiss import com.project.survey.extend.smartDismiss
import com.project.survey.extend.toast import com.project.survey.extend.toast
import com.project.survey.extend.toastLong
import com.project.survey.logic.event.Message import com.project.survey.logic.event.Message
import com.project.survey.logic.viewmodel.ProjectViewModel import com.project.survey.logic.viewmodel.ProjectViewModel
import com.project.survey.model.ProjectBean
import com.project.survey.ui.MainActivity import com.project.survey.ui.MainActivity
import com.project.survey.ui.base.BaseBindingActivity import com.project.survey.ui.base.BaseBindingActivity
import com.project.survey.ui.login.LoginActivity import com.project.survey.ui.login.LoginActivity
@ -93,44 +96,60 @@ class ProjectListActivity : BaseBindingActivity<ActivityProjectListBinding>(), O
} }
override fun initListener() { override fun initListener() {
adapter.setOnItemClickListener { _, _, position -> adapter.setOnItemClickListener { adapter, _, position ->
adapter.getItem(position)?.let { bean -> adapter.getItem(position)?.let { bean ->
// 进入项目,设置当前项目 // 进入项目,设置当前项目
SPUtils.put(SPConstants.CURRENT_PROJECT, bean) SPUtils.put(SPConstants.CURRENT_PROJECT, bean)
SPUtils.put(SPConstants.PROJECT_ID, bean.XMXX_ID) SPUtils.put(SPConstants.PROJECT_ID, bean.XMXX_ID)
// 存储配置--当前项目 // 查询当前项目坐标系统
ThreadPoolUtil.execute { viewModel.fetchCoordinateSystem({ coordinateSystemString ->
//存储新的项目 val coordinateSystem =
ProjectDb.getInstance().save( CoordinateSystemUtil.importCoordSysString(coordinateSystemString)
ProjectRecord( nav2Main(bean, coordinateSystem)
bean.XMXX_ID, }, { message ->
bean.XMXX_NAME, toastLong(message + "使用默认坐标系统")
CoordinateSystem.newCoordinateSystem(this), nav2Main(bean)
Date().time })
).apply {
author = bean.XMXX_CONTACTNAME }
} }
) }
var currentProjectConfig = private fun nav2Main(
KeyValueDb.getInstance().findData(KeyValueConstants.KEY_CURRENT_PROJECT_ID) bean: ProjectBean,
if (currentProjectConfig != null) { coordinateSystem: CoordinateSystem = CoordinateSystem.newCoordinateSystem(this)
currentProjectConfig.value = bean.XMXX_ID ) {
} else { // 存储配置--当前项目
currentProjectConfig = ThreadPoolUtil.execute {
KeyValueRecord( //存储新的项目
KeyValueConstants.KEY_CURRENT_PROJECT_ID, ProjectDb.getInstance().save(
bean.XMXX_ID ProjectRecord(
) bean.XMXX_ID,
} bean.XMXX_NAME,
KeyValueDb.getInstance().save(currentProjectConfig) coordinateSystem,
Date().time
).apply {
author = bean.XMXX_CONTACTNAME
} }
)
viewModel.msgEvent.postValue(Message(EventConstants.UPDATE_PROJECT)) var currentProjectConfig =
MainActivity.start() KeyValueDb.getInstance().findData(KeyValueConstants.KEY_CURRENT_PROJECT_ID)
ActivityNavUtil.finishActivity<ProjectListActivity>() 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<ProjectListActivity>()
} }
// private fun initTabLayout() { // private fun initTabLayout() {

@ -13,10 +13,10 @@
<item <item
android:id="@+id/menu_fragment_coordinate_system_share" android:id="@+id/menu_fragment_coordinate_system_share"
android:title="@string/share_coordinate_system" android:title=" 上传 "
app:showAsAction="never" /> app:showAsAction="never" />
<item <item
android:id="@+id/menu_fragment_coordinate_system_import" android:id="@+id/menu_fragment_coordinate_system_import"
android:title="@string/import_coordinate_system" android:title=" 下载 "
app:showAsAction="never" /> app:showAsAction="never" />
</menu> </menu>
Loading…
Cancel
Save