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

main
chenglifeng 2 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.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)
}

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

@ -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<Any?>
): HttpResult<CoordinateSystemData>
}

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

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

@ -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<ActivityProjectListBinding>(), 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<ProjectListActivity>()
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<ProjectListActivity>()
}
// private fun initTabLayout() {

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