diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 60770c7..08a5f66 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -72,22 +72,22 @@ /** * 施工现场详情 */ - suspend fun getProjectDetail(projectId: String): String { - return api.getProjectDetail(AuthenticationHelper.token!!, projectId) + suspend fun getProjectDetail(): String { + return api.getProjectDetail(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取施工现场的设备 */ - suspend fun getWorkSiteDevices(projectId: String): String { - return api.getWorkSiteDevices(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteDevices(): String { + return api.getWorkSiteDevices(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取工作区域作业人员 */ - suspend fun getWorkSiteWorkers(projectId: String): String { - return api.getWorkSiteWorkers(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteWorkers(): String { + return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** @@ -164,7 +164,6 @@ * 人员申请入场 */ suspend fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -207,7 +206,7 @@ ) val projectIdMap = HashMap() - projectIdMap["projectId"] = projectId + projectIdMap["projectId"] = RuntimeCache.projectId return api.enter(AuthenticationHelper.token!!, requestBody, projectIdMap) } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 60770c7..08a5f66 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -72,22 +72,22 @@ /** * 施工现场详情 */ - suspend fun getProjectDetail(projectId: String): String { - return api.getProjectDetail(AuthenticationHelper.token!!, projectId) + suspend fun getProjectDetail(): String { + return api.getProjectDetail(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取施工现场的设备 */ - suspend fun getWorkSiteDevices(projectId: String): String { - return api.getWorkSiteDevices(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteDevices(): String { + return api.getWorkSiteDevices(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取工作区域作业人员 */ - suspend fun getWorkSiteWorkers(projectId: String): String { - return api.getWorkSiteWorkers(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteWorkers(): String { + return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** @@ -164,7 +164,6 @@ * 人员申请入场 */ suspend fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -207,7 +206,7 @@ ) val projectIdMap = HashMap() - projectIdMap["projectId"] = projectId + projectIdMap["projectId"] = RuntimeCache.projectId return api.enter(AuthenticationHelper.token!!, requestBody, projectIdMap) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 3e88675..33b0d66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -125,35 +125,33 @@ }, onSuccess = { LoadingDialog.dismiss() - if (it.code == 200) { - it.data?.let { - val dataRows = it.rows - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - alarmAdapter.refresh(dataRows) - } - - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@getAlarmListByPage - } - alarmAdapter.loadMore(dataRows) - } - - else -> initRecyclerView(dataRows) + it.data?.let { + val dataRows = it.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + alarmAdapter.refresh(dataRows) } - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getAlarmListByPage + } + alarmAdapter.loadMore(dataRows) } + + else -> initRecyclerView(dataRows) + } + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE } } }, diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 60770c7..08a5f66 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -72,22 +72,22 @@ /** * 施工现场详情 */ - suspend fun getProjectDetail(projectId: String): String { - return api.getProjectDetail(AuthenticationHelper.token!!, projectId) + suspend fun getProjectDetail(): String { + return api.getProjectDetail(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取施工现场的设备 */ - suspend fun getWorkSiteDevices(projectId: String): String { - return api.getWorkSiteDevices(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteDevices(): String { + return api.getWorkSiteDevices(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取工作区域作业人员 */ - suspend fun getWorkSiteWorkers(projectId: String): String { - return api.getWorkSiteWorkers(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteWorkers(): String { + return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** @@ -164,7 +164,6 @@ * 人员申请入场 */ suspend fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -207,7 +206,7 @@ ) val projectIdMap = HashMap() - projectIdMap["projectId"] = projectId + projectIdMap["projectId"] = RuntimeCache.projectId return api.enter(AuthenticationHelper.token!!, requestBody, projectIdMap) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 3e88675..33b0d66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -125,35 +125,33 @@ }, onSuccess = { LoadingDialog.dismiss() - if (it.code == 200) { - it.data?.let { - val dataRows = it.rows - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - alarmAdapter.refresh(dataRows) - } - - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@getAlarmListByPage - } - alarmAdapter.loadMore(dataRows) - } - - else -> initRecyclerView(dataRows) + it.data?.let { + val dataRows = it.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + alarmAdapter.refresh(dataRows) } - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getAlarmListByPage + } + alarmAdapter.loadMore(dataRows) } + + else -> initRecyclerView(dataRows) + } + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE } } }, diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index ca69988..4f9b121 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -14,7 +14,6 @@ import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initImmersionBar import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.casic.br.operationsite.vm.ApplyViewModel import com.casic.br.operationsite.vm.UploadFileViewModel import com.luck.picture.lib.basic.PictureSelector @@ -174,7 +173,6 @@ val currentTime = System.currentTimeMillis().timestampToCompleteDate() applyViewModel.enter( - RuntimeCache.projectId, "2", "", binding.ownerShipView.text.toString(), diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 60770c7..08a5f66 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -72,22 +72,22 @@ /** * 施工现场详情 */ - suspend fun getProjectDetail(projectId: String): String { - return api.getProjectDetail(AuthenticationHelper.token!!, projectId) + suspend fun getProjectDetail(): String { + return api.getProjectDetail(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取施工现场的设备 */ - suspend fun getWorkSiteDevices(projectId: String): String { - return api.getWorkSiteDevices(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteDevices(): String { + return api.getWorkSiteDevices(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取工作区域作业人员 */ - suspend fun getWorkSiteWorkers(projectId: String): String { - return api.getWorkSiteWorkers(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteWorkers(): String { + return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** @@ -164,7 +164,6 @@ * 人员申请入场 */ suspend fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -207,7 +206,7 @@ ) val projectIdMap = HashMap() - projectIdMap["projectId"] = projectId + projectIdMap["projectId"] = RuntimeCache.projectId return api.enter(AuthenticationHelper.token!!, requestBody, projectIdMap) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 3e88675..33b0d66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -125,35 +125,33 @@ }, onSuccess = { LoadingDialog.dismiss() - if (it.code == 200) { - it.data?.let { - val dataRows = it.rows - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - alarmAdapter.refresh(dataRows) - } - - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@getAlarmListByPage - } - alarmAdapter.loadMore(dataRows) - } - - else -> initRecyclerView(dataRows) + it.data?.let { + val dataRows = it.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + alarmAdapter.refresh(dataRows) } - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getAlarmListByPage + } + alarmAdapter.loadMore(dataRows) } + + else -> initRecyclerView(dataRows) + } + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE } } }, diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index ca69988..4f9b121 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -14,7 +14,6 @@ import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initImmersionBar import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.casic.br.operationsite.vm.ApplyViewModel import com.casic.br.operationsite.vm.UploadFileViewModel import com.luck.picture.lib.basic.PictureSelector @@ -174,7 +173,6 @@ val currentTime = System.currentTimeMillis().timestampToCompleteDate() applyViewModel.enter( - RuntimeCache.projectId, "2", "", binding.ownerShipView.text.toString(), diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index c3a25f4..4009f5a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -20,14 +20,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.EmptyView class MainActivity : KotlinBaseActivity() { - private val kTag = "MainActivity" private val marginOffset by lazy { 15.dp2px(this) } private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } @@ -47,70 +45,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel.worksiteLiveData.observe(this) { - if (it.code == 200) { - val dataRows = it.data?.rows!! - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - workSiteAdapter.refresh(dataRows) - } - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@observe - } - workSiteAdapter.loadMore(dataRows) - } - - else -> { - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE - workSiteAdapter = object : - NormalRecyclerAdapter( - R.layout.item_work_site_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataModel.RowsModel - ) { - viewHolder.setText(R.id.workSiteNameView, item.workTitle) - .setText(R.id.constructionUnitView, item.workPersonDeptName) - .setText(R.id.constructionDateView, item.registerTime) - .setText(R.id.leaderNameView, item.workPersonName) - .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) - .setText(R.id.workSiteView, item.workSiteDesc) - } - } - binding.recyclerView.adapter = workSiteAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemOffsets( - marginOffset, marginOffset shr 1, - marginOffset, marginOffset shr 1 - ) - ) - workSiteAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, item: WorkSiteListModel.DataModel.RowsModel - ) { - RuntimeCache.projectId = item.id - navigatePageTo() - } - }) - } - } - } - } - } getProjectListByPage() userViewModel.getUserDetail( @@ -126,23 +61,7 @@ } override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isRefresh || isLoadMore) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - LoadState.Success -> { - LoadingDialog.dismiss() - } - - LoadState.Fail -> { - LoadingDialog.dismiss() - "数据加载失败,请重试".show(this) - } - } - } } override fun initEvent() { @@ -181,6 +100,83 @@ } private fun getProjectListByPage() { - workSiteViewModel.getProjectListByPage(this, keywords, "", page) + workSiteViewModel.getProjectListByPage( + keywords, + "", + page, + onLoading = { + if (isRefresh || isLoadMore) { + return@getProjectListByPage + } + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.data?.let { data -> + val dataRows = data.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + workSiteAdapter.refresh(dataRows) + } + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getProjectListByPage + } + workSiteAdapter.loadMore(dataRows) + } + + else -> initRecyclerView(dataRows) + } + + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE + } + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) + } + + private fun initRecyclerView(dataRows: MutableList) { + workSiteAdapter = object : NormalRecyclerAdapter( + R.layout.item_work_site_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WorkSiteListModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.workSiteNameView, item.workTitle) + .setText(R.id.constructionUnitView, item.workPersonDeptName) + .setText(R.id.constructionDateView, item.registerTime) + .setText(R.id.leaderNameView, item.workPersonName) + .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) + .setText(R.id.workSiteView, item.workSiteDesc) + } + } + binding.recyclerView.adapter = workSiteAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets( + marginOffset, marginOffset shr 1, marginOffset, marginOffset shr 1 + ) + ) + workSiteAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: WorkSiteListModel.DataModel.RowsModel) { + RuntimeCache.projectId = item.id + navigatePageTo() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 60770c7..08a5f66 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -72,22 +72,22 @@ /** * 施工现场详情 */ - suspend fun getProjectDetail(projectId: String): String { - return api.getProjectDetail(AuthenticationHelper.token!!, projectId) + suspend fun getProjectDetail(): String { + return api.getProjectDetail(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取施工现场的设备 */ - suspend fun getWorkSiteDevices(projectId: String): String { - return api.getWorkSiteDevices(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteDevices(): String { + return api.getWorkSiteDevices(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取工作区域作业人员 */ - suspend fun getWorkSiteWorkers(projectId: String): String { - return api.getWorkSiteWorkers(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteWorkers(): String { + return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** @@ -164,7 +164,6 @@ * 人员申请入场 */ suspend fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -207,7 +206,7 @@ ) val projectIdMap = HashMap() - projectIdMap["projectId"] = projectId + projectIdMap["projectId"] = RuntimeCache.projectId return api.enter(AuthenticationHelper.token!!, requestBody, projectIdMap) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 3e88675..33b0d66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -125,35 +125,33 @@ }, onSuccess = { LoadingDialog.dismiss() - if (it.code == 200) { - it.data?.let { - val dataRows = it.rows - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - alarmAdapter.refresh(dataRows) - } - - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@getAlarmListByPage - } - alarmAdapter.loadMore(dataRows) - } - - else -> initRecyclerView(dataRows) + it.data?.let { + val dataRows = it.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + alarmAdapter.refresh(dataRows) } - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getAlarmListByPage + } + alarmAdapter.loadMore(dataRows) } + + else -> initRecyclerView(dataRows) + } + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE } } }, diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index ca69988..4f9b121 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -14,7 +14,6 @@ import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initImmersionBar import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.casic.br.operationsite.vm.ApplyViewModel import com.casic.br.operationsite.vm.UploadFileViewModel import com.luck.picture.lib.basic.PictureSelector @@ -174,7 +173,6 @@ val currentTime = System.currentTimeMillis().timestampToCompleteDate() applyViewModel.enter( - RuntimeCache.projectId, "2", "", binding.ownerShipView.text.toString(), diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index c3a25f4..4009f5a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -20,14 +20,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.EmptyView class MainActivity : KotlinBaseActivity() { - private val kTag = "MainActivity" private val marginOffset by lazy { 15.dp2px(this) } private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } @@ -47,70 +45,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel.worksiteLiveData.observe(this) { - if (it.code == 200) { - val dataRows = it.data?.rows!! - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - workSiteAdapter.refresh(dataRows) - } - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@observe - } - workSiteAdapter.loadMore(dataRows) - } - - else -> { - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE - workSiteAdapter = object : - NormalRecyclerAdapter( - R.layout.item_work_site_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataModel.RowsModel - ) { - viewHolder.setText(R.id.workSiteNameView, item.workTitle) - .setText(R.id.constructionUnitView, item.workPersonDeptName) - .setText(R.id.constructionDateView, item.registerTime) - .setText(R.id.leaderNameView, item.workPersonName) - .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) - .setText(R.id.workSiteView, item.workSiteDesc) - } - } - binding.recyclerView.adapter = workSiteAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemOffsets( - marginOffset, marginOffset shr 1, - marginOffset, marginOffset shr 1 - ) - ) - workSiteAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, item: WorkSiteListModel.DataModel.RowsModel - ) { - RuntimeCache.projectId = item.id - navigatePageTo() - } - }) - } - } - } - } - } getProjectListByPage() userViewModel.getUserDetail( @@ -126,23 +61,7 @@ } override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isRefresh || isLoadMore) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - LoadState.Success -> { - LoadingDialog.dismiss() - } - - LoadState.Fail -> { - LoadingDialog.dismiss() - "数据加载失败,请重试".show(this) - } - } - } } override fun initEvent() { @@ -181,6 +100,83 @@ } private fun getProjectListByPage() { - workSiteViewModel.getProjectListByPage(this, keywords, "", page) + workSiteViewModel.getProjectListByPage( + keywords, + "", + page, + onLoading = { + if (isRefresh || isLoadMore) { + return@getProjectListByPage + } + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.data?.let { data -> + val dataRows = data.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + workSiteAdapter.refresh(dataRows) + } + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getProjectListByPage + } + workSiteAdapter.loadMore(dataRows) + } + + else -> initRecyclerView(dataRows) + } + + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE + } + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) + } + + private fun initRecyclerView(dataRows: MutableList) { + workSiteAdapter = object : NormalRecyclerAdapter( + R.layout.item_work_site_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WorkSiteListModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.workSiteNameView, item.workTitle) + .setText(R.id.constructionUnitView, item.workPersonDeptName) + .setText(R.id.constructionDateView, item.registerTime) + .setText(R.id.leaderNameView, item.workPersonName) + .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) + .setText(R.id.workSiteView, item.workSiteDesc) + } + } + binding.recyclerView.adapter = workSiteAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets( + marginOffset, marginOffset shr 1, marginOffset, marginOffset shr 1 + ) + ) + workSiteAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: WorkSiteListModel.DataModel.RowsModel) { + RuntimeCache.projectId = item.id + navigatePageTo() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index e224ec5..90a49ff 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -44,8 +44,6 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState -import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.TitleBarView import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -136,114 +134,9 @@ /** * 数据初始化 * */ - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.detailLiveData.observe(this) { - if (it.code == 200) { - binding.projectNameView.text = it.data.workTitle - binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") - binding.phoneNumberView.text = - String.format("联系电话:${it.data.workPersonPhoneNumber}") - binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - binding.locationView.text = String.format("所属道路:${it.data.workRoad}") - - //框作业区域 - val polygonOptions = PolygonOptions() - val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) - .fillColor(Color.argb(50, 0, 0, 255)) - - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.pointLocation.forEach { x -> - if (x.lat.isNotBlank() && x.lng.isNotBlank()) { - val latitude = x.lat.toDouble() - val longitude = x.lng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - //安全树围起来的区域范围 - polygonOptions.add(LatLng(latitude, longitude)) - } - } - //绘制工作区域矩形 - aMap.addPolygon(options) - - //计算所有点的中心点位置 - val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate) - } - } - - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) - workSiteViewModel.workSiteDeviceLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.forEach { x -> - val location = x.latestLocation - if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { - val latitude = location.gdLat.toDouble() - val longitude = location.gdLng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - devices.add(x) - //标记设备 - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(x.deviceCode) - .snippet(x.deviceType) - /** - * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 - * */ - if (x.deviceType == "1") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) - } else if (x.deviceType == "6") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) - } - allMarkerOptions.add(options) - } - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.workSiteWorkerLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - it.data.forEach { worker -> - val position = worker.location - if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { - val latitude = position.gdLat.toDouble() - val longitude = position.gdLng.toDouble() - - workers.add(worker) - val bitmap = BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap - ) - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(worker.id) - .snippet(position.deviceCode) //安全帽设备编号 - .icon(bitmap) - allMarkerOptions.add(options) - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - } + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() // 初始化 BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(binding.cardView) @@ -449,16 +342,7 @@ override fun getInfoContents(p0: Marker?): View? = null override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isReloadData) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - else -> LoadingDialog.dismiss() - } - } } override fun initEvent() { @@ -511,12 +395,132 @@ binding.reloadDataView.setOnClickListener { isReloadData = true aMap.clear() - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() } } + private fun getProjectDetail() { + workSiteViewModel.getProjectDetail( + onLoading = {}, + onSuccess = { + it.data.run { + binding.projectNameView.text = workTitle + binding.principalView.text = String.format("现场负责人:${workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${workSiteDesc}") + binding.locationView.text = String.format("所属道路:${workRoad}") + + //框作业区域 + val polygonOptions = PolygonOptions() + val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) + .fillColor(Color.argb(50, 0, 0, 255)) + + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + pointLocation.forEach { x -> + if (x.lat.isNotBlank() && x.lng.isNotBlank()) { + val latitude = x.lat.toDouble() + val longitude = x.lng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + //安全树围起来的区域范围 + polygonOptions.add(LatLng(latitude, longitude)) + } + } + //绘制工作区域矩形 + aMap.addPolygon(options) + + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteDevices() { + workSiteViewModel.getWorkSiteDevices( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { x -> + val location = x.latestLocation + if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { + val latitude = location.gdLat.toDouble() + val longitude = location.gdLng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + devices.add(x) + //标记设备 + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(x.deviceCode) + .snippet(x.deviceType) + /** + * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 + * */ + if (x.deviceType == "1") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) + } else if (x.deviceType == "6") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) + } + allMarkerOptions.add(options) + } + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteWorkers() { + workSiteViewModel.getWorkSiteWorkers( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + it.data.forEach { worker -> + val position = worker.location + if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { + val latitude = position.gdLat.toDouble() + val longitude = position.gdLng.toDouble() + + workers.add(worker) + val bitmap = BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap + ) + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(worker.id) + .snippet(position.deviceCode) //安全帽设备编号 + .icon(bitmap) + allMarkerOptions.add(options) + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + } + }, + onFailed = { it.show(this) } + ) + } + /**地图相关*********/ override fun onResume() { super.onResume() diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 60770c7..08a5f66 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -72,22 +72,22 @@ /** * 施工现场详情 */ - suspend fun getProjectDetail(projectId: String): String { - return api.getProjectDetail(AuthenticationHelper.token!!, projectId) + suspend fun getProjectDetail(): String { + return api.getProjectDetail(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取施工现场的设备 */ - suspend fun getWorkSiteDevices(projectId: String): String { - return api.getWorkSiteDevices(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteDevices(): String { + return api.getWorkSiteDevices(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取工作区域作业人员 */ - suspend fun getWorkSiteWorkers(projectId: String): String { - return api.getWorkSiteWorkers(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteWorkers(): String { + return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** @@ -164,7 +164,6 @@ * 人员申请入场 */ suspend fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -207,7 +206,7 @@ ) val projectIdMap = HashMap() - projectIdMap["projectId"] = projectId + projectIdMap["projectId"] = RuntimeCache.projectId return api.enter(AuthenticationHelper.token!!, requestBody, projectIdMap) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 3e88675..33b0d66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -125,35 +125,33 @@ }, onSuccess = { LoadingDialog.dismiss() - if (it.code == 200) { - it.data?.let { - val dataRows = it.rows - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - alarmAdapter.refresh(dataRows) - } - - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@getAlarmListByPage - } - alarmAdapter.loadMore(dataRows) - } - - else -> initRecyclerView(dataRows) + it.data?.let { + val dataRows = it.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + alarmAdapter.refresh(dataRows) } - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getAlarmListByPage + } + alarmAdapter.loadMore(dataRows) } + + else -> initRecyclerView(dataRows) + } + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE } } }, diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index ca69988..4f9b121 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -14,7 +14,6 @@ import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initImmersionBar import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.casic.br.operationsite.vm.ApplyViewModel import com.casic.br.operationsite.vm.UploadFileViewModel import com.luck.picture.lib.basic.PictureSelector @@ -174,7 +173,6 @@ val currentTime = System.currentTimeMillis().timestampToCompleteDate() applyViewModel.enter( - RuntimeCache.projectId, "2", "", binding.ownerShipView.text.toString(), diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index c3a25f4..4009f5a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -20,14 +20,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.EmptyView class MainActivity : KotlinBaseActivity() { - private val kTag = "MainActivity" private val marginOffset by lazy { 15.dp2px(this) } private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } @@ -47,70 +45,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel.worksiteLiveData.observe(this) { - if (it.code == 200) { - val dataRows = it.data?.rows!! - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - workSiteAdapter.refresh(dataRows) - } - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@observe - } - workSiteAdapter.loadMore(dataRows) - } - - else -> { - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE - workSiteAdapter = object : - NormalRecyclerAdapter( - R.layout.item_work_site_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataModel.RowsModel - ) { - viewHolder.setText(R.id.workSiteNameView, item.workTitle) - .setText(R.id.constructionUnitView, item.workPersonDeptName) - .setText(R.id.constructionDateView, item.registerTime) - .setText(R.id.leaderNameView, item.workPersonName) - .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) - .setText(R.id.workSiteView, item.workSiteDesc) - } - } - binding.recyclerView.adapter = workSiteAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemOffsets( - marginOffset, marginOffset shr 1, - marginOffset, marginOffset shr 1 - ) - ) - workSiteAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, item: WorkSiteListModel.DataModel.RowsModel - ) { - RuntimeCache.projectId = item.id - navigatePageTo() - } - }) - } - } - } - } - } getProjectListByPage() userViewModel.getUserDetail( @@ -126,23 +61,7 @@ } override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isRefresh || isLoadMore) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - LoadState.Success -> { - LoadingDialog.dismiss() - } - - LoadState.Fail -> { - LoadingDialog.dismiss() - "数据加载失败,请重试".show(this) - } - } - } } override fun initEvent() { @@ -181,6 +100,83 @@ } private fun getProjectListByPage() { - workSiteViewModel.getProjectListByPage(this, keywords, "", page) + workSiteViewModel.getProjectListByPage( + keywords, + "", + page, + onLoading = { + if (isRefresh || isLoadMore) { + return@getProjectListByPage + } + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.data?.let { data -> + val dataRows = data.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + workSiteAdapter.refresh(dataRows) + } + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getProjectListByPage + } + workSiteAdapter.loadMore(dataRows) + } + + else -> initRecyclerView(dataRows) + } + + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE + } + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) + } + + private fun initRecyclerView(dataRows: MutableList) { + workSiteAdapter = object : NormalRecyclerAdapter( + R.layout.item_work_site_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WorkSiteListModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.workSiteNameView, item.workTitle) + .setText(R.id.constructionUnitView, item.workPersonDeptName) + .setText(R.id.constructionDateView, item.registerTime) + .setText(R.id.leaderNameView, item.workPersonName) + .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) + .setText(R.id.workSiteView, item.workSiteDesc) + } + } + binding.recyclerView.adapter = workSiteAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets( + marginOffset, marginOffset shr 1, marginOffset, marginOffset shr 1 + ) + ) + workSiteAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: WorkSiteListModel.DataModel.RowsModel) { + RuntimeCache.projectId = item.id + navigatePageTo() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index e224ec5..90a49ff 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -44,8 +44,6 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState -import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.TitleBarView import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -136,114 +134,9 @@ /** * 数据初始化 * */ - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.detailLiveData.observe(this) { - if (it.code == 200) { - binding.projectNameView.text = it.data.workTitle - binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") - binding.phoneNumberView.text = - String.format("联系电话:${it.data.workPersonPhoneNumber}") - binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - binding.locationView.text = String.format("所属道路:${it.data.workRoad}") - - //框作业区域 - val polygonOptions = PolygonOptions() - val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) - .fillColor(Color.argb(50, 0, 0, 255)) - - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.pointLocation.forEach { x -> - if (x.lat.isNotBlank() && x.lng.isNotBlank()) { - val latitude = x.lat.toDouble() - val longitude = x.lng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - //安全树围起来的区域范围 - polygonOptions.add(LatLng(latitude, longitude)) - } - } - //绘制工作区域矩形 - aMap.addPolygon(options) - - //计算所有点的中心点位置 - val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate) - } - } - - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) - workSiteViewModel.workSiteDeviceLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.forEach { x -> - val location = x.latestLocation - if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { - val latitude = location.gdLat.toDouble() - val longitude = location.gdLng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - devices.add(x) - //标记设备 - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(x.deviceCode) - .snippet(x.deviceType) - /** - * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 - * */ - if (x.deviceType == "1") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) - } else if (x.deviceType == "6") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) - } - allMarkerOptions.add(options) - } - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.workSiteWorkerLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - it.data.forEach { worker -> - val position = worker.location - if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { - val latitude = position.gdLat.toDouble() - val longitude = position.gdLng.toDouble() - - workers.add(worker) - val bitmap = BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap - ) - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(worker.id) - .snippet(position.deviceCode) //安全帽设备编号 - .icon(bitmap) - allMarkerOptions.add(options) - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - } + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() // 初始化 BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(binding.cardView) @@ -449,16 +342,7 @@ override fun getInfoContents(p0: Marker?): View? = null override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isReloadData) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - else -> LoadingDialog.dismiss() - } - } } override fun initEvent() { @@ -511,12 +395,132 @@ binding.reloadDataView.setOnClickListener { isReloadData = true aMap.clear() - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() } } + private fun getProjectDetail() { + workSiteViewModel.getProjectDetail( + onLoading = {}, + onSuccess = { + it.data.run { + binding.projectNameView.text = workTitle + binding.principalView.text = String.format("现场负责人:${workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${workSiteDesc}") + binding.locationView.text = String.format("所属道路:${workRoad}") + + //框作业区域 + val polygonOptions = PolygonOptions() + val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) + .fillColor(Color.argb(50, 0, 0, 255)) + + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + pointLocation.forEach { x -> + if (x.lat.isNotBlank() && x.lng.isNotBlank()) { + val latitude = x.lat.toDouble() + val longitude = x.lng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + //安全树围起来的区域范围 + polygonOptions.add(LatLng(latitude, longitude)) + } + } + //绘制工作区域矩形 + aMap.addPolygon(options) + + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteDevices() { + workSiteViewModel.getWorkSiteDevices( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { x -> + val location = x.latestLocation + if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { + val latitude = location.gdLat.toDouble() + val longitude = location.gdLng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + devices.add(x) + //标记设备 + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(x.deviceCode) + .snippet(x.deviceType) + /** + * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 + * */ + if (x.deviceType == "1") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) + } else if (x.deviceType == "6") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) + } + allMarkerOptions.add(options) + } + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteWorkers() { + workSiteViewModel.getWorkSiteWorkers( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + it.data.forEach { worker -> + val position = worker.location + if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { + val latitude = position.gdLat.toDouble() + val longitude = position.gdLng.toDouble() + + workers.add(worker) + val bitmap = BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap + ) + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(worker.id) + .snippet(position.deviceCode) //安全帽设备编号 + .icon(bitmap) + allMarkerOptions.add(options) + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + } + }, + onFailed = { it.show(this) } + ) + } + /**地图相关*********/ override fun onResume() { super.onResume() diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt index f810780..2b242d8 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt @@ -24,6 +24,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 60770c7..08a5f66 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -72,22 +72,22 @@ /** * 施工现场详情 */ - suspend fun getProjectDetail(projectId: String): String { - return api.getProjectDetail(AuthenticationHelper.token!!, projectId) + suspend fun getProjectDetail(): String { + return api.getProjectDetail(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取施工现场的设备 */ - suspend fun getWorkSiteDevices(projectId: String): String { - return api.getWorkSiteDevices(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteDevices(): String { + return api.getWorkSiteDevices(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取工作区域作业人员 */ - suspend fun getWorkSiteWorkers(projectId: String): String { - return api.getWorkSiteWorkers(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteWorkers(): String { + return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** @@ -164,7 +164,6 @@ * 人员申请入场 */ suspend fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -207,7 +206,7 @@ ) val projectIdMap = HashMap() - projectIdMap["projectId"] = projectId + projectIdMap["projectId"] = RuntimeCache.projectId return api.enter(AuthenticationHelper.token!!, requestBody, projectIdMap) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 3e88675..33b0d66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -125,35 +125,33 @@ }, onSuccess = { LoadingDialog.dismiss() - if (it.code == 200) { - it.data?.let { - val dataRows = it.rows - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - alarmAdapter.refresh(dataRows) - } - - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@getAlarmListByPage - } - alarmAdapter.loadMore(dataRows) - } - - else -> initRecyclerView(dataRows) + it.data?.let { + val dataRows = it.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + alarmAdapter.refresh(dataRows) } - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getAlarmListByPage + } + alarmAdapter.loadMore(dataRows) } + + else -> initRecyclerView(dataRows) + } + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE } } }, diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index ca69988..4f9b121 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -14,7 +14,6 @@ import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initImmersionBar import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.casic.br.operationsite.vm.ApplyViewModel import com.casic.br.operationsite.vm.UploadFileViewModel import com.luck.picture.lib.basic.PictureSelector @@ -174,7 +173,6 @@ val currentTime = System.currentTimeMillis().timestampToCompleteDate() applyViewModel.enter( - RuntimeCache.projectId, "2", "", binding.ownerShipView.text.toString(), diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index c3a25f4..4009f5a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -20,14 +20,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.EmptyView class MainActivity : KotlinBaseActivity() { - private val kTag = "MainActivity" private val marginOffset by lazy { 15.dp2px(this) } private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } @@ -47,70 +45,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel.worksiteLiveData.observe(this) { - if (it.code == 200) { - val dataRows = it.data?.rows!! - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - workSiteAdapter.refresh(dataRows) - } - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@observe - } - workSiteAdapter.loadMore(dataRows) - } - - else -> { - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE - workSiteAdapter = object : - NormalRecyclerAdapter( - R.layout.item_work_site_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataModel.RowsModel - ) { - viewHolder.setText(R.id.workSiteNameView, item.workTitle) - .setText(R.id.constructionUnitView, item.workPersonDeptName) - .setText(R.id.constructionDateView, item.registerTime) - .setText(R.id.leaderNameView, item.workPersonName) - .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) - .setText(R.id.workSiteView, item.workSiteDesc) - } - } - binding.recyclerView.adapter = workSiteAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemOffsets( - marginOffset, marginOffset shr 1, - marginOffset, marginOffset shr 1 - ) - ) - workSiteAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, item: WorkSiteListModel.DataModel.RowsModel - ) { - RuntimeCache.projectId = item.id - navigatePageTo() - } - }) - } - } - } - } - } getProjectListByPage() userViewModel.getUserDetail( @@ -126,23 +61,7 @@ } override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isRefresh || isLoadMore) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - LoadState.Success -> { - LoadingDialog.dismiss() - } - - LoadState.Fail -> { - LoadingDialog.dismiss() - "数据加载失败,请重试".show(this) - } - } - } } override fun initEvent() { @@ -181,6 +100,83 @@ } private fun getProjectListByPage() { - workSiteViewModel.getProjectListByPage(this, keywords, "", page) + workSiteViewModel.getProjectListByPage( + keywords, + "", + page, + onLoading = { + if (isRefresh || isLoadMore) { + return@getProjectListByPage + } + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.data?.let { data -> + val dataRows = data.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + workSiteAdapter.refresh(dataRows) + } + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getProjectListByPage + } + workSiteAdapter.loadMore(dataRows) + } + + else -> initRecyclerView(dataRows) + } + + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE + } + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) + } + + private fun initRecyclerView(dataRows: MutableList) { + workSiteAdapter = object : NormalRecyclerAdapter( + R.layout.item_work_site_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WorkSiteListModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.workSiteNameView, item.workTitle) + .setText(R.id.constructionUnitView, item.workPersonDeptName) + .setText(R.id.constructionDateView, item.registerTime) + .setText(R.id.leaderNameView, item.workPersonName) + .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) + .setText(R.id.workSiteView, item.workSiteDesc) + } + } + binding.recyclerView.adapter = workSiteAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets( + marginOffset, marginOffset shr 1, marginOffset, marginOffset shr 1 + ) + ) + workSiteAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: WorkSiteListModel.DataModel.RowsModel) { + RuntimeCache.projectId = item.id + navigatePageTo() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index e224ec5..90a49ff 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -44,8 +44,6 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState -import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.TitleBarView import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -136,114 +134,9 @@ /** * 数据初始化 * */ - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.detailLiveData.observe(this) { - if (it.code == 200) { - binding.projectNameView.text = it.data.workTitle - binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") - binding.phoneNumberView.text = - String.format("联系电话:${it.data.workPersonPhoneNumber}") - binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - binding.locationView.text = String.format("所属道路:${it.data.workRoad}") - - //框作业区域 - val polygonOptions = PolygonOptions() - val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) - .fillColor(Color.argb(50, 0, 0, 255)) - - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.pointLocation.forEach { x -> - if (x.lat.isNotBlank() && x.lng.isNotBlank()) { - val latitude = x.lat.toDouble() - val longitude = x.lng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - //安全树围起来的区域范围 - polygonOptions.add(LatLng(latitude, longitude)) - } - } - //绘制工作区域矩形 - aMap.addPolygon(options) - - //计算所有点的中心点位置 - val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate) - } - } - - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) - workSiteViewModel.workSiteDeviceLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.forEach { x -> - val location = x.latestLocation - if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { - val latitude = location.gdLat.toDouble() - val longitude = location.gdLng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - devices.add(x) - //标记设备 - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(x.deviceCode) - .snippet(x.deviceType) - /** - * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 - * */ - if (x.deviceType == "1") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) - } else if (x.deviceType == "6") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) - } - allMarkerOptions.add(options) - } - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.workSiteWorkerLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - it.data.forEach { worker -> - val position = worker.location - if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { - val latitude = position.gdLat.toDouble() - val longitude = position.gdLng.toDouble() - - workers.add(worker) - val bitmap = BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap - ) - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(worker.id) - .snippet(position.deviceCode) //安全帽设备编号 - .icon(bitmap) - allMarkerOptions.add(options) - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - } + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() // 初始化 BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(binding.cardView) @@ -449,16 +342,7 @@ override fun getInfoContents(p0: Marker?): View? = null override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isReloadData) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - else -> LoadingDialog.dismiss() - } - } } override fun initEvent() { @@ -511,12 +395,132 @@ binding.reloadDataView.setOnClickListener { isReloadData = true aMap.clear() - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() } } + private fun getProjectDetail() { + workSiteViewModel.getProjectDetail( + onLoading = {}, + onSuccess = { + it.data.run { + binding.projectNameView.text = workTitle + binding.principalView.text = String.format("现场负责人:${workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${workSiteDesc}") + binding.locationView.text = String.format("所属道路:${workRoad}") + + //框作业区域 + val polygonOptions = PolygonOptions() + val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) + .fillColor(Color.argb(50, 0, 0, 255)) + + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + pointLocation.forEach { x -> + if (x.lat.isNotBlank() && x.lng.isNotBlank()) { + val latitude = x.lat.toDouble() + val longitude = x.lng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + //安全树围起来的区域范围 + polygonOptions.add(LatLng(latitude, longitude)) + } + } + //绘制工作区域矩形 + aMap.addPolygon(options) + + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteDevices() { + workSiteViewModel.getWorkSiteDevices( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { x -> + val location = x.latestLocation + if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { + val latitude = location.gdLat.toDouble() + val longitude = location.gdLng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + devices.add(x) + //标记设备 + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(x.deviceCode) + .snippet(x.deviceType) + /** + * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 + * */ + if (x.deviceType == "1") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) + } else if (x.deviceType == "6") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) + } + allMarkerOptions.add(options) + } + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteWorkers() { + workSiteViewModel.getWorkSiteWorkers( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + it.data.forEach { worker -> + val position = worker.location + if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { + val latitude = position.gdLat.toDouble() + val longitude = position.gdLng.toDouble() + + workers.add(worker) + val bitmap = BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap + ) + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(worker.id) + .snippet(position.deviceCode) //安全帽设备编号 + .icon(bitmap) + allMarkerOptions.add(options) + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + } + }, + onFailed = { it.show(this) } + ) + } + /**地图相关*********/ override fun onResume() { super.onResume() diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt index f810780..2b242d8 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt @@ -24,6 +24,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt index 82eb26d..0ba18d1 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt @@ -7,7 +7,6 @@ class ApplyViewModel : ViewModel() { fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -31,7 +30,6 @@ ) = launch({ onLoading() val response = RetrofitServiceManager.enter( - projectId, workerType, deptName, ownerShip, @@ -57,6 +55,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 60770c7..08a5f66 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -72,22 +72,22 @@ /** * 施工现场详情 */ - suspend fun getProjectDetail(projectId: String): String { - return api.getProjectDetail(AuthenticationHelper.token!!, projectId) + suspend fun getProjectDetail(): String { + return api.getProjectDetail(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取施工现场的设备 */ - suspend fun getWorkSiteDevices(projectId: String): String { - return api.getWorkSiteDevices(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteDevices(): String { + return api.getWorkSiteDevices(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取工作区域作业人员 */ - suspend fun getWorkSiteWorkers(projectId: String): String { - return api.getWorkSiteWorkers(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteWorkers(): String { + return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** @@ -164,7 +164,6 @@ * 人员申请入场 */ suspend fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -207,7 +206,7 @@ ) val projectIdMap = HashMap() - projectIdMap["projectId"] = projectId + projectIdMap["projectId"] = RuntimeCache.projectId return api.enter(AuthenticationHelper.token!!, requestBody, projectIdMap) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 3e88675..33b0d66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -125,35 +125,33 @@ }, onSuccess = { LoadingDialog.dismiss() - if (it.code == 200) { - it.data?.let { - val dataRows = it.rows - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - alarmAdapter.refresh(dataRows) - } - - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@getAlarmListByPage - } - alarmAdapter.loadMore(dataRows) - } - - else -> initRecyclerView(dataRows) + it.data?.let { + val dataRows = it.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + alarmAdapter.refresh(dataRows) } - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getAlarmListByPage + } + alarmAdapter.loadMore(dataRows) } + + else -> initRecyclerView(dataRows) + } + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE } } }, diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index ca69988..4f9b121 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -14,7 +14,6 @@ import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initImmersionBar import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.casic.br.operationsite.vm.ApplyViewModel import com.casic.br.operationsite.vm.UploadFileViewModel import com.luck.picture.lib.basic.PictureSelector @@ -174,7 +173,6 @@ val currentTime = System.currentTimeMillis().timestampToCompleteDate() applyViewModel.enter( - RuntimeCache.projectId, "2", "", binding.ownerShipView.text.toString(), diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index c3a25f4..4009f5a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -20,14 +20,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.EmptyView class MainActivity : KotlinBaseActivity() { - private val kTag = "MainActivity" private val marginOffset by lazy { 15.dp2px(this) } private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } @@ -47,70 +45,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel.worksiteLiveData.observe(this) { - if (it.code == 200) { - val dataRows = it.data?.rows!! - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - workSiteAdapter.refresh(dataRows) - } - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@observe - } - workSiteAdapter.loadMore(dataRows) - } - - else -> { - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE - workSiteAdapter = object : - NormalRecyclerAdapter( - R.layout.item_work_site_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataModel.RowsModel - ) { - viewHolder.setText(R.id.workSiteNameView, item.workTitle) - .setText(R.id.constructionUnitView, item.workPersonDeptName) - .setText(R.id.constructionDateView, item.registerTime) - .setText(R.id.leaderNameView, item.workPersonName) - .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) - .setText(R.id.workSiteView, item.workSiteDesc) - } - } - binding.recyclerView.adapter = workSiteAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemOffsets( - marginOffset, marginOffset shr 1, - marginOffset, marginOffset shr 1 - ) - ) - workSiteAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, item: WorkSiteListModel.DataModel.RowsModel - ) { - RuntimeCache.projectId = item.id - navigatePageTo() - } - }) - } - } - } - } - } getProjectListByPage() userViewModel.getUserDetail( @@ -126,23 +61,7 @@ } override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isRefresh || isLoadMore) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - LoadState.Success -> { - LoadingDialog.dismiss() - } - - LoadState.Fail -> { - LoadingDialog.dismiss() - "数据加载失败,请重试".show(this) - } - } - } } override fun initEvent() { @@ -181,6 +100,83 @@ } private fun getProjectListByPage() { - workSiteViewModel.getProjectListByPage(this, keywords, "", page) + workSiteViewModel.getProjectListByPage( + keywords, + "", + page, + onLoading = { + if (isRefresh || isLoadMore) { + return@getProjectListByPage + } + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.data?.let { data -> + val dataRows = data.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + workSiteAdapter.refresh(dataRows) + } + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getProjectListByPage + } + workSiteAdapter.loadMore(dataRows) + } + + else -> initRecyclerView(dataRows) + } + + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE + } + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) + } + + private fun initRecyclerView(dataRows: MutableList) { + workSiteAdapter = object : NormalRecyclerAdapter( + R.layout.item_work_site_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WorkSiteListModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.workSiteNameView, item.workTitle) + .setText(R.id.constructionUnitView, item.workPersonDeptName) + .setText(R.id.constructionDateView, item.registerTime) + .setText(R.id.leaderNameView, item.workPersonName) + .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) + .setText(R.id.workSiteView, item.workSiteDesc) + } + } + binding.recyclerView.adapter = workSiteAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets( + marginOffset, marginOffset shr 1, marginOffset, marginOffset shr 1 + ) + ) + workSiteAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: WorkSiteListModel.DataModel.RowsModel) { + RuntimeCache.projectId = item.id + navigatePageTo() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index e224ec5..90a49ff 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -44,8 +44,6 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState -import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.TitleBarView import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -136,114 +134,9 @@ /** * 数据初始化 * */ - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.detailLiveData.observe(this) { - if (it.code == 200) { - binding.projectNameView.text = it.data.workTitle - binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") - binding.phoneNumberView.text = - String.format("联系电话:${it.data.workPersonPhoneNumber}") - binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - binding.locationView.text = String.format("所属道路:${it.data.workRoad}") - - //框作业区域 - val polygonOptions = PolygonOptions() - val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) - .fillColor(Color.argb(50, 0, 0, 255)) - - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.pointLocation.forEach { x -> - if (x.lat.isNotBlank() && x.lng.isNotBlank()) { - val latitude = x.lat.toDouble() - val longitude = x.lng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - //安全树围起来的区域范围 - polygonOptions.add(LatLng(latitude, longitude)) - } - } - //绘制工作区域矩形 - aMap.addPolygon(options) - - //计算所有点的中心点位置 - val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate) - } - } - - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) - workSiteViewModel.workSiteDeviceLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.forEach { x -> - val location = x.latestLocation - if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { - val latitude = location.gdLat.toDouble() - val longitude = location.gdLng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - devices.add(x) - //标记设备 - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(x.deviceCode) - .snippet(x.deviceType) - /** - * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 - * */ - if (x.deviceType == "1") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) - } else if (x.deviceType == "6") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) - } - allMarkerOptions.add(options) - } - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.workSiteWorkerLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - it.data.forEach { worker -> - val position = worker.location - if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { - val latitude = position.gdLat.toDouble() - val longitude = position.gdLng.toDouble() - - workers.add(worker) - val bitmap = BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap - ) - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(worker.id) - .snippet(position.deviceCode) //安全帽设备编号 - .icon(bitmap) - allMarkerOptions.add(options) - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - } + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() // 初始化 BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(binding.cardView) @@ -449,16 +342,7 @@ override fun getInfoContents(p0: Marker?): View? = null override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isReloadData) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - else -> LoadingDialog.dismiss() - } - } } override fun initEvent() { @@ -511,12 +395,132 @@ binding.reloadDataView.setOnClickListener { isReloadData = true aMap.clear() - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() } } + private fun getProjectDetail() { + workSiteViewModel.getProjectDetail( + onLoading = {}, + onSuccess = { + it.data.run { + binding.projectNameView.text = workTitle + binding.principalView.text = String.format("现场负责人:${workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${workSiteDesc}") + binding.locationView.text = String.format("所属道路:${workRoad}") + + //框作业区域 + val polygonOptions = PolygonOptions() + val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) + .fillColor(Color.argb(50, 0, 0, 255)) + + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + pointLocation.forEach { x -> + if (x.lat.isNotBlank() && x.lng.isNotBlank()) { + val latitude = x.lat.toDouble() + val longitude = x.lng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + //安全树围起来的区域范围 + polygonOptions.add(LatLng(latitude, longitude)) + } + } + //绘制工作区域矩形 + aMap.addPolygon(options) + + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteDevices() { + workSiteViewModel.getWorkSiteDevices( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { x -> + val location = x.latestLocation + if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { + val latitude = location.gdLat.toDouble() + val longitude = location.gdLng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + devices.add(x) + //标记设备 + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(x.deviceCode) + .snippet(x.deviceType) + /** + * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 + * */ + if (x.deviceType == "1") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) + } else if (x.deviceType == "6") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) + } + allMarkerOptions.add(options) + } + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteWorkers() { + workSiteViewModel.getWorkSiteWorkers( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + it.data.forEach { worker -> + val position = worker.location + if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { + val latitude = position.gdLat.toDouble() + val longitude = position.gdLng.toDouble() + + workers.add(worker) + val bitmap = BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap + ) + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(worker.id) + .snippet(position.deviceCode) //安全帽设备编号 + .icon(bitmap) + allMarkerOptions.add(options) + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + } + }, + onFailed = { it.show(this) } + ) + } + /**地图相关*********/ override fun onResume() { super.onResume() diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt index f810780..2b242d8 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt @@ -24,6 +24,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt index 82eb26d..0ba18d1 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt @@ -7,7 +7,6 @@ class ApplyViewModel : ViewModel() { fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -31,7 +30,6 @@ ) = launch({ onLoading() val response = RetrofitServiceManager.enter( - projectId, workerType, deptName, ownerShip, @@ -57,6 +55,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt index 26d25e2..291c5e1 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt @@ -22,6 +22,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 60770c7..08a5f66 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -72,22 +72,22 @@ /** * 施工现场详情 */ - suspend fun getProjectDetail(projectId: String): String { - return api.getProjectDetail(AuthenticationHelper.token!!, projectId) + suspend fun getProjectDetail(): String { + return api.getProjectDetail(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取施工现场的设备 */ - suspend fun getWorkSiteDevices(projectId: String): String { - return api.getWorkSiteDevices(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteDevices(): String { + return api.getWorkSiteDevices(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取工作区域作业人员 */ - suspend fun getWorkSiteWorkers(projectId: String): String { - return api.getWorkSiteWorkers(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteWorkers(): String { + return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** @@ -164,7 +164,6 @@ * 人员申请入场 */ suspend fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -207,7 +206,7 @@ ) val projectIdMap = HashMap() - projectIdMap["projectId"] = projectId + projectIdMap["projectId"] = RuntimeCache.projectId return api.enter(AuthenticationHelper.token!!, requestBody, projectIdMap) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 3e88675..33b0d66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -125,35 +125,33 @@ }, onSuccess = { LoadingDialog.dismiss() - if (it.code == 200) { - it.data?.let { - val dataRows = it.rows - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - alarmAdapter.refresh(dataRows) - } - - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@getAlarmListByPage - } - alarmAdapter.loadMore(dataRows) - } - - else -> initRecyclerView(dataRows) + it.data?.let { + val dataRows = it.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + alarmAdapter.refresh(dataRows) } - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getAlarmListByPage + } + alarmAdapter.loadMore(dataRows) } + + else -> initRecyclerView(dataRows) + } + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE } } }, diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index ca69988..4f9b121 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -14,7 +14,6 @@ import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initImmersionBar import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.casic.br.operationsite.vm.ApplyViewModel import com.casic.br.operationsite.vm.UploadFileViewModel import com.luck.picture.lib.basic.PictureSelector @@ -174,7 +173,6 @@ val currentTime = System.currentTimeMillis().timestampToCompleteDate() applyViewModel.enter( - RuntimeCache.projectId, "2", "", binding.ownerShipView.text.toString(), diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index c3a25f4..4009f5a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -20,14 +20,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.EmptyView class MainActivity : KotlinBaseActivity() { - private val kTag = "MainActivity" private val marginOffset by lazy { 15.dp2px(this) } private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } @@ -47,70 +45,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel.worksiteLiveData.observe(this) { - if (it.code == 200) { - val dataRows = it.data?.rows!! - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - workSiteAdapter.refresh(dataRows) - } - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@observe - } - workSiteAdapter.loadMore(dataRows) - } - - else -> { - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE - workSiteAdapter = object : - NormalRecyclerAdapter( - R.layout.item_work_site_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataModel.RowsModel - ) { - viewHolder.setText(R.id.workSiteNameView, item.workTitle) - .setText(R.id.constructionUnitView, item.workPersonDeptName) - .setText(R.id.constructionDateView, item.registerTime) - .setText(R.id.leaderNameView, item.workPersonName) - .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) - .setText(R.id.workSiteView, item.workSiteDesc) - } - } - binding.recyclerView.adapter = workSiteAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemOffsets( - marginOffset, marginOffset shr 1, - marginOffset, marginOffset shr 1 - ) - ) - workSiteAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, item: WorkSiteListModel.DataModel.RowsModel - ) { - RuntimeCache.projectId = item.id - navigatePageTo() - } - }) - } - } - } - } - } getProjectListByPage() userViewModel.getUserDetail( @@ -126,23 +61,7 @@ } override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isRefresh || isLoadMore) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - LoadState.Success -> { - LoadingDialog.dismiss() - } - - LoadState.Fail -> { - LoadingDialog.dismiss() - "数据加载失败,请重试".show(this) - } - } - } } override fun initEvent() { @@ -181,6 +100,83 @@ } private fun getProjectListByPage() { - workSiteViewModel.getProjectListByPage(this, keywords, "", page) + workSiteViewModel.getProjectListByPage( + keywords, + "", + page, + onLoading = { + if (isRefresh || isLoadMore) { + return@getProjectListByPage + } + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.data?.let { data -> + val dataRows = data.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + workSiteAdapter.refresh(dataRows) + } + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getProjectListByPage + } + workSiteAdapter.loadMore(dataRows) + } + + else -> initRecyclerView(dataRows) + } + + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE + } + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) + } + + private fun initRecyclerView(dataRows: MutableList) { + workSiteAdapter = object : NormalRecyclerAdapter( + R.layout.item_work_site_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WorkSiteListModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.workSiteNameView, item.workTitle) + .setText(R.id.constructionUnitView, item.workPersonDeptName) + .setText(R.id.constructionDateView, item.registerTime) + .setText(R.id.leaderNameView, item.workPersonName) + .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) + .setText(R.id.workSiteView, item.workSiteDesc) + } + } + binding.recyclerView.adapter = workSiteAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets( + marginOffset, marginOffset shr 1, marginOffset, marginOffset shr 1 + ) + ) + workSiteAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: WorkSiteListModel.DataModel.RowsModel) { + RuntimeCache.projectId = item.id + navigatePageTo() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index e224ec5..90a49ff 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -44,8 +44,6 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState -import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.TitleBarView import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -136,114 +134,9 @@ /** * 数据初始化 * */ - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.detailLiveData.observe(this) { - if (it.code == 200) { - binding.projectNameView.text = it.data.workTitle - binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") - binding.phoneNumberView.text = - String.format("联系电话:${it.data.workPersonPhoneNumber}") - binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - binding.locationView.text = String.format("所属道路:${it.data.workRoad}") - - //框作业区域 - val polygonOptions = PolygonOptions() - val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) - .fillColor(Color.argb(50, 0, 0, 255)) - - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.pointLocation.forEach { x -> - if (x.lat.isNotBlank() && x.lng.isNotBlank()) { - val latitude = x.lat.toDouble() - val longitude = x.lng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - //安全树围起来的区域范围 - polygonOptions.add(LatLng(latitude, longitude)) - } - } - //绘制工作区域矩形 - aMap.addPolygon(options) - - //计算所有点的中心点位置 - val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate) - } - } - - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) - workSiteViewModel.workSiteDeviceLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.forEach { x -> - val location = x.latestLocation - if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { - val latitude = location.gdLat.toDouble() - val longitude = location.gdLng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - devices.add(x) - //标记设备 - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(x.deviceCode) - .snippet(x.deviceType) - /** - * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 - * */ - if (x.deviceType == "1") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) - } else if (x.deviceType == "6") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) - } - allMarkerOptions.add(options) - } - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.workSiteWorkerLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - it.data.forEach { worker -> - val position = worker.location - if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { - val latitude = position.gdLat.toDouble() - val longitude = position.gdLng.toDouble() - - workers.add(worker) - val bitmap = BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap - ) - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(worker.id) - .snippet(position.deviceCode) //安全帽设备编号 - .icon(bitmap) - allMarkerOptions.add(options) - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - } + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() // 初始化 BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(binding.cardView) @@ -449,16 +342,7 @@ override fun getInfoContents(p0: Marker?): View? = null override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isReloadData) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - else -> LoadingDialog.dismiss() - } - } } override fun initEvent() { @@ -511,12 +395,132 @@ binding.reloadDataView.setOnClickListener { isReloadData = true aMap.clear() - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() } } + private fun getProjectDetail() { + workSiteViewModel.getProjectDetail( + onLoading = {}, + onSuccess = { + it.data.run { + binding.projectNameView.text = workTitle + binding.principalView.text = String.format("现场负责人:${workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${workSiteDesc}") + binding.locationView.text = String.format("所属道路:${workRoad}") + + //框作业区域 + val polygonOptions = PolygonOptions() + val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) + .fillColor(Color.argb(50, 0, 0, 255)) + + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + pointLocation.forEach { x -> + if (x.lat.isNotBlank() && x.lng.isNotBlank()) { + val latitude = x.lat.toDouble() + val longitude = x.lng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + //安全树围起来的区域范围 + polygonOptions.add(LatLng(latitude, longitude)) + } + } + //绘制工作区域矩形 + aMap.addPolygon(options) + + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteDevices() { + workSiteViewModel.getWorkSiteDevices( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { x -> + val location = x.latestLocation + if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { + val latitude = location.gdLat.toDouble() + val longitude = location.gdLng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + devices.add(x) + //标记设备 + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(x.deviceCode) + .snippet(x.deviceType) + /** + * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 + * */ + if (x.deviceType == "1") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) + } else if (x.deviceType == "6") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) + } + allMarkerOptions.add(options) + } + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteWorkers() { + workSiteViewModel.getWorkSiteWorkers( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + it.data.forEach { worker -> + val position = worker.location + if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { + val latitude = position.gdLat.toDouble() + val longitude = position.gdLng.toDouble() + + workers.add(worker) + val bitmap = BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap + ) + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(worker.id) + .snippet(position.deviceCode) //安全帽设备编号 + .icon(bitmap) + allMarkerOptions.add(options) + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + } + }, + onFailed = { it.show(this) } + ) + } + /**地图相关*********/ override fun onResume() { super.onResume() diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt index f810780..2b242d8 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt @@ -24,6 +24,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt index 82eb26d..0ba18d1 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt @@ -7,7 +7,6 @@ class ApplyViewModel : ViewModel() { fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -31,7 +30,6 @@ ) = launch({ onLoading() val response = RetrofitServiceManager.enter( - projectId, workerType, deptName, ownerShip, @@ -57,6 +55,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt index 26d25e2..291c5e1 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt @@ -22,6 +22,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt index dd2b428..bdde5fa 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt @@ -25,6 +25,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) @@ -42,6 +43,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 60770c7..08a5f66 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -72,22 +72,22 @@ /** * 施工现场详情 */ - suspend fun getProjectDetail(projectId: String): String { - return api.getProjectDetail(AuthenticationHelper.token!!, projectId) + suspend fun getProjectDetail(): String { + return api.getProjectDetail(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取施工现场的设备 */ - suspend fun getWorkSiteDevices(projectId: String): String { - return api.getWorkSiteDevices(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteDevices(): String { + return api.getWorkSiteDevices(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取工作区域作业人员 */ - suspend fun getWorkSiteWorkers(projectId: String): String { - return api.getWorkSiteWorkers(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteWorkers(): String { + return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** @@ -164,7 +164,6 @@ * 人员申请入场 */ suspend fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -207,7 +206,7 @@ ) val projectIdMap = HashMap() - projectIdMap["projectId"] = projectId + projectIdMap["projectId"] = RuntimeCache.projectId return api.enter(AuthenticationHelper.token!!, requestBody, projectIdMap) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 3e88675..33b0d66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -125,35 +125,33 @@ }, onSuccess = { LoadingDialog.dismiss() - if (it.code == 200) { - it.data?.let { - val dataRows = it.rows - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - alarmAdapter.refresh(dataRows) - } - - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@getAlarmListByPage - } - alarmAdapter.loadMore(dataRows) - } - - else -> initRecyclerView(dataRows) + it.data?.let { + val dataRows = it.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + alarmAdapter.refresh(dataRows) } - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getAlarmListByPage + } + alarmAdapter.loadMore(dataRows) } + + else -> initRecyclerView(dataRows) + } + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE } } }, diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index ca69988..4f9b121 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -14,7 +14,6 @@ import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initImmersionBar import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.casic.br.operationsite.vm.ApplyViewModel import com.casic.br.operationsite.vm.UploadFileViewModel import com.luck.picture.lib.basic.PictureSelector @@ -174,7 +173,6 @@ val currentTime = System.currentTimeMillis().timestampToCompleteDate() applyViewModel.enter( - RuntimeCache.projectId, "2", "", binding.ownerShipView.text.toString(), diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index c3a25f4..4009f5a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -20,14 +20,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.EmptyView class MainActivity : KotlinBaseActivity() { - private val kTag = "MainActivity" private val marginOffset by lazy { 15.dp2px(this) } private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } @@ -47,70 +45,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel.worksiteLiveData.observe(this) { - if (it.code == 200) { - val dataRows = it.data?.rows!! - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - workSiteAdapter.refresh(dataRows) - } - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@observe - } - workSiteAdapter.loadMore(dataRows) - } - - else -> { - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE - workSiteAdapter = object : - NormalRecyclerAdapter( - R.layout.item_work_site_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataModel.RowsModel - ) { - viewHolder.setText(R.id.workSiteNameView, item.workTitle) - .setText(R.id.constructionUnitView, item.workPersonDeptName) - .setText(R.id.constructionDateView, item.registerTime) - .setText(R.id.leaderNameView, item.workPersonName) - .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) - .setText(R.id.workSiteView, item.workSiteDesc) - } - } - binding.recyclerView.adapter = workSiteAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemOffsets( - marginOffset, marginOffset shr 1, - marginOffset, marginOffset shr 1 - ) - ) - workSiteAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, item: WorkSiteListModel.DataModel.RowsModel - ) { - RuntimeCache.projectId = item.id - navigatePageTo() - } - }) - } - } - } - } - } getProjectListByPage() userViewModel.getUserDetail( @@ -126,23 +61,7 @@ } override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isRefresh || isLoadMore) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - LoadState.Success -> { - LoadingDialog.dismiss() - } - - LoadState.Fail -> { - LoadingDialog.dismiss() - "数据加载失败,请重试".show(this) - } - } - } } override fun initEvent() { @@ -181,6 +100,83 @@ } private fun getProjectListByPage() { - workSiteViewModel.getProjectListByPage(this, keywords, "", page) + workSiteViewModel.getProjectListByPage( + keywords, + "", + page, + onLoading = { + if (isRefresh || isLoadMore) { + return@getProjectListByPage + } + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.data?.let { data -> + val dataRows = data.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + workSiteAdapter.refresh(dataRows) + } + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getProjectListByPage + } + workSiteAdapter.loadMore(dataRows) + } + + else -> initRecyclerView(dataRows) + } + + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE + } + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) + } + + private fun initRecyclerView(dataRows: MutableList) { + workSiteAdapter = object : NormalRecyclerAdapter( + R.layout.item_work_site_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WorkSiteListModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.workSiteNameView, item.workTitle) + .setText(R.id.constructionUnitView, item.workPersonDeptName) + .setText(R.id.constructionDateView, item.registerTime) + .setText(R.id.leaderNameView, item.workPersonName) + .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) + .setText(R.id.workSiteView, item.workSiteDesc) + } + } + binding.recyclerView.adapter = workSiteAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets( + marginOffset, marginOffset shr 1, marginOffset, marginOffset shr 1 + ) + ) + workSiteAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: WorkSiteListModel.DataModel.RowsModel) { + RuntimeCache.projectId = item.id + navigatePageTo() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index e224ec5..90a49ff 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -44,8 +44,6 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState -import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.TitleBarView import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -136,114 +134,9 @@ /** * 数据初始化 * */ - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.detailLiveData.observe(this) { - if (it.code == 200) { - binding.projectNameView.text = it.data.workTitle - binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") - binding.phoneNumberView.text = - String.format("联系电话:${it.data.workPersonPhoneNumber}") - binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - binding.locationView.text = String.format("所属道路:${it.data.workRoad}") - - //框作业区域 - val polygonOptions = PolygonOptions() - val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) - .fillColor(Color.argb(50, 0, 0, 255)) - - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.pointLocation.forEach { x -> - if (x.lat.isNotBlank() && x.lng.isNotBlank()) { - val latitude = x.lat.toDouble() - val longitude = x.lng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - //安全树围起来的区域范围 - polygonOptions.add(LatLng(latitude, longitude)) - } - } - //绘制工作区域矩形 - aMap.addPolygon(options) - - //计算所有点的中心点位置 - val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate) - } - } - - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) - workSiteViewModel.workSiteDeviceLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.forEach { x -> - val location = x.latestLocation - if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { - val latitude = location.gdLat.toDouble() - val longitude = location.gdLng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - devices.add(x) - //标记设备 - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(x.deviceCode) - .snippet(x.deviceType) - /** - * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 - * */ - if (x.deviceType == "1") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) - } else if (x.deviceType == "6") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) - } - allMarkerOptions.add(options) - } - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.workSiteWorkerLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - it.data.forEach { worker -> - val position = worker.location - if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { - val latitude = position.gdLat.toDouble() - val longitude = position.gdLng.toDouble() - - workers.add(worker) - val bitmap = BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap - ) - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(worker.id) - .snippet(position.deviceCode) //安全帽设备编号 - .icon(bitmap) - allMarkerOptions.add(options) - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - } + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() // 初始化 BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(binding.cardView) @@ -449,16 +342,7 @@ override fun getInfoContents(p0: Marker?): View? = null override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isReloadData) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - else -> LoadingDialog.dismiss() - } - } } override fun initEvent() { @@ -511,12 +395,132 @@ binding.reloadDataView.setOnClickListener { isReloadData = true aMap.clear() - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() } } + private fun getProjectDetail() { + workSiteViewModel.getProjectDetail( + onLoading = {}, + onSuccess = { + it.data.run { + binding.projectNameView.text = workTitle + binding.principalView.text = String.format("现场负责人:${workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${workSiteDesc}") + binding.locationView.text = String.format("所属道路:${workRoad}") + + //框作业区域 + val polygonOptions = PolygonOptions() + val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) + .fillColor(Color.argb(50, 0, 0, 255)) + + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + pointLocation.forEach { x -> + if (x.lat.isNotBlank() && x.lng.isNotBlank()) { + val latitude = x.lat.toDouble() + val longitude = x.lng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + //安全树围起来的区域范围 + polygonOptions.add(LatLng(latitude, longitude)) + } + } + //绘制工作区域矩形 + aMap.addPolygon(options) + + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteDevices() { + workSiteViewModel.getWorkSiteDevices( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { x -> + val location = x.latestLocation + if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { + val latitude = location.gdLat.toDouble() + val longitude = location.gdLng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + devices.add(x) + //标记设备 + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(x.deviceCode) + .snippet(x.deviceType) + /** + * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 + * */ + if (x.deviceType == "1") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) + } else if (x.deviceType == "6") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) + } + allMarkerOptions.add(options) + } + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteWorkers() { + workSiteViewModel.getWorkSiteWorkers( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + it.data.forEach { worker -> + val position = worker.location + if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { + val latitude = position.gdLat.toDouble() + val longitude = position.gdLng.toDouble() + + workers.add(worker) + val bitmap = BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap + ) + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(worker.id) + .snippet(position.deviceCode) //安全帽设备编号 + .icon(bitmap) + allMarkerOptions.add(options) + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + } + }, + onFailed = { it.show(this) } + ) + } + /**地图相关*********/ override fun onResume() { super.onResume() diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt index f810780..2b242d8 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt @@ -24,6 +24,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt index 82eb26d..0ba18d1 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt @@ -7,7 +7,6 @@ class ApplyViewModel : ViewModel() { fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -31,7 +30,6 @@ ) = launch({ onLoading() val response = RetrofitServiceManager.enter( - projectId, workerType, deptName, ownerShip, @@ -57,6 +55,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt index 26d25e2..291c5e1 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt @@ -22,6 +22,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt index dd2b428..bdde5fa 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt @@ -25,6 +25,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) @@ -42,6 +43,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt index 3d9dc78..849dc13 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt @@ -23,6 +23,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 60770c7..08a5f66 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -72,22 +72,22 @@ /** * 施工现场详情 */ - suspend fun getProjectDetail(projectId: String): String { - return api.getProjectDetail(AuthenticationHelper.token!!, projectId) + suspend fun getProjectDetail(): String { + return api.getProjectDetail(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取施工现场的设备 */ - suspend fun getWorkSiteDevices(projectId: String): String { - return api.getWorkSiteDevices(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteDevices(): String { + return api.getWorkSiteDevices(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取工作区域作业人员 */ - suspend fun getWorkSiteWorkers(projectId: String): String { - return api.getWorkSiteWorkers(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteWorkers(): String { + return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** @@ -164,7 +164,6 @@ * 人员申请入场 */ suspend fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -207,7 +206,7 @@ ) val projectIdMap = HashMap() - projectIdMap["projectId"] = projectId + projectIdMap["projectId"] = RuntimeCache.projectId return api.enter(AuthenticationHelper.token!!, requestBody, projectIdMap) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 3e88675..33b0d66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -125,35 +125,33 @@ }, onSuccess = { LoadingDialog.dismiss() - if (it.code == 200) { - it.data?.let { - val dataRows = it.rows - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - alarmAdapter.refresh(dataRows) - } - - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@getAlarmListByPage - } - alarmAdapter.loadMore(dataRows) - } - - else -> initRecyclerView(dataRows) + it.data?.let { + val dataRows = it.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + alarmAdapter.refresh(dataRows) } - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getAlarmListByPage + } + alarmAdapter.loadMore(dataRows) } + + else -> initRecyclerView(dataRows) + } + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE } } }, diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index ca69988..4f9b121 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -14,7 +14,6 @@ import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initImmersionBar import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.casic.br.operationsite.vm.ApplyViewModel import com.casic.br.operationsite.vm.UploadFileViewModel import com.luck.picture.lib.basic.PictureSelector @@ -174,7 +173,6 @@ val currentTime = System.currentTimeMillis().timestampToCompleteDate() applyViewModel.enter( - RuntimeCache.projectId, "2", "", binding.ownerShipView.text.toString(), diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index c3a25f4..4009f5a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -20,14 +20,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.EmptyView class MainActivity : KotlinBaseActivity() { - private val kTag = "MainActivity" private val marginOffset by lazy { 15.dp2px(this) } private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } @@ -47,70 +45,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel.worksiteLiveData.observe(this) { - if (it.code == 200) { - val dataRows = it.data?.rows!! - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - workSiteAdapter.refresh(dataRows) - } - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@observe - } - workSiteAdapter.loadMore(dataRows) - } - - else -> { - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE - workSiteAdapter = object : - NormalRecyclerAdapter( - R.layout.item_work_site_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataModel.RowsModel - ) { - viewHolder.setText(R.id.workSiteNameView, item.workTitle) - .setText(R.id.constructionUnitView, item.workPersonDeptName) - .setText(R.id.constructionDateView, item.registerTime) - .setText(R.id.leaderNameView, item.workPersonName) - .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) - .setText(R.id.workSiteView, item.workSiteDesc) - } - } - binding.recyclerView.adapter = workSiteAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemOffsets( - marginOffset, marginOffset shr 1, - marginOffset, marginOffset shr 1 - ) - ) - workSiteAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, item: WorkSiteListModel.DataModel.RowsModel - ) { - RuntimeCache.projectId = item.id - navigatePageTo() - } - }) - } - } - } - } - } getProjectListByPage() userViewModel.getUserDetail( @@ -126,23 +61,7 @@ } override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isRefresh || isLoadMore) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - LoadState.Success -> { - LoadingDialog.dismiss() - } - - LoadState.Fail -> { - LoadingDialog.dismiss() - "数据加载失败,请重试".show(this) - } - } - } } override fun initEvent() { @@ -181,6 +100,83 @@ } private fun getProjectListByPage() { - workSiteViewModel.getProjectListByPage(this, keywords, "", page) + workSiteViewModel.getProjectListByPage( + keywords, + "", + page, + onLoading = { + if (isRefresh || isLoadMore) { + return@getProjectListByPage + } + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.data?.let { data -> + val dataRows = data.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + workSiteAdapter.refresh(dataRows) + } + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getProjectListByPage + } + workSiteAdapter.loadMore(dataRows) + } + + else -> initRecyclerView(dataRows) + } + + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE + } + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) + } + + private fun initRecyclerView(dataRows: MutableList) { + workSiteAdapter = object : NormalRecyclerAdapter( + R.layout.item_work_site_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WorkSiteListModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.workSiteNameView, item.workTitle) + .setText(R.id.constructionUnitView, item.workPersonDeptName) + .setText(R.id.constructionDateView, item.registerTime) + .setText(R.id.leaderNameView, item.workPersonName) + .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) + .setText(R.id.workSiteView, item.workSiteDesc) + } + } + binding.recyclerView.adapter = workSiteAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets( + marginOffset, marginOffset shr 1, marginOffset, marginOffset shr 1 + ) + ) + workSiteAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: WorkSiteListModel.DataModel.RowsModel) { + RuntimeCache.projectId = item.id + navigatePageTo() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index e224ec5..90a49ff 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -44,8 +44,6 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState -import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.TitleBarView import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -136,114 +134,9 @@ /** * 数据初始化 * */ - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.detailLiveData.observe(this) { - if (it.code == 200) { - binding.projectNameView.text = it.data.workTitle - binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") - binding.phoneNumberView.text = - String.format("联系电话:${it.data.workPersonPhoneNumber}") - binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - binding.locationView.text = String.format("所属道路:${it.data.workRoad}") - - //框作业区域 - val polygonOptions = PolygonOptions() - val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) - .fillColor(Color.argb(50, 0, 0, 255)) - - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.pointLocation.forEach { x -> - if (x.lat.isNotBlank() && x.lng.isNotBlank()) { - val latitude = x.lat.toDouble() - val longitude = x.lng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - //安全树围起来的区域范围 - polygonOptions.add(LatLng(latitude, longitude)) - } - } - //绘制工作区域矩形 - aMap.addPolygon(options) - - //计算所有点的中心点位置 - val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate) - } - } - - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) - workSiteViewModel.workSiteDeviceLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.forEach { x -> - val location = x.latestLocation - if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { - val latitude = location.gdLat.toDouble() - val longitude = location.gdLng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - devices.add(x) - //标记设备 - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(x.deviceCode) - .snippet(x.deviceType) - /** - * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 - * */ - if (x.deviceType == "1") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) - } else if (x.deviceType == "6") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) - } - allMarkerOptions.add(options) - } - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.workSiteWorkerLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - it.data.forEach { worker -> - val position = worker.location - if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { - val latitude = position.gdLat.toDouble() - val longitude = position.gdLng.toDouble() - - workers.add(worker) - val bitmap = BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap - ) - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(worker.id) - .snippet(position.deviceCode) //安全帽设备编号 - .icon(bitmap) - allMarkerOptions.add(options) - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - } + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() // 初始化 BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(binding.cardView) @@ -449,16 +342,7 @@ override fun getInfoContents(p0: Marker?): View? = null override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isReloadData) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - else -> LoadingDialog.dismiss() - } - } } override fun initEvent() { @@ -511,12 +395,132 @@ binding.reloadDataView.setOnClickListener { isReloadData = true aMap.clear() - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() } } + private fun getProjectDetail() { + workSiteViewModel.getProjectDetail( + onLoading = {}, + onSuccess = { + it.data.run { + binding.projectNameView.text = workTitle + binding.principalView.text = String.format("现场负责人:${workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${workSiteDesc}") + binding.locationView.text = String.format("所属道路:${workRoad}") + + //框作业区域 + val polygonOptions = PolygonOptions() + val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) + .fillColor(Color.argb(50, 0, 0, 255)) + + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + pointLocation.forEach { x -> + if (x.lat.isNotBlank() && x.lng.isNotBlank()) { + val latitude = x.lat.toDouble() + val longitude = x.lng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + //安全树围起来的区域范围 + polygonOptions.add(LatLng(latitude, longitude)) + } + } + //绘制工作区域矩形 + aMap.addPolygon(options) + + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteDevices() { + workSiteViewModel.getWorkSiteDevices( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { x -> + val location = x.latestLocation + if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { + val latitude = location.gdLat.toDouble() + val longitude = location.gdLng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + devices.add(x) + //标记设备 + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(x.deviceCode) + .snippet(x.deviceType) + /** + * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 + * */ + if (x.deviceType == "1") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) + } else if (x.deviceType == "6") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) + } + allMarkerOptions.add(options) + } + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteWorkers() { + workSiteViewModel.getWorkSiteWorkers( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + it.data.forEach { worker -> + val position = worker.location + if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { + val latitude = position.gdLat.toDouble() + val longitude = position.gdLng.toDouble() + + workers.add(worker) + val bitmap = BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap + ) + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(worker.id) + .snippet(position.deviceCode) //安全帽设备编号 + .icon(bitmap) + allMarkerOptions.add(options) + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + } + }, + onFailed = { it.show(this) } + ) + } + /**地图相关*********/ override fun onResume() { super.onResume() diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt index f810780..2b242d8 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt @@ -24,6 +24,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt index 82eb26d..0ba18d1 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt @@ -7,7 +7,6 @@ class ApplyViewModel : ViewModel() { fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -31,7 +30,6 @@ ) = launch({ onLoading() val response = RetrofitServiceManager.enter( - projectId, workerType, deptName, ownerShip, @@ -57,6 +55,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt index 26d25e2..291c5e1 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt @@ -22,6 +22,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt index dd2b428..bdde5fa 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt @@ -25,6 +25,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) @@ -42,6 +43,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt index 3d9dc78..849dc13 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt @@ -23,6 +23,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt index 115ab72..7f41593 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt @@ -41,6 +41,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) @@ -65,6 +66,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 60770c7..08a5f66 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -72,22 +72,22 @@ /** * 施工现场详情 */ - suspend fun getProjectDetail(projectId: String): String { - return api.getProjectDetail(AuthenticationHelper.token!!, projectId) + suspend fun getProjectDetail(): String { + return api.getProjectDetail(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取施工现场的设备 */ - suspend fun getWorkSiteDevices(projectId: String): String { - return api.getWorkSiteDevices(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteDevices(): String { + return api.getWorkSiteDevices(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取工作区域作业人员 */ - suspend fun getWorkSiteWorkers(projectId: String): String { - return api.getWorkSiteWorkers(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteWorkers(): String { + return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** @@ -164,7 +164,6 @@ * 人员申请入场 */ suspend fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -207,7 +206,7 @@ ) val projectIdMap = HashMap() - projectIdMap["projectId"] = projectId + projectIdMap["projectId"] = RuntimeCache.projectId return api.enter(AuthenticationHelper.token!!, requestBody, projectIdMap) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 3e88675..33b0d66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -125,35 +125,33 @@ }, onSuccess = { LoadingDialog.dismiss() - if (it.code == 200) { - it.data?.let { - val dataRows = it.rows - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - alarmAdapter.refresh(dataRows) - } - - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@getAlarmListByPage - } - alarmAdapter.loadMore(dataRows) - } - - else -> initRecyclerView(dataRows) + it.data?.let { + val dataRows = it.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + alarmAdapter.refresh(dataRows) } - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getAlarmListByPage + } + alarmAdapter.loadMore(dataRows) } + + else -> initRecyclerView(dataRows) + } + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE } } }, diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index ca69988..4f9b121 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -14,7 +14,6 @@ import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initImmersionBar import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.casic.br.operationsite.vm.ApplyViewModel import com.casic.br.operationsite.vm.UploadFileViewModel import com.luck.picture.lib.basic.PictureSelector @@ -174,7 +173,6 @@ val currentTime = System.currentTimeMillis().timestampToCompleteDate() applyViewModel.enter( - RuntimeCache.projectId, "2", "", binding.ownerShipView.text.toString(), diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index c3a25f4..4009f5a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -20,14 +20,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.EmptyView class MainActivity : KotlinBaseActivity() { - private val kTag = "MainActivity" private val marginOffset by lazy { 15.dp2px(this) } private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } @@ -47,70 +45,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel.worksiteLiveData.observe(this) { - if (it.code == 200) { - val dataRows = it.data?.rows!! - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - workSiteAdapter.refresh(dataRows) - } - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@observe - } - workSiteAdapter.loadMore(dataRows) - } - - else -> { - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE - workSiteAdapter = object : - NormalRecyclerAdapter( - R.layout.item_work_site_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataModel.RowsModel - ) { - viewHolder.setText(R.id.workSiteNameView, item.workTitle) - .setText(R.id.constructionUnitView, item.workPersonDeptName) - .setText(R.id.constructionDateView, item.registerTime) - .setText(R.id.leaderNameView, item.workPersonName) - .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) - .setText(R.id.workSiteView, item.workSiteDesc) - } - } - binding.recyclerView.adapter = workSiteAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemOffsets( - marginOffset, marginOffset shr 1, - marginOffset, marginOffset shr 1 - ) - ) - workSiteAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, item: WorkSiteListModel.DataModel.RowsModel - ) { - RuntimeCache.projectId = item.id - navigatePageTo() - } - }) - } - } - } - } - } getProjectListByPage() userViewModel.getUserDetail( @@ -126,23 +61,7 @@ } override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isRefresh || isLoadMore) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - LoadState.Success -> { - LoadingDialog.dismiss() - } - - LoadState.Fail -> { - LoadingDialog.dismiss() - "数据加载失败,请重试".show(this) - } - } - } } override fun initEvent() { @@ -181,6 +100,83 @@ } private fun getProjectListByPage() { - workSiteViewModel.getProjectListByPage(this, keywords, "", page) + workSiteViewModel.getProjectListByPage( + keywords, + "", + page, + onLoading = { + if (isRefresh || isLoadMore) { + return@getProjectListByPage + } + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.data?.let { data -> + val dataRows = data.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + workSiteAdapter.refresh(dataRows) + } + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getProjectListByPage + } + workSiteAdapter.loadMore(dataRows) + } + + else -> initRecyclerView(dataRows) + } + + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE + } + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) + } + + private fun initRecyclerView(dataRows: MutableList) { + workSiteAdapter = object : NormalRecyclerAdapter( + R.layout.item_work_site_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WorkSiteListModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.workSiteNameView, item.workTitle) + .setText(R.id.constructionUnitView, item.workPersonDeptName) + .setText(R.id.constructionDateView, item.registerTime) + .setText(R.id.leaderNameView, item.workPersonName) + .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) + .setText(R.id.workSiteView, item.workSiteDesc) + } + } + binding.recyclerView.adapter = workSiteAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets( + marginOffset, marginOffset shr 1, marginOffset, marginOffset shr 1 + ) + ) + workSiteAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: WorkSiteListModel.DataModel.RowsModel) { + RuntimeCache.projectId = item.id + navigatePageTo() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index e224ec5..90a49ff 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -44,8 +44,6 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState -import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.TitleBarView import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -136,114 +134,9 @@ /** * 数据初始化 * */ - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.detailLiveData.observe(this) { - if (it.code == 200) { - binding.projectNameView.text = it.data.workTitle - binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") - binding.phoneNumberView.text = - String.format("联系电话:${it.data.workPersonPhoneNumber}") - binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - binding.locationView.text = String.format("所属道路:${it.data.workRoad}") - - //框作业区域 - val polygonOptions = PolygonOptions() - val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) - .fillColor(Color.argb(50, 0, 0, 255)) - - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.pointLocation.forEach { x -> - if (x.lat.isNotBlank() && x.lng.isNotBlank()) { - val latitude = x.lat.toDouble() - val longitude = x.lng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - //安全树围起来的区域范围 - polygonOptions.add(LatLng(latitude, longitude)) - } - } - //绘制工作区域矩形 - aMap.addPolygon(options) - - //计算所有点的中心点位置 - val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate) - } - } - - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) - workSiteViewModel.workSiteDeviceLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.forEach { x -> - val location = x.latestLocation - if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { - val latitude = location.gdLat.toDouble() - val longitude = location.gdLng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - devices.add(x) - //标记设备 - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(x.deviceCode) - .snippet(x.deviceType) - /** - * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 - * */ - if (x.deviceType == "1") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) - } else if (x.deviceType == "6") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) - } - allMarkerOptions.add(options) - } - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.workSiteWorkerLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - it.data.forEach { worker -> - val position = worker.location - if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { - val latitude = position.gdLat.toDouble() - val longitude = position.gdLng.toDouble() - - workers.add(worker) - val bitmap = BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap - ) - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(worker.id) - .snippet(position.deviceCode) //安全帽设备编号 - .icon(bitmap) - allMarkerOptions.add(options) - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - } + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() // 初始化 BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(binding.cardView) @@ -449,16 +342,7 @@ override fun getInfoContents(p0: Marker?): View? = null override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isReloadData) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - else -> LoadingDialog.dismiss() - } - } } override fun initEvent() { @@ -511,12 +395,132 @@ binding.reloadDataView.setOnClickListener { isReloadData = true aMap.clear() - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() } } + private fun getProjectDetail() { + workSiteViewModel.getProjectDetail( + onLoading = {}, + onSuccess = { + it.data.run { + binding.projectNameView.text = workTitle + binding.principalView.text = String.format("现场负责人:${workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${workSiteDesc}") + binding.locationView.text = String.format("所属道路:${workRoad}") + + //框作业区域 + val polygonOptions = PolygonOptions() + val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) + .fillColor(Color.argb(50, 0, 0, 255)) + + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + pointLocation.forEach { x -> + if (x.lat.isNotBlank() && x.lng.isNotBlank()) { + val latitude = x.lat.toDouble() + val longitude = x.lng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + //安全树围起来的区域范围 + polygonOptions.add(LatLng(latitude, longitude)) + } + } + //绘制工作区域矩形 + aMap.addPolygon(options) + + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteDevices() { + workSiteViewModel.getWorkSiteDevices( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { x -> + val location = x.latestLocation + if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { + val latitude = location.gdLat.toDouble() + val longitude = location.gdLng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + devices.add(x) + //标记设备 + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(x.deviceCode) + .snippet(x.deviceType) + /** + * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 + * */ + if (x.deviceType == "1") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) + } else if (x.deviceType == "6") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) + } + allMarkerOptions.add(options) + } + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteWorkers() { + workSiteViewModel.getWorkSiteWorkers( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + it.data.forEach { worker -> + val position = worker.location + if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { + val latitude = position.gdLat.toDouble() + val longitude = position.gdLng.toDouble() + + workers.add(worker) + val bitmap = BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap + ) + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(worker.id) + .snippet(position.deviceCode) //安全帽设备编号 + .icon(bitmap) + allMarkerOptions.add(options) + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + } + }, + onFailed = { it.show(this) } + ) + } + /**地图相关*********/ override fun onResume() { super.onResume() diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt index f810780..2b242d8 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt @@ -24,6 +24,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt index 82eb26d..0ba18d1 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt @@ -7,7 +7,6 @@ class ApplyViewModel : ViewModel() { fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -31,7 +30,6 @@ ) = launch({ onLoading() val response = RetrofitServiceManager.enter( - projectId, workerType, deptName, ownerShip, @@ -57,6 +55,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt index 26d25e2..291c5e1 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt @@ -22,6 +22,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt index dd2b428..bdde5fa 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt @@ -25,6 +25,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) @@ -42,6 +43,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt index 3d9dc78..849dc13 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt @@ -23,6 +23,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt index 115ab72..7f41593 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt @@ -41,6 +41,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) @@ -65,6 +66,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/UploadFileViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/UploadFileViewModel.kt index e243ed1..bea8aa6 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/UploadFileViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/UploadFileViewModel.kt @@ -24,6 +24,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 60770c7..08a5f66 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -72,22 +72,22 @@ /** * 施工现场详情 */ - suspend fun getProjectDetail(projectId: String): String { - return api.getProjectDetail(AuthenticationHelper.token!!, projectId) + suspend fun getProjectDetail(): String { + return api.getProjectDetail(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取施工现场的设备 */ - suspend fun getWorkSiteDevices(projectId: String): String { - return api.getWorkSiteDevices(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteDevices(): String { + return api.getWorkSiteDevices(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取工作区域作业人员 */ - suspend fun getWorkSiteWorkers(projectId: String): String { - return api.getWorkSiteWorkers(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteWorkers(): String { + return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** @@ -164,7 +164,6 @@ * 人员申请入场 */ suspend fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -207,7 +206,7 @@ ) val projectIdMap = HashMap() - projectIdMap["projectId"] = projectId + projectIdMap["projectId"] = RuntimeCache.projectId return api.enter(AuthenticationHelper.token!!, requestBody, projectIdMap) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 3e88675..33b0d66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -125,35 +125,33 @@ }, onSuccess = { LoadingDialog.dismiss() - if (it.code == 200) { - it.data?.let { - val dataRows = it.rows - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - alarmAdapter.refresh(dataRows) - } - - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@getAlarmListByPage - } - alarmAdapter.loadMore(dataRows) - } - - else -> initRecyclerView(dataRows) + it.data?.let { + val dataRows = it.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + alarmAdapter.refresh(dataRows) } - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getAlarmListByPage + } + alarmAdapter.loadMore(dataRows) } + + else -> initRecyclerView(dataRows) + } + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE } } }, diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index ca69988..4f9b121 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -14,7 +14,6 @@ import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initImmersionBar import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.casic.br.operationsite.vm.ApplyViewModel import com.casic.br.operationsite.vm.UploadFileViewModel import com.luck.picture.lib.basic.PictureSelector @@ -174,7 +173,6 @@ val currentTime = System.currentTimeMillis().timestampToCompleteDate() applyViewModel.enter( - RuntimeCache.projectId, "2", "", binding.ownerShipView.text.toString(), diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index c3a25f4..4009f5a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -20,14 +20,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.EmptyView class MainActivity : KotlinBaseActivity() { - private val kTag = "MainActivity" private val marginOffset by lazy { 15.dp2px(this) } private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } @@ -47,70 +45,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel.worksiteLiveData.observe(this) { - if (it.code == 200) { - val dataRows = it.data?.rows!! - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - workSiteAdapter.refresh(dataRows) - } - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@observe - } - workSiteAdapter.loadMore(dataRows) - } - - else -> { - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE - workSiteAdapter = object : - NormalRecyclerAdapter( - R.layout.item_work_site_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataModel.RowsModel - ) { - viewHolder.setText(R.id.workSiteNameView, item.workTitle) - .setText(R.id.constructionUnitView, item.workPersonDeptName) - .setText(R.id.constructionDateView, item.registerTime) - .setText(R.id.leaderNameView, item.workPersonName) - .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) - .setText(R.id.workSiteView, item.workSiteDesc) - } - } - binding.recyclerView.adapter = workSiteAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemOffsets( - marginOffset, marginOffset shr 1, - marginOffset, marginOffset shr 1 - ) - ) - workSiteAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, item: WorkSiteListModel.DataModel.RowsModel - ) { - RuntimeCache.projectId = item.id - navigatePageTo() - } - }) - } - } - } - } - } getProjectListByPage() userViewModel.getUserDetail( @@ -126,23 +61,7 @@ } override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isRefresh || isLoadMore) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - LoadState.Success -> { - LoadingDialog.dismiss() - } - - LoadState.Fail -> { - LoadingDialog.dismiss() - "数据加载失败,请重试".show(this) - } - } - } } override fun initEvent() { @@ -181,6 +100,83 @@ } private fun getProjectListByPage() { - workSiteViewModel.getProjectListByPage(this, keywords, "", page) + workSiteViewModel.getProjectListByPage( + keywords, + "", + page, + onLoading = { + if (isRefresh || isLoadMore) { + return@getProjectListByPage + } + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.data?.let { data -> + val dataRows = data.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + workSiteAdapter.refresh(dataRows) + } + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getProjectListByPage + } + workSiteAdapter.loadMore(dataRows) + } + + else -> initRecyclerView(dataRows) + } + + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE + } + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) + } + + private fun initRecyclerView(dataRows: MutableList) { + workSiteAdapter = object : NormalRecyclerAdapter( + R.layout.item_work_site_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WorkSiteListModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.workSiteNameView, item.workTitle) + .setText(R.id.constructionUnitView, item.workPersonDeptName) + .setText(R.id.constructionDateView, item.registerTime) + .setText(R.id.leaderNameView, item.workPersonName) + .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) + .setText(R.id.workSiteView, item.workSiteDesc) + } + } + binding.recyclerView.adapter = workSiteAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets( + marginOffset, marginOffset shr 1, marginOffset, marginOffset shr 1 + ) + ) + workSiteAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: WorkSiteListModel.DataModel.RowsModel) { + RuntimeCache.projectId = item.id + navigatePageTo() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index e224ec5..90a49ff 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -44,8 +44,6 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState -import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.TitleBarView import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -136,114 +134,9 @@ /** * 数据初始化 * */ - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.detailLiveData.observe(this) { - if (it.code == 200) { - binding.projectNameView.text = it.data.workTitle - binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") - binding.phoneNumberView.text = - String.format("联系电话:${it.data.workPersonPhoneNumber}") - binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - binding.locationView.text = String.format("所属道路:${it.data.workRoad}") - - //框作业区域 - val polygonOptions = PolygonOptions() - val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) - .fillColor(Color.argb(50, 0, 0, 255)) - - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.pointLocation.forEach { x -> - if (x.lat.isNotBlank() && x.lng.isNotBlank()) { - val latitude = x.lat.toDouble() - val longitude = x.lng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - //安全树围起来的区域范围 - polygonOptions.add(LatLng(latitude, longitude)) - } - } - //绘制工作区域矩形 - aMap.addPolygon(options) - - //计算所有点的中心点位置 - val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate) - } - } - - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) - workSiteViewModel.workSiteDeviceLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.forEach { x -> - val location = x.latestLocation - if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { - val latitude = location.gdLat.toDouble() - val longitude = location.gdLng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - devices.add(x) - //标记设备 - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(x.deviceCode) - .snippet(x.deviceType) - /** - * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 - * */ - if (x.deviceType == "1") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) - } else if (x.deviceType == "6") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) - } - allMarkerOptions.add(options) - } - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.workSiteWorkerLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - it.data.forEach { worker -> - val position = worker.location - if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { - val latitude = position.gdLat.toDouble() - val longitude = position.gdLng.toDouble() - - workers.add(worker) - val bitmap = BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap - ) - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(worker.id) - .snippet(position.deviceCode) //安全帽设备编号 - .icon(bitmap) - allMarkerOptions.add(options) - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - } + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() // 初始化 BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(binding.cardView) @@ -449,16 +342,7 @@ override fun getInfoContents(p0: Marker?): View? = null override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isReloadData) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - else -> LoadingDialog.dismiss() - } - } } override fun initEvent() { @@ -511,12 +395,132 @@ binding.reloadDataView.setOnClickListener { isReloadData = true aMap.clear() - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() } } + private fun getProjectDetail() { + workSiteViewModel.getProjectDetail( + onLoading = {}, + onSuccess = { + it.data.run { + binding.projectNameView.text = workTitle + binding.principalView.text = String.format("现场负责人:${workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${workSiteDesc}") + binding.locationView.text = String.format("所属道路:${workRoad}") + + //框作业区域 + val polygonOptions = PolygonOptions() + val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) + .fillColor(Color.argb(50, 0, 0, 255)) + + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + pointLocation.forEach { x -> + if (x.lat.isNotBlank() && x.lng.isNotBlank()) { + val latitude = x.lat.toDouble() + val longitude = x.lng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + //安全树围起来的区域范围 + polygonOptions.add(LatLng(latitude, longitude)) + } + } + //绘制工作区域矩形 + aMap.addPolygon(options) + + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteDevices() { + workSiteViewModel.getWorkSiteDevices( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { x -> + val location = x.latestLocation + if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { + val latitude = location.gdLat.toDouble() + val longitude = location.gdLng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + devices.add(x) + //标记设备 + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(x.deviceCode) + .snippet(x.deviceType) + /** + * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 + * */ + if (x.deviceType == "1") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) + } else if (x.deviceType == "6") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) + } + allMarkerOptions.add(options) + } + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteWorkers() { + workSiteViewModel.getWorkSiteWorkers( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + it.data.forEach { worker -> + val position = worker.location + if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { + val latitude = position.gdLat.toDouble() + val longitude = position.gdLng.toDouble() + + workers.add(worker) + val bitmap = BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap + ) + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(worker.id) + .snippet(position.deviceCode) //安全帽设备编号 + .icon(bitmap) + allMarkerOptions.add(options) + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + } + }, + onFailed = { it.show(this) } + ) + } + /**地图相关*********/ override fun onResume() { super.onResume() diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt index f810780..2b242d8 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt @@ -24,6 +24,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt index 82eb26d..0ba18d1 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt @@ -7,7 +7,6 @@ class ApplyViewModel : ViewModel() { fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -31,7 +30,6 @@ ) = launch({ onLoading() val response = RetrofitServiceManager.enter( - projectId, workerType, deptName, ownerShip, @@ -57,6 +55,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt index 26d25e2..291c5e1 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt @@ -22,6 +22,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt index dd2b428..bdde5fa 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt @@ -25,6 +25,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) @@ -42,6 +43,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt index 3d9dc78..849dc13 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt @@ -23,6 +23,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt index 115ab72..7f41593 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt @@ -41,6 +41,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) @@ -65,6 +66,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/UploadFileViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/UploadFileViewModel.kt index e243ed1..bea8aa6 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/UploadFileViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/UploadFileViewModel.kt @@ -24,6 +24,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/UserViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/UserViewModel.kt index b0cee1b..b6bfba6 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/UserViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/UserViewModel.kt @@ -22,6 +22,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 60770c7..08a5f66 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -72,22 +72,22 @@ /** * 施工现场详情 */ - suspend fun getProjectDetail(projectId: String): String { - return api.getProjectDetail(AuthenticationHelper.token!!, projectId) + suspend fun getProjectDetail(): String { + return api.getProjectDetail(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取施工现场的设备 */ - suspend fun getWorkSiteDevices(projectId: String): String { - return api.getWorkSiteDevices(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteDevices(): String { + return api.getWorkSiteDevices(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** * 获取工作区域作业人员 */ - suspend fun getWorkSiteWorkers(projectId: String): String { - return api.getWorkSiteWorkers(AuthenticationHelper.token!!, projectId) + suspend fun getWorkSiteWorkers(): String { + return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId) } /** @@ -164,7 +164,6 @@ * 人员申请入场 */ suspend fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -207,7 +206,7 @@ ) val projectIdMap = HashMap() - projectIdMap["projectId"] = projectId + projectIdMap["projectId"] = RuntimeCache.projectId return api.enter(AuthenticationHelper.token!!, requestBody, projectIdMap) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 3e88675..33b0d66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -125,35 +125,33 @@ }, onSuccess = { LoadingDialog.dismiss() - if (it.code == 200) { - it.data?.let { - val dataRows = it.rows - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - alarmAdapter.refresh(dataRows) - } - - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@getAlarmListByPage - } - alarmAdapter.loadMore(dataRows) - } - - else -> initRecyclerView(dataRows) + it.data?.let { + val dataRows = it.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + alarmAdapter.refresh(dataRows) } - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getAlarmListByPage + } + alarmAdapter.loadMore(dataRows) } + + else -> initRecyclerView(dataRows) + } + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE } } }, diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index ca69988..4f9b121 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -14,7 +14,6 @@ import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initImmersionBar import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.casic.br.operationsite.vm.ApplyViewModel import com.casic.br.operationsite.vm.UploadFileViewModel import com.luck.picture.lib.basic.PictureSelector @@ -174,7 +173,6 @@ val currentTime = System.currentTimeMillis().timestampToCompleteDate() applyViewModel.enter( - RuntimeCache.projectId, "2", "", binding.ownerShipView.text.toString(), diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index c3a25f4..4009f5a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -20,14 +20,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.EmptyView class MainActivity : KotlinBaseActivity() { - private val kTag = "MainActivity" private val marginOffset by lazy { 15.dp2px(this) } private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } @@ -47,70 +45,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel.worksiteLiveData.observe(this) { - if (it.code == 200) { - val dataRows = it.data?.rows!! - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - workSiteAdapter.refresh(dataRows) - } - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@observe - } - workSiteAdapter.loadMore(dataRows) - } - - else -> { - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE - workSiteAdapter = object : - NormalRecyclerAdapter( - R.layout.item_work_site_rv_l, dataRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataModel.RowsModel - ) { - viewHolder.setText(R.id.workSiteNameView, item.workTitle) - .setText(R.id.constructionUnitView, item.workPersonDeptName) - .setText(R.id.constructionDateView, item.registerTime) - .setText(R.id.leaderNameView, item.workPersonName) - .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) - .setText(R.id.workSiteView, item.workSiteDesc) - } - } - binding.recyclerView.adapter = workSiteAdapter - binding.recyclerView.addItemDecoration( - RecyclerViewItemOffsets( - marginOffset, marginOffset shr 1, - marginOffset, marginOffset shr 1 - ) - ) - workSiteAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, item: WorkSiteListModel.DataModel.RowsModel - ) { - RuntimeCache.projectId = item.id - navigatePageTo() - } - }) - } - } - } - } - } getProjectListByPage() userViewModel.getUserDetail( @@ -126,23 +61,7 @@ } override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isRefresh || isLoadMore) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - LoadState.Success -> { - LoadingDialog.dismiss() - } - - LoadState.Fail -> { - LoadingDialog.dismiss() - "数据加载失败,请重试".show(this) - } - } - } } override fun initEvent() { @@ -181,6 +100,83 @@ } private fun getProjectListByPage() { - workSiteViewModel.getProjectListByPage(this, keywords, "", page) + workSiteViewModel.getProjectListByPage( + keywords, + "", + page, + onLoading = { + if (isRefresh || isLoadMore) { + return@getProjectListByPage + } + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.data?.let { data -> + val dataRows = data.rows + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + workSiteAdapter.refresh(dataRows) + } + + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getProjectListByPage + } + workSiteAdapter.loadMore(dataRows) + } + + else -> initRecyclerView(dataRows) + } + + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE + } + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) + } + + private fun initRecyclerView(dataRows: MutableList) { + workSiteAdapter = object : NormalRecyclerAdapter( + R.layout.item_work_site_rv_l, dataRows + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WorkSiteListModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.workSiteNameView, item.workTitle) + .setText(R.id.constructionUnitView, item.workPersonDeptName) + .setText(R.id.constructionDateView, item.registerTime) + .setText(R.id.leaderNameView, item.workPersonName) + .setText(R.id.leaderPhoneView, item.workPersonPhoneNumber) + .setText(R.id.workSiteView, item.workSiteDesc) + } + } + binding.recyclerView.adapter = workSiteAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets( + marginOffset, marginOffset shr 1, marginOffset, marginOffset shr 1 + ) + ) + workSiteAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, item: WorkSiteListModel.DataModel.RowsModel) { + RuntimeCache.projectId = item.id + navigatePageTo() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index e224ec5..90a49ff 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -44,8 +44,6 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState -import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.TitleBarView import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -136,114 +134,9 @@ /** * 数据初始化 * */ - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.detailLiveData.observe(this) { - if (it.code == 200) { - binding.projectNameView.text = it.data.workTitle - binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") - binding.phoneNumberView.text = - String.format("联系电话:${it.data.workPersonPhoneNumber}") - binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - binding.locationView.text = String.format("所属道路:${it.data.workRoad}") - - //框作业区域 - val polygonOptions = PolygonOptions() - val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) - .fillColor(Color.argb(50, 0, 0, 255)) - - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.pointLocation.forEach { x -> - if (x.lat.isNotBlank() && x.lng.isNotBlank()) { - val latitude = x.lat.toDouble() - val longitude = x.lng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - //安全树围起来的区域范围 - polygonOptions.add(LatLng(latitude, longitude)) - } - } - //绘制工作区域矩形 - aMap.addPolygon(options) - - //计算所有点的中心点位置 - val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate) - } - } - - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) - workSiteViewModel.workSiteDeviceLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - val latitudeList: MutableList = ArrayList() - val longitudeList: MutableList = ArrayList() - it.data.forEach { x -> - val location = x.latestLocation - if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { - val latitude = location.gdLat.toDouble() - val longitude = location.gdLng.toDouble() - - latitudeList.add(latitude) - longitudeList.add(longitude) - - devices.add(x) - //标记设备 - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(x.deviceCode) - .snippet(x.deviceType) - /** - * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 - * */ - if (x.deviceType == "1") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) - } else if (x.deviceType == "6") { - options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) - } - allMarkerOptions.add(options) - } - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.workSiteWorkerLiveData.observe(this) { - if (it.code == 200) { - val allMarkerOptions = ArrayList() - it.data.forEach { worker -> - val position = worker.location - if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { - val latitude = position.gdLat.toDouble() - val longitude = position.gdLng.toDouble() - - workers.add(worker) - val bitmap = BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap - ) - val options = MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(worker.id) - .snippet(position.deviceCode) //安全帽设备编号 - .icon(bitmap) - allMarkerOptions.add(options) - } - - allMarkerOptions.forEach { marker -> - aMap.addMarker(marker) - } - } - } - } + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() // 初始化 BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(binding.cardView) @@ -449,16 +342,7 @@ override fun getInfoContents(p0: Marker?): View? = null override fun observeRequestState() { - workSiteViewModel.loadState.observe(this) { - if (isReloadData) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - else -> LoadingDialog.dismiss() - } - } } override fun initEvent() { @@ -511,12 +395,132 @@ binding.reloadDataView.setOnClickListener { isReloadData = true aMap.clear() - workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteWorkers(this, RuntimeCache.projectId) - workSiteViewModel.getWorkSiteDevices(this, RuntimeCache.projectId) + getProjectDetail() + getWorkSiteDevices() + getWorkSiteWorkers() } } + private fun getProjectDetail() { + workSiteViewModel.getProjectDetail( + onLoading = {}, + onSuccess = { + it.data.run { + binding.projectNameView.text = workTitle + binding.principalView.text = String.format("现场负责人:${workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${workSiteDesc}") + binding.locationView.text = String.format("所属道路:${workRoad}") + + //框作业区域 + val polygonOptions = PolygonOptions() + val options = polygonOptions.strokeWidth(5f).strokeColor(Color.RED) + .fillColor(Color.argb(50, 0, 0, 255)) + + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + pointLocation.forEach { x -> + if (x.lat.isNotBlank() && x.lng.isNotBlank()) { + val latitude = x.lat.toDouble() + val longitude = x.lng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + //安全树围起来的区域范围 + polygonOptions.add(LatLng(latitude, longitude)) + } + } + //绘制工作区域矩形 + aMap.addPolygon(options) + + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, aMap.maxZoomLevel, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteDevices() { + workSiteViewModel.getWorkSiteDevices( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { x -> + val location = x.latestLocation + if (location.gdLat.isNotBlank() && location.gdLng.isNotBlank()) { + val latitude = location.gdLat.toDouble() + val longitude = location.gdLng.toDouble() + + latitudeList.add(latitude) + longitudeList.add(longitude) + + devices.add(x) + //标记设备 + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(x.deviceCode) + .snippet(x.deviceType) + /** + * 1:安全树 ;2:安全帽; 4:四合一; 6:管盯; 7:一体机 + * */ + if (x.deviceType == "1") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_tree)) + } else if (x.deviceType == "6") { + options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) + } + allMarkerOptions.add(options) + } + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + }, + onFailed = { it.show(this) } + ) + } + + private fun getWorkSiteWorkers() { + workSiteViewModel.getWorkSiteWorkers( + onLoading = {}, + onSuccess = { + val allMarkerOptions = ArrayList() + it.data.forEach { worker -> + val position = worker.location + if (position.gdLat.isNotBlank() && position.gdLng.isNotBlank()) { + val latitude = position.gdLat.toDouble() + val longitude = position.gdLng.toDouble() + + workers.add(worker) + val bitmap = BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_worker).bitmap + ) + val options = MarkerOptions() + .position(LatLng(latitude, longitude)) + .title(worker.id) + .snippet(position.deviceCode) //安全帽设备编号 + .icon(bitmap) + allMarkerOptions.add(options) + } + + allMarkerOptions.forEach { marker -> + aMap.addMarker(marker) + } + } + }, + onFailed = { it.show(this) } + ) + } + /**地图相关*********/ override fun onResume() { super.onResume() diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt index f810780..2b242d8 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt @@ -24,6 +24,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt index 82eb26d..0ba18d1 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt @@ -7,7 +7,6 @@ class ApplyViewModel : ViewModel() { fun enter( - projectId: String, workerType: String, deptName: String, ownerShip: String, @@ -31,7 +30,6 @@ ) = launch({ onLoading() val response = RetrofitServiceManager.enter( - projectId, workerType, deptName, ownerShip, @@ -57,6 +55,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt index 26d25e2..291c5e1 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AuthenticateViewModel.kt @@ -22,6 +22,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt index dd2b428..bdde5fa 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/LoginViewModel.kt @@ -25,6 +25,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) @@ -42,6 +43,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt index 3d9dc78..849dc13 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/SystemViewModel.kt @@ -23,6 +23,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt index 115ab72..7f41593 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt @@ -41,6 +41,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) @@ -65,6 +66,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/UploadFileViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/UploadFileViewModel.kt index e243ed1..bea8aa6 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/UploadFileViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/UploadFileViewModel.kt @@ -24,6 +24,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/UserViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/UserViewModel.kt index b0cee1b..b6bfba6 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/UserViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/UserViewModel.kt @@ -22,6 +22,7 @@ onFailed(header.second) } }, { + it.printStackTrace() onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt index 2cbf3dc..31950d0 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt @@ -1,111 +1,91 @@ package com.casic.br.operationsite.vm -import android.content.Context -import androidx.lifecycle.MutableLiveData -import com.casic.br.operationsite.extensions.getResponseCode -import com.casic.br.operationsite.extensions.getResponseMessage +import androidx.lifecycle.ViewModel +import com.casic.br.operationsite.extensions.getResponseHeader import com.casic.br.operationsite.model.WorkSiteDetailModel import com.casic.br.operationsite.model.WorkSiteDeviceModel import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.model.WorkSiteWorkerModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.base.BaseViewModel import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.extensions.unpackingResponse /** * 现场作业ViewModel * */ -class WorkSiteViewModel : BaseViewModel() { - - private val gson = Gson() - val worksiteLiveData = MutableLiveData() - val detailLiveData = MutableLiveData() - val workSiteDeviceLiveData = MutableLiveData() - val workSiteWorkerLiveData = MutableLiveData() - +class WorkSiteViewModel : ViewModel() { fun getProjectListByPage( - context: Context, keywords: String, state: String, page: Int + keywords: String, + state: String, + page: Int, + onLoading: () -> Unit, + onSuccess: (WorkSiteListModel) -> Unit, + onFailed: (String) -> Unit ) = launch({ - loadState.value = LoadState.Loading + onLoading() val response = RetrofitServiceManager.getProjectListByPage(keywords, state, page) - when (response.getResponseCode()) { - 200 -> { - loadState.value = LoadState.Success - worksiteLiveData.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } - - else -> { - loadState.value = LoadState.Fail - response.getResponseMessage().show(context) - } + val header = response.getResponseHeader() + if (header.first == 200) { + onSuccess(unpackingResponse(response)) + } else { + onFailed(header.second) } }, { - loadState.value = LoadState.Fail + it.printStackTrace() + onFailed(it.message ?: "Unknown error") + }) + + fun getProjectDetail( + onLoading: () -> Unit, + onSuccess: (WorkSiteDetailModel) -> Unit, + onFailed: (String) -> Unit + ) = launch({ + onLoading() + val response = RetrofitServiceManager.getProjectDetail() + val header = response.getResponseHeader() + if (header.first == 200) { + onSuccess(unpackingResponse(response)) + } else { + onFailed(header.second) + } + }, { + it.printStackTrace() + onFailed(it.message ?: "Unknown error") + }) + + fun getWorkSiteDevices( + onLoading: () -> Unit, + onSuccess: (WorkSiteDeviceModel) -> Unit, + onFailed: (String) -> Unit + ) = launch({ + onLoading() + val response = RetrofitServiceManager.getWorkSiteDevices() + val header = response.getResponseHeader() + if (header.first == 200) { + onSuccess(unpackingResponse(response)) + } else { + onFailed(header.second) + } + }, { + onFailed(it.message ?: "Unknown error") it.printStackTrace() }) - fun getProjectDetail(context: Context, projectId: String) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getProjectDetail(projectId) - when (response.getResponseCode()) { - 200 -> { - loadState.value = LoadState.Success - detailLiveData.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } - - else -> { - loadState.value = LoadState.Fail - response.getResponseMessage().show(context) - } - } - }, { - loadState.value = LoadState.Fail - it.printStackTrace() - }) - - fun getWorkSiteDevices(context: Context, projectId: String) = launch({ - val response = RetrofitServiceManager.getWorkSiteDevices(projectId) - when (response.getResponseCode()) { - 200 -> { - workSiteDeviceLiveData.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } - - else -> { - response.getResponseMessage().show(context) - } + fun getWorkSiteWorkers( + onLoading: () -> Unit, + onSuccess: (WorkSiteWorkerModel) -> Unit, + onFailed: (String) -> Unit + ) = launch({ + onLoading() + val response = RetrofitServiceManager.getWorkSiteWorkers() + val header = response.getResponseHeader() + if (header.first == 200) { + onSuccess(unpackingResponse(response)) + } else { + onFailed(header.second) } }, { it.printStackTrace() - }) - - fun getWorkSiteWorkers(context: Context, projectId: String) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getWorkSiteWorkers(projectId) - when (response.getResponseCode()) { - 200 -> { - loadState.value = LoadState.Success - workSiteWorkerLiveData.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } - - else -> { - loadState.value = LoadState.Fail - response.getResponseMessage().show(context) - } - } - }, { - loadState.value = LoadState.Fail - it.printStackTrace() + onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file