diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c582d6c..d2e068a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -51,6 +51,7 @@ + + () + } + changePwdLayout.setOnClickListener { ChangePasswordDialog.Builder() .setContext(requireContext()) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c582d6c..d2e068a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -51,6 +51,7 @@ + () + } + changePwdLayout.setOnClickListener { ChangePasswordDialog.Builder() .setContext(requireContext()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index 19aafdd..148c993 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -7,6 +7,7 @@ import com.casic.smart.town.sanxi.adapter.InfrastructureAdapter import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.util.ChartViewHelper +import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.AllWellActivity import com.casic.smart.town.sanxi.view.BFWellActivity import com.casic.smart.town.sanxi.view.CFWellActivity @@ -20,11 +21,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_statistics.* class StatisticsPageFragment : KotlinBaseFragment() { - private val kTag = "StatisticsPageFragment" private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel @@ -125,11 +127,10 @@ } }) - infrastructureViewModel.countInfrastructure() infrastructureViewModel.resultModel.observe(this, { if (it.code == 200) { - infrastructureRecyclerView.adapter = - InfrastructureAdapter(requireContext(), it.data) + infrastructureRv.adapter = InfrastructureAdapter(requireContext(), it.data) + SaveKeyValues.putValue(LocaleConstant.INFRASTRUCTURE, it.toJson()) } }) } @@ -146,19 +147,28 @@ allWellDataView.setOnClickListener { requireContext().navigatePageTo() } + + refreshImageView.setOnClickListener { + requestData() + } } override fun onResume() { super.onResume() - //每次页面切换都需要重新刷新不同状态的闸井数量 + //每次页面切换都需要重新刷新数据 + requestData() + } + + private fun requestData() { + infrastructureViewModel.countInfrastructure() + wellViewModel.countWellByState() pipeViewModel.getAlarmStatistics() + deviceViewModel.countDevice() val time = System.currentTimeMillis() pipeViewModel.getPipeHealthStatus( time.timestampToLastWeekDate()!!, time.timestampToCompleteDate(), "" ) - wellViewModel.countWellByState() - deviceViewModel.countDevice() } } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c582d6c..d2e068a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -51,6 +51,7 @@ + () + } + changePwdLayout.setOnClickListener { ChangePasswordDialog.Builder() .setContext(requireContext()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index 19aafdd..148c993 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -7,6 +7,7 @@ import com.casic.smart.town.sanxi.adapter.InfrastructureAdapter import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.util.ChartViewHelper +import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.AllWellActivity import com.casic.smart.town.sanxi.view.BFWellActivity import com.casic.smart.town.sanxi.view.CFWellActivity @@ -20,11 +21,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_statistics.* class StatisticsPageFragment : KotlinBaseFragment() { - private val kTag = "StatisticsPageFragment" private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel @@ -125,11 +127,10 @@ } }) - infrastructureViewModel.countInfrastructure() infrastructureViewModel.resultModel.observe(this, { if (it.code == 200) { - infrastructureRecyclerView.adapter = - InfrastructureAdapter(requireContext(), it.data) + infrastructureRv.adapter = InfrastructureAdapter(requireContext(), it.data) + SaveKeyValues.putValue(LocaleConstant.INFRASTRUCTURE, it.toJson()) } }) } @@ -146,19 +147,28 @@ allWellDataView.setOnClickListener { requireContext().navigatePageTo() } + + refreshImageView.setOnClickListener { + requestData() + } } override fun onResume() { super.onResume() - //每次页面切换都需要重新刷新不同状态的闸井数量 + //每次页面切换都需要重新刷新数据 + requestData() + } + + private fun requestData() { + infrastructureViewModel.countInfrastructure() + wellViewModel.countWellByState() pipeViewModel.getAlarmStatistics() + deviceViewModel.countDevice() val time = System.currentTimeMillis() pipeViewModel.getPipeHealthStatus( time.timestampToLastWeekDate()!!, time.timestampToCompleteDate(), "" ) - wellViewModel.countWellByState() - deviceViewModel.countDevice() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java index ad14ce6..0a71d55 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java +++ b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java @@ -44,6 +44,7 @@ public static class DataModel { private int facilitiesQuantity; private String facilitiesName; + private String id; public int getFacilitiesQuantity() { return facilitiesQuantity; @@ -60,5 +61,13 @@ public void setFacilitiesName(String facilitiesName) { this.facilitiesName = facilitiesName; } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c582d6c..d2e068a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -51,6 +51,7 @@ + () + } + changePwdLayout.setOnClickListener { ChangePasswordDialog.Builder() .setContext(requireContext()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index 19aafdd..148c993 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -7,6 +7,7 @@ import com.casic.smart.town.sanxi.adapter.InfrastructureAdapter import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.util.ChartViewHelper +import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.AllWellActivity import com.casic.smart.town.sanxi.view.BFWellActivity import com.casic.smart.town.sanxi.view.CFWellActivity @@ -20,11 +21,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_statistics.* class StatisticsPageFragment : KotlinBaseFragment() { - private val kTag = "StatisticsPageFragment" private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel @@ -125,11 +127,10 @@ } }) - infrastructureViewModel.countInfrastructure() infrastructureViewModel.resultModel.observe(this, { if (it.code == 200) { - infrastructureRecyclerView.adapter = - InfrastructureAdapter(requireContext(), it.data) + infrastructureRv.adapter = InfrastructureAdapter(requireContext(), it.data) + SaveKeyValues.putValue(LocaleConstant.INFRASTRUCTURE, it.toJson()) } }) } @@ -146,19 +147,28 @@ allWellDataView.setOnClickListener { requireContext().navigatePageTo() } + + refreshImageView.setOnClickListener { + requestData() + } } override fun onResume() { super.onResume() - //每次页面切换都需要重新刷新不同状态的闸井数量 + //每次页面切换都需要重新刷新数据 + requestData() + } + + private fun requestData() { + infrastructureViewModel.countInfrastructure() + wellViewModel.countWellByState() pipeViewModel.getAlarmStatistics() + deviceViewModel.countDevice() val time = System.currentTimeMillis() pipeViewModel.getPipeHealthStatus( time.timestampToLastWeekDate()!!, time.timestampToCompleteDate(), "" ) - wellViewModel.countWellByState() - deviceViewModel.countDevice() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java index ad14ce6..0a71d55 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java +++ b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java @@ -44,6 +44,7 @@ public static class DataModel { private int facilitiesQuantity; private String facilitiesName; + private String id; public int getFacilitiesQuantity() { return facilitiesQuantity; @@ -60,5 +61,13 @@ public void setFacilitiesName(String facilitiesName) { this.facilitiesName = facilitiesName; } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt index 183c85c..7e43a9c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt @@ -23,6 +23,7 @@ const val ACCOUNT = "account" const val PASSWORD = "password" const val USER_DETAIL_MODEL = "userDetailModel" + const val INFRASTRUCTURE = "infrastructure" val LAYER = arrayListOf( "http://111.198.10.15:13002/arcgis/rest/services/sxxz/MapServer/0", diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c582d6c..d2e068a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -51,6 +51,7 @@ + () + } + changePwdLayout.setOnClickListener { ChangePasswordDialog.Builder() .setContext(requireContext()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index 19aafdd..148c993 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -7,6 +7,7 @@ import com.casic.smart.town.sanxi.adapter.InfrastructureAdapter import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.util.ChartViewHelper +import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.AllWellActivity import com.casic.smart.town.sanxi.view.BFWellActivity import com.casic.smart.town.sanxi.view.CFWellActivity @@ -20,11 +21,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_statistics.* class StatisticsPageFragment : KotlinBaseFragment() { - private val kTag = "StatisticsPageFragment" private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel @@ -125,11 +127,10 @@ } }) - infrastructureViewModel.countInfrastructure() infrastructureViewModel.resultModel.observe(this, { if (it.code == 200) { - infrastructureRecyclerView.adapter = - InfrastructureAdapter(requireContext(), it.data) + infrastructureRv.adapter = InfrastructureAdapter(requireContext(), it.data) + SaveKeyValues.putValue(LocaleConstant.INFRASTRUCTURE, it.toJson()) } }) } @@ -146,19 +147,28 @@ allWellDataView.setOnClickListener { requireContext().navigatePageTo() } + + refreshImageView.setOnClickListener { + requestData() + } } override fun onResume() { super.onResume() - //每次页面切换都需要重新刷新不同状态的闸井数量 + //每次页面切换都需要重新刷新数据 + requestData() + } + + private fun requestData() { + infrastructureViewModel.countInfrastructure() + wellViewModel.countWellByState() pipeViewModel.getAlarmStatistics() + deviceViewModel.countDevice() val time = System.currentTimeMillis() pipeViewModel.getPipeHealthStatus( time.timestampToLastWeekDate()!!, time.timestampToCompleteDate(), "" ) - wellViewModel.countWellByState() - deviceViewModel.countDevice() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java index ad14ce6..0a71d55 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java +++ b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java @@ -44,6 +44,7 @@ public static class DataModel { private int facilitiesQuantity; private String facilitiesName; + private String id; public int getFacilitiesQuantity() { return facilitiesQuantity; @@ -60,5 +61,13 @@ public void setFacilitiesName(String facilitiesName) { this.facilitiesName = facilitiesName; } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt index 183c85c..7e43a9c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt @@ -23,6 +23,7 @@ const val ACCOUNT = "account" const val PASSWORD = "password" const val USER_DETAIL_MODEL = "userDetailModel" + const val INFRASTRUCTURE = "infrastructure" val LAYER = arrayListOf( "http://111.198.10.15:13002/arcgis/rest/services/sxxz/MapServer/0", diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt index b9b15b2..e079e75 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.util.retrofit +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -68,6 +69,12 @@ @GET("/statics/facilitiesStaticsByType") suspend fun countInfrastructure(@Header("token") token: String): String + @POST("/statics/facilities/update") + suspend fun updateInfrastructureData( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + /** * 根据设备类型统计设备数量 * */ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c582d6c..d2e068a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -51,6 +51,7 @@ + () + } + changePwdLayout.setOnClickListener { ChangePasswordDialog.Builder() .setContext(requireContext()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index 19aafdd..148c993 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -7,6 +7,7 @@ import com.casic.smart.town.sanxi.adapter.InfrastructureAdapter import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.util.ChartViewHelper +import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.AllWellActivity import com.casic.smart.town.sanxi.view.BFWellActivity import com.casic.smart.town.sanxi.view.CFWellActivity @@ -20,11 +21,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_statistics.* class StatisticsPageFragment : KotlinBaseFragment() { - private val kTag = "StatisticsPageFragment" private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel @@ -125,11 +127,10 @@ } }) - infrastructureViewModel.countInfrastructure() infrastructureViewModel.resultModel.observe(this, { if (it.code == 200) { - infrastructureRecyclerView.adapter = - InfrastructureAdapter(requireContext(), it.data) + infrastructureRv.adapter = InfrastructureAdapter(requireContext(), it.data) + SaveKeyValues.putValue(LocaleConstant.INFRASTRUCTURE, it.toJson()) } }) } @@ -146,19 +147,28 @@ allWellDataView.setOnClickListener { requireContext().navigatePageTo() } + + refreshImageView.setOnClickListener { + requestData() + } } override fun onResume() { super.onResume() - //每次页面切换都需要重新刷新不同状态的闸井数量 + //每次页面切换都需要重新刷新数据 + requestData() + } + + private fun requestData() { + infrastructureViewModel.countInfrastructure() + wellViewModel.countWellByState() pipeViewModel.getAlarmStatistics() + deviceViewModel.countDevice() val time = System.currentTimeMillis() pipeViewModel.getPipeHealthStatus( time.timestampToLastWeekDate()!!, time.timestampToCompleteDate(), "" ) - wellViewModel.countWellByState() - deviceViewModel.countDevice() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java index ad14ce6..0a71d55 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java +++ b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java @@ -44,6 +44,7 @@ public static class DataModel { private int facilitiesQuantity; private String facilitiesName; + private String id; public int getFacilitiesQuantity() { return facilitiesQuantity; @@ -60,5 +61,13 @@ public void setFacilitiesName(String facilitiesName) { this.facilitiesName = facilitiesName; } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt index 183c85c..7e43a9c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt @@ -23,6 +23,7 @@ const val ACCOUNT = "account" const val PASSWORD = "password" const val USER_DETAIL_MODEL = "userDetailModel" + const val INFRASTRUCTURE = "infrastructure" val LAYER = arrayListOf( "http://111.198.10.15:13002/arcgis/rest/services/sxxz/MapServer/0", diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt index b9b15b2..e079e75 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.util.retrofit +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -68,6 +69,12 @@ @GET("/statics/facilitiesStaticsByType") suspend fun countInfrastructure(@Header("token") token: String): String + @POST("/statics/facilities/update") + suspend fun updateInfrastructureData( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + /** * 根据设备类型统计设备数量 * */ diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt index 09e390d..6f1fe87 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt @@ -4,6 +4,9 @@ import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType +import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONObject object RetrofitServiceManager { @@ -76,6 +79,23 @@ return smartTownApi.countInfrastructure(AuthenticationHelper.token!!) } + suspend fun updateInfrastructureData( + id: String, + facilitiesCode: String, + facilitiesName: String, + facilitiesQuantity: String + ): String { + val paramObject = JSONObject() + paramObject.put("id", id) + paramObject.put("facilitiesCode", facilitiesCode) + paramObject.put("facilitiesName", facilitiesName) + paramObject.put("facilitiesQuantity", facilitiesQuantity) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return smartTownApi.updateInfrastructureData(AuthenticationHelper.token!!, requestBody) + } + suspend fun countDevice(): String { return smartTownApi.countDevice(AuthenticationHelper.token!!) } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c582d6c..d2e068a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -51,6 +51,7 @@ + () + } + changePwdLayout.setOnClickListener { ChangePasswordDialog.Builder() .setContext(requireContext()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index 19aafdd..148c993 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -7,6 +7,7 @@ import com.casic.smart.town.sanxi.adapter.InfrastructureAdapter import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.util.ChartViewHelper +import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.AllWellActivity import com.casic.smart.town.sanxi.view.BFWellActivity import com.casic.smart.town.sanxi.view.CFWellActivity @@ -20,11 +21,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_statistics.* class StatisticsPageFragment : KotlinBaseFragment() { - private val kTag = "StatisticsPageFragment" private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel @@ -125,11 +127,10 @@ } }) - infrastructureViewModel.countInfrastructure() infrastructureViewModel.resultModel.observe(this, { if (it.code == 200) { - infrastructureRecyclerView.adapter = - InfrastructureAdapter(requireContext(), it.data) + infrastructureRv.adapter = InfrastructureAdapter(requireContext(), it.data) + SaveKeyValues.putValue(LocaleConstant.INFRASTRUCTURE, it.toJson()) } }) } @@ -146,19 +147,28 @@ allWellDataView.setOnClickListener { requireContext().navigatePageTo() } + + refreshImageView.setOnClickListener { + requestData() + } } override fun onResume() { super.onResume() - //每次页面切换都需要重新刷新不同状态的闸井数量 + //每次页面切换都需要重新刷新数据 + requestData() + } + + private fun requestData() { + infrastructureViewModel.countInfrastructure() + wellViewModel.countWellByState() pipeViewModel.getAlarmStatistics() + deviceViewModel.countDevice() val time = System.currentTimeMillis() pipeViewModel.getPipeHealthStatus( time.timestampToLastWeekDate()!!, time.timestampToCompleteDate(), "" ) - wellViewModel.countWellByState() - deviceViewModel.countDevice() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java index ad14ce6..0a71d55 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java +++ b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java @@ -44,6 +44,7 @@ public static class DataModel { private int facilitiesQuantity; private String facilitiesName; + private String id; public int getFacilitiesQuantity() { return facilitiesQuantity; @@ -60,5 +61,13 @@ public void setFacilitiesName(String facilitiesName) { this.facilitiesName = facilitiesName; } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt index 183c85c..7e43a9c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt @@ -23,6 +23,7 @@ const val ACCOUNT = "account" const val PASSWORD = "password" const val USER_DETAIL_MODEL = "userDetailModel" + const val INFRASTRUCTURE = "infrastructure" val LAYER = arrayListOf( "http://111.198.10.15:13002/arcgis/rest/services/sxxz/MapServer/0", diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt index b9b15b2..e079e75 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.util.retrofit +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -68,6 +69,12 @@ @GET("/statics/facilitiesStaticsByType") suspend fun countInfrastructure(@Header("token") token: String): String + @POST("/statics/facilities/update") + suspend fun updateInfrastructureData( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + /** * 根据设备类型统计设备数量 * */ diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt index 09e390d..6f1fe87 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt @@ -4,6 +4,9 @@ import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType +import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONObject object RetrofitServiceManager { @@ -76,6 +79,23 @@ return smartTownApi.countInfrastructure(AuthenticationHelper.token!!) } + suspend fun updateInfrastructureData( + id: String, + facilitiesCode: String, + facilitiesName: String, + facilitiesQuantity: String + ): String { + val paramObject = JSONObject() + paramObject.put("id", id) + paramObject.put("facilitiesCode", facilitiesCode) + paramObject.put("facilitiesName", facilitiesName) + paramObject.put("facilitiesQuantity", facilitiesQuantity) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return smartTownApi.updateInfrastructureData(AuthenticationHelper.token!!, requestBody) + } + suspend fun countDevice(): String { return smartTownApi.countDevice(AuthenticationHelper.token!!) } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt new file mode 100644 index 0000000..cfeef98 --- /dev/null +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -0,0 +1,99 @@ +package com.casic.smart.town.sanxi.view + +import android.graphics.Color +import androidx.lifecycle.ViewModelProvider +import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.model.InfrastructureModel +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.vm.InfrastructureViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.SaveKeyValues +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet +import kotlinx.android.synthetic.main.activity_update_data.* +import kotlinx.android.synthetic.main.include_base_title.* + +class UpdateDataActivity : KotlinBaseActivity() { + + private val gson by lazy { Gson() } + private var dataBeans: MutableList = ArrayList() + private var dataTitles: MutableList = ArrayList() + private lateinit var facilitiesId: String + private lateinit var infrastructureViewModel: InfrastructureViewModel + + override fun initLayoutView(): Int = R.layout.activity_update_data + + override fun observeRequestState() { + infrastructureViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + LoadState.Success -> { + "基础设施数据更新成功".show(this) + LoadingDialogHub.dismiss() + this.finish() + } + LoadState.Fail -> LoadingDialogHub.dismiss() + } + }) + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "更新基础设施数据" + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] + + val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String + val infrastructureModel = gson.fromJson( + s, object : TypeToken() {}.type + ) + infrastructureModel.data.forEach { + dataBeans.add(it) + dataTitles.add(it.facilitiesName) + } + } + + override fun initEvent() { + facilitiesNameView.setOnClickListener { + if (dataTitles.isNotEmpty()) { + BottomActionSheet.Builder() + .setContext(this) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(dataTitles) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + facilitiesId = dataBeans[position].id + facilitiesNameView.text = dataTitles[position] + } + }).build().show() + } + } + + submitButton.setOnClickListener { + val facilitiesName = facilitiesNameView.text.toString().trim() + if (facilitiesName.isBlank()) { + "请先选择设施名称".show(this) + return@setOnClickListener + } + val facilitiesCount = facilitiesCountView.text.toString().trim() + if (facilitiesCount.isBlank()) { + "请输入设施数量".show(this) + return@setOnClickListener + } + infrastructureViewModel.updateInfrastructureData( + facilitiesId, "", facilitiesName, facilitiesCount + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c582d6c..d2e068a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -51,6 +51,7 @@ + () + } + changePwdLayout.setOnClickListener { ChangePasswordDialog.Builder() .setContext(requireContext()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index 19aafdd..148c993 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -7,6 +7,7 @@ import com.casic.smart.town.sanxi.adapter.InfrastructureAdapter import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.util.ChartViewHelper +import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.AllWellActivity import com.casic.smart.town.sanxi.view.BFWellActivity import com.casic.smart.town.sanxi.view.CFWellActivity @@ -20,11 +21,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_statistics.* class StatisticsPageFragment : KotlinBaseFragment() { - private val kTag = "StatisticsPageFragment" private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel @@ -125,11 +127,10 @@ } }) - infrastructureViewModel.countInfrastructure() infrastructureViewModel.resultModel.observe(this, { if (it.code == 200) { - infrastructureRecyclerView.adapter = - InfrastructureAdapter(requireContext(), it.data) + infrastructureRv.adapter = InfrastructureAdapter(requireContext(), it.data) + SaveKeyValues.putValue(LocaleConstant.INFRASTRUCTURE, it.toJson()) } }) } @@ -146,19 +147,28 @@ allWellDataView.setOnClickListener { requireContext().navigatePageTo() } + + refreshImageView.setOnClickListener { + requestData() + } } override fun onResume() { super.onResume() - //每次页面切换都需要重新刷新不同状态的闸井数量 + //每次页面切换都需要重新刷新数据 + requestData() + } + + private fun requestData() { + infrastructureViewModel.countInfrastructure() + wellViewModel.countWellByState() pipeViewModel.getAlarmStatistics() + deviceViewModel.countDevice() val time = System.currentTimeMillis() pipeViewModel.getPipeHealthStatus( time.timestampToLastWeekDate()!!, time.timestampToCompleteDate(), "" ) - wellViewModel.countWellByState() - deviceViewModel.countDevice() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java index ad14ce6..0a71d55 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java +++ b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java @@ -44,6 +44,7 @@ public static class DataModel { private int facilitiesQuantity; private String facilitiesName; + private String id; public int getFacilitiesQuantity() { return facilitiesQuantity; @@ -60,5 +61,13 @@ public void setFacilitiesName(String facilitiesName) { this.facilitiesName = facilitiesName; } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt index 183c85c..7e43a9c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt @@ -23,6 +23,7 @@ const val ACCOUNT = "account" const val PASSWORD = "password" const val USER_DETAIL_MODEL = "userDetailModel" + const val INFRASTRUCTURE = "infrastructure" val LAYER = arrayListOf( "http://111.198.10.15:13002/arcgis/rest/services/sxxz/MapServer/0", diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt index b9b15b2..e079e75 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.util.retrofit +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -68,6 +69,12 @@ @GET("/statics/facilitiesStaticsByType") suspend fun countInfrastructure(@Header("token") token: String): String + @POST("/statics/facilities/update") + suspend fun updateInfrastructureData( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + /** * 根据设备类型统计设备数量 * */ diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt index 09e390d..6f1fe87 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt @@ -4,6 +4,9 @@ import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType +import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONObject object RetrofitServiceManager { @@ -76,6 +79,23 @@ return smartTownApi.countInfrastructure(AuthenticationHelper.token!!) } + suspend fun updateInfrastructureData( + id: String, + facilitiesCode: String, + facilitiesName: String, + facilitiesQuantity: String + ): String { + val paramObject = JSONObject() + paramObject.put("id", id) + paramObject.put("facilitiesCode", facilitiesCode) + paramObject.put("facilitiesName", facilitiesName) + paramObject.put("facilitiesQuantity", facilitiesQuantity) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return smartTownApi.updateInfrastructureData(AuthenticationHelper.token!!, requestBody) + } + suspend fun countDevice(): String { return smartTownApi.countDevice(AuthenticationHelper.token!!) } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt new file mode 100644 index 0000000..cfeef98 --- /dev/null +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -0,0 +1,99 @@ +package com.casic.smart.town.sanxi.view + +import android.graphics.Color +import androidx.lifecycle.ViewModelProvider +import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.model.InfrastructureModel +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.vm.InfrastructureViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.SaveKeyValues +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet +import kotlinx.android.synthetic.main.activity_update_data.* +import kotlinx.android.synthetic.main.include_base_title.* + +class UpdateDataActivity : KotlinBaseActivity() { + + private val gson by lazy { Gson() } + private var dataBeans: MutableList = ArrayList() + private var dataTitles: MutableList = ArrayList() + private lateinit var facilitiesId: String + private lateinit var infrastructureViewModel: InfrastructureViewModel + + override fun initLayoutView(): Int = R.layout.activity_update_data + + override fun observeRequestState() { + infrastructureViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + LoadState.Success -> { + "基础设施数据更新成功".show(this) + LoadingDialogHub.dismiss() + this.finish() + } + LoadState.Fail -> LoadingDialogHub.dismiss() + } + }) + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "更新基础设施数据" + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] + + val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String + val infrastructureModel = gson.fromJson( + s, object : TypeToken() {}.type + ) + infrastructureModel.data.forEach { + dataBeans.add(it) + dataTitles.add(it.facilitiesName) + } + } + + override fun initEvent() { + facilitiesNameView.setOnClickListener { + if (dataTitles.isNotEmpty()) { + BottomActionSheet.Builder() + .setContext(this) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(dataTitles) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + facilitiesId = dataBeans[position].id + facilitiesNameView.text = dataTitles[position] + } + }).build().show() + } + } + + submitButton.setOnClickListener { + val facilitiesName = facilitiesNameView.text.toString().trim() + if (facilitiesName.isBlank()) { + "请先选择设施名称".show(this) + return@setOnClickListener + } + val facilitiesCount = facilitiesCountView.text.toString().trim() + if (facilitiesCount.isBlank()) { + "请输入设施数量".show(this) + return@setOnClickListener + } + infrastructureViewModel.updateInfrastructureData( + facilitiesId, "", facilitiesName, facilitiesCount + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/vm/InfrastructureViewModel.kt b/app/src/main/java/com/casic/smart/town/sanxi/vm/InfrastructureViewModel.kt index 0f72b29..140c0a3 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/vm/InfrastructureViewModel.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/vm/InfrastructureViewModel.kt @@ -11,6 +11,7 @@ import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState class InfrastructureViewModel : BaseViewModel() { @@ -30,4 +31,26 @@ }, { it.printStackTrace() }) + + fun updateInfrastructureData( + id: String, + facilitiesCode: String, + facilitiesName: String, + facilitiesQuantity: String + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.updateInfrastructureData( + id, facilitiesCode, facilitiesName, facilitiesQuantity + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + loadState.value = LoadState.Fail + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c582d6c..d2e068a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -51,6 +51,7 @@ + () + } + changePwdLayout.setOnClickListener { ChangePasswordDialog.Builder() .setContext(requireContext()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index 19aafdd..148c993 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -7,6 +7,7 @@ import com.casic.smart.town.sanxi.adapter.InfrastructureAdapter import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.util.ChartViewHelper +import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.AllWellActivity import com.casic.smart.town.sanxi.view.BFWellActivity import com.casic.smart.town.sanxi.view.CFWellActivity @@ -20,11 +21,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_statistics.* class StatisticsPageFragment : KotlinBaseFragment() { - private val kTag = "StatisticsPageFragment" private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel @@ -125,11 +127,10 @@ } }) - infrastructureViewModel.countInfrastructure() infrastructureViewModel.resultModel.observe(this, { if (it.code == 200) { - infrastructureRecyclerView.adapter = - InfrastructureAdapter(requireContext(), it.data) + infrastructureRv.adapter = InfrastructureAdapter(requireContext(), it.data) + SaveKeyValues.putValue(LocaleConstant.INFRASTRUCTURE, it.toJson()) } }) } @@ -146,19 +147,28 @@ allWellDataView.setOnClickListener { requireContext().navigatePageTo() } + + refreshImageView.setOnClickListener { + requestData() + } } override fun onResume() { super.onResume() - //每次页面切换都需要重新刷新不同状态的闸井数量 + //每次页面切换都需要重新刷新数据 + requestData() + } + + private fun requestData() { + infrastructureViewModel.countInfrastructure() + wellViewModel.countWellByState() pipeViewModel.getAlarmStatistics() + deviceViewModel.countDevice() val time = System.currentTimeMillis() pipeViewModel.getPipeHealthStatus( time.timestampToLastWeekDate()!!, time.timestampToCompleteDate(), "" ) - wellViewModel.countWellByState() - deviceViewModel.countDevice() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java index ad14ce6..0a71d55 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java +++ b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java @@ -44,6 +44,7 @@ public static class DataModel { private int facilitiesQuantity; private String facilitiesName; + private String id; public int getFacilitiesQuantity() { return facilitiesQuantity; @@ -60,5 +61,13 @@ public void setFacilitiesName(String facilitiesName) { this.facilitiesName = facilitiesName; } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt index 183c85c..7e43a9c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt @@ -23,6 +23,7 @@ const val ACCOUNT = "account" const val PASSWORD = "password" const val USER_DETAIL_MODEL = "userDetailModel" + const val INFRASTRUCTURE = "infrastructure" val LAYER = arrayListOf( "http://111.198.10.15:13002/arcgis/rest/services/sxxz/MapServer/0", diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt index b9b15b2..e079e75 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.util.retrofit +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -68,6 +69,12 @@ @GET("/statics/facilitiesStaticsByType") suspend fun countInfrastructure(@Header("token") token: String): String + @POST("/statics/facilities/update") + suspend fun updateInfrastructureData( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + /** * 根据设备类型统计设备数量 * */ diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt index 09e390d..6f1fe87 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt @@ -4,6 +4,9 @@ import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType +import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONObject object RetrofitServiceManager { @@ -76,6 +79,23 @@ return smartTownApi.countInfrastructure(AuthenticationHelper.token!!) } + suspend fun updateInfrastructureData( + id: String, + facilitiesCode: String, + facilitiesName: String, + facilitiesQuantity: String + ): String { + val paramObject = JSONObject() + paramObject.put("id", id) + paramObject.put("facilitiesCode", facilitiesCode) + paramObject.put("facilitiesName", facilitiesName) + paramObject.put("facilitiesQuantity", facilitiesQuantity) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return smartTownApi.updateInfrastructureData(AuthenticationHelper.token!!, requestBody) + } + suspend fun countDevice(): String { return smartTownApi.countDevice(AuthenticationHelper.token!!) } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt new file mode 100644 index 0000000..cfeef98 --- /dev/null +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -0,0 +1,99 @@ +package com.casic.smart.town.sanxi.view + +import android.graphics.Color +import androidx.lifecycle.ViewModelProvider +import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.model.InfrastructureModel +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.vm.InfrastructureViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.SaveKeyValues +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet +import kotlinx.android.synthetic.main.activity_update_data.* +import kotlinx.android.synthetic.main.include_base_title.* + +class UpdateDataActivity : KotlinBaseActivity() { + + private val gson by lazy { Gson() } + private var dataBeans: MutableList = ArrayList() + private var dataTitles: MutableList = ArrayList() + private lateinit var facilitiesId: String + private lateinit var infrastructureViewModel: InfrastructureViewModel + + override fun initLayoutView(): Int = R.layout.activity_update_data + + override fun observeRequestState() { + infrastructureViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + LoadState.Success -> { + "基础设施数据更新成功".show(this) + LoadingDialogHub.dismiss() + this.finish() + } + LoadState.Fail -> LoadingDialogHub.dismiss() + } + }) + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "更新基础设施数据" + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] + + val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String + val infrastructureModel = gson.fromJson( + s, object : TypeToken() {}.type + ) + infrastructureModel.data.forEach { + dataBeans.add(it) + dataTitles.add(it.facilitiesName) + } + } + + override fun initEvent() { + facilitiesNameView.setOnClickListener { + if (dataTitles.isNotEmpty()) { + BottomActionSheet.Builder() + .setContext(this) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(dataTitles) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + facilitiesId = dataBeans[position].id + facilitiesNameView.text = dataTitles[position] + } + }).build().show() + } + } + + submitButton.setOnClickListener { + val facilitiesName = facilitiesNameView.text.toString().trim() + if (facilitiesName.isBlank()) { + "请先选择设施名称".show(this) + return@setOnClickListener + } + val facilitiesCount = facilitiesCountView.text.toString().trim() + if (facilitiesCount.isBlank()) { + "请输入设施数量".show(this) + return@setOnClickListener + } + infrastructureViewModel.updateInfrastructureData( + facilitiesId, "", facilitiesName, facilitiesCount + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/vm/InfrastructureViewModel.kt b/app/src/main/java/com/casic/smart/town/sanxi/vm/InfrastructureViewModel.kt index 0f72b29..140c0a3 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/vm/InfrastructureViewModel.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/vm/InfrastructureViewModel.kt @@ -11,6 +11,7 @@ import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState class InfrastructureViewModel : BaseViewModel() { @@ -30,4 +31,26 @@ }, { it.printStackTrace() }) + + fun updateInfrastructureData( + id: String, + facilitiesCode: String, + facilitiesName: String, + facilitiesQuantity: String + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.updateInfrastructureData( + id, facilitiesCode, facilitiesName, facilitiesQuantity + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + loadState.value = LoadState.Fail + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_refresh.xml b/app/src/main/res/drawable/ic_refresh.xml new file mode 100644 index 0000000..031764c --- /dev/null +++ b/app/src/main/res/drawable/ic_refresh.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c582d6c..d2e068a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -51,6 +51,7 @@ + () + } + changePwdLayout.setOnClickListener { ChangePasswordDialog.Builder() .setContext(requireContext()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index 19aafdd..148c993 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -7,6 +7,7 @@ import com.casic.smart.town.sanxi.adapter.InfrastructureAdapter import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.util.ChartViewHelper +import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.AllWellActivity import com.casic.smart.town.sanxi.view.BFWellActivity import com.casic.smart.town.sanxi.view.CFWellActivity @@ -20,11 +21,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_statistics.* class StatisticsPageFragment : KotlinBaseFragment() { - private val kTag = "StatisticsPageFragment" private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel @@ -125,11 +127,10 @@ } }) - infrastructureViewModel.countInfrastructure() infrastructureViewModel.resultModel.observe(this, { if (it.code == 200) { - infrastructureRecyclerView.adapter = - InfrastructureAdapter(requireContext(), it.data) + infrastructureRv.adapter = InfrastructureAdapter(requireContext(), it.data) + SaveKeyValues.putValue(LocaleConstant.INFRASTRUCTURE, it.toJson()) } }) } @@ -146,19 +147,28 @@ allWellDataView.setOnClickListener { requireContext().navigatePageTo() } + + refreshImageView.setOnClickListener { + requestData() + } } override fun onResume() { super.onResume() - //每次页面切换都需要重新刷新不同状态的闸井数量 + //每次页面切换都需要重新刷新数据 + requestData() + } + + private fun requestData() { + infrastructureViewModel.countInfrastructure() + wellViewModel.countWellByState() pipeViewModel.getAlarmStatistics() + deviceViewModel.countDevice() val time = System.currentTimeMillis() pipeViewModel.getPipeHealthStatus( time.timestampToLastWeekDate()!!, time.timestampToCompleteDate(), "" ) - wellViewModel.countWellByState() - deviceViewModel.countDevice() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java index ad14ce6..0a71d55 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java +++ b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java @@ -44,6 +44,7 @@ public static class DataModel { private int facilitiesQuantity; private String facilitiesName; + private String id; public int getFacilitiesQuantity() { return facilitiesQuantity; @@ -60,5 +61,13 @@ public void setFacilitiesName(String facilitiesName) { this.facilitiesName = facilitiesName; } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt index 183c85c..7e43a9c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt @@ -23,6 +23,7 @@ const val ACCOUNT = "account" const val PASSWORD = "password" const val USER_DETAIL_MODEL = "userDetailModel" + const val INFRASTRUCTURE = "infrastructure" val LAYER = arrayListOf( "http://111.198.10.15:13002/arcgis/rest/services/sxxz/MapServer/0", diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt index b9b15b2..e079e75 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.util.retrofit +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -68,6 +69,12 @@ @GET("/statics/facilitiesStaticsByType") suspend fun countInfrastructure(@Header("token") token: String): String + @POST("/statics/facilities/update") + suspend fun updateInfrastructureData( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + /** * 根据设备类型统计设备数量 * */ diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt index 09e390d..6f1fe87 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt @@ -4,6 +4,9 @@ import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType +import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONObject object RetrofitServiceManager { @@ -76,6 +79,23 @@ return smartTownApi.countInfrastructure(AuthenticationHelper.token!!) } + suspend fun updateInfrastructureData( + id: String, + facilitiesCode: String, + facilitiesName: String, + facilitiesQuantity: String + ): String { + val paramObject = JSONObject() + paramObject.put("id", id) + paramObject.put("facilitiesCode", facilitiesCode) + paramObject.put("facilitiesName", facilitiesName) + paramObject.put("facilitiesQuantity", facilitiesQuantity) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return smartTownApi.updateInfrastructureData(AuthenticationHelper.token!!, requestBody) + } + suspend fun countDevice(): String { return smartTownApi.countDevice(AuthenticationHelper.token!!) } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt new file mode 100644 index 0000000..cfeef98 --- /dev/null +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -0,0 +1,99 @@ +package com.casic.smart.town.sanxi.view + +import android.graphics.Color +import androidx.lifecycle.ViewModelProvider +import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.model.InfrastructureModel +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.vm.InfrastructureViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.SaveKeyValues +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet +import kotlinx.android.synthetic.main.activity_update_data.* +import kotlinx.android.synthetic.main.include_base_title.* + +class UpdateDataActivity : KotlinBaseActivity() { + + private val gson by lazy { Gson() } + private var dataBeans: MutableList = ArrayList() + private var dataTitles: MutableList = ArrayList() + private lateinit var facilitiesId: String + private lateinit var infrastructureViewModel: InfrastructureViewModel + + override fun initLayoutView(): Int = R.layout.activity_update_data + + override fun observeRequestState() { + infrastructureViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + LoadState.Success -> { + "基础设施数据更新成功".show(this) + LoadingDialogHub.dismiss() + this.finish() + } + LoadState.Fail -> LoadingDialogHub.dismiss() + } + }) + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "更新基础设施数据" + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] + + val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String + val infrastructureModel = gson.fromJson( + s, object : TypeToken() {}.type + ) + infrastructureModel.data.forEach { + dataBeans.add(it) + dataTitles.add(it.facilitiesName) + } + } + + override fun initEvent() { + facilitiesNameView.setOnClickListener { + if (dataTitles.isNotEmpty()) { + BottomActionSheet.Builder() + .setContext(this) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(dataTitles) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + facilitiesId = dataBeans[position].id + facilitiesNameView.text = dataTitles[position] + } + }).build().show() + } + } + + submitButton.setOnClickListener { + val facilitiesName = facilitiesNameView.text.toString().trim() + if (facilitiesName.isBlank()) { + "请先选择设施名称".show(this) + return@setOnClickListener + } + val facilitiesCount = facilitiesCountView.text.toString().trim() + if (facilitiesCount.isBlank()) { + "请输入设施数量".show(this) + return@setOnClickListener + } + infrastructureViewModel.updateInfrastructureData( + facilitiesId, "", facilitiesName, facilitiesCount + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/vm/InfrastructureViewModel.kt b/app/src/main/java/com/casic/smart/town/sanxi/vm/InfrastructureViewModel.kt index 0f72b29..140c0a3 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/vm/InfrastructureViewModel.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/vm/InfrastructureViewModel.kt @@ -11,6 +11,7 @@ import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState class InfrastructureViewModel : BaseViewModel() { @@ -30,4 +31,26 @@ }, { it.printStackTrace() }) + + fun updateInfrastructureData( + id: String, + facilitiesCode: String, + facilitiesName: String, + facilitiesQuantity: String + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.updateInfrastructureData( + id, facilitiesCode, facilitiesName, facilitiesQuantity + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + loadState.value = LoadState.Fail + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_refresh.xml b/app/src/main/res/drawable/ic_refresh.xml new file mode 100644 index 0000000..031764c --- /dev/null +++ b/app/src/main/res/drawable/ic_refresh.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_update_data.xml b/app/src/main/res/drawable/ic_update_data.xml new file mode 100644 index 0000000..49d3c58 --- /dev/null +++ b/app/src/main/res/drawable/ic_update_data.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c582d6c..d2e068a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -51,6 +51,7 @@ + () + } + changePwdLayout.setOnClickListener { ChangePasswordDialog.Builder() .setContext(requireContext()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index 19aafdd..148c993 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -7,6 +7,7 @@ import com.casic.smart.town.sanxi.adapter.InfrastructureAdapter import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.util.ChartViewHelper +import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.AllWellActivity import com.casic.smart.town.sanxi.view.BFWellActivity import com.casic.smart.town.sanxi.view.CFWellActivity @@ -20,11 +21,12 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_statistics.* class StatisticsPageFragment : KotlinBaseFragment() { - private val kTag = "StatisticsPageFragment" private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel @@ -125,11 +127,10 @@ } }) - infrastructureViewModel.countInfrastructure() infrastructureViewModel.resultModel.observe(this, { if (it.code == 200) { - infrastructureRecyclerView.adapter = - InfrastructureAdapter(requireContext(), it.data) + infrastructureRv.adapter = InfrastructureAdapter(requireContext(), it.data) + SaveKeyValues.putValue(LocaleConstant.INFRASTRUCTURE, it.toJson()) } }) } @@ -146,19 +147,28 @@ allWellDataView.setOnClickListener { requireContext().navigatePageTo() } + + refreshImageView.setOnClickListener { + requestData() + } } override fun onResume() { super.onResume() - //每次页面切换都需要重新刷新不同状态的闸井数量 + //每次页面切换都需要重新刷新数据 + requestData() + } + + private fun requestData() { + infrastructureViewModel.countInfrastructure() + wellViewModel.countWellByState() pipeViewModel.getAlarmStatistics() + deviceViewModel.countDevice() val time = System.currentTimeMillis() pipeViewModel.getPipeHealthStatus( time.timestampToLastWeekDate()!!, time.timestampToCompleteDate(), "" ) - wellViewModel.countWellByState() - deviceViewModel.countDevice() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java index ad14ce6..0a71d55 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java +++ b/app/src/main/java/com/casic/smart/town/sanxi/model/InfrastructureModel.java @@ -44,6 +44,7 @@ public static class DataModel { private int facilitiesQuantity; private String facilitiesName; + private String id; public int getFacilitiesQuantity() { return facilitiesQuantity; @@ -60,5 +61,13 @@ public void setFacilitiesName(String facilitiesName) { this.facilitiesName = facilitiesName; } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt index 183c85c..7e43a9c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/LocaleConstant.kt @@ -23,6 +23,7 @@ const val ACCOUNT = "account" const val PASSWORD = "password" const val USER_DETAIL_MODEL = "userDetailModel" + const val INFRASTRUCTURE = "infrastructure" val LAYER = arrayListOf( "http://111.198.10.15:13002/arcgis/rest/services/sxxz/MapServer/0", diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt index b9b15b2..e079e75 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitService.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.util.retrofit +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -68,6 +69,12 @@ @GET("/statics/facilitiesStaticsByType") suspend fun countInfrastructure(@Header("token") token: String): String + @POST("/statics/facilities/update") + suspend fun updateInfrastructureData( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + /** * 根据设备类型统计设备数量 * */ diff --git a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt index 09e390d..6f1fe87 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/util/retrofit/RetrofitServiceManager.kt @@ -4,6 +4,9 @@ import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType +import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONObject object RetrofitServiceManager { @@ -76,6 +79,23 @@ return smartTownApi.countInfrastructure(AuthenticationHelper.token!!) } + suspend fun updateInfrastructureData( + id: String, + facilitiesCode: String, + facilitiesName: String, + facilitiesQuantity: String + ): String { + val paramObject = JSONObject() + paramObject.put("id", id) + paramObject.put("facilitiesCode", facilitiesCode) + paramObject.put("facilitiesName", facilitiesName) + paramObject.put("facilitiesQuantity", facilitiesQuantity) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return smartTownApi.updateInfrastructureData(AuthenticationHelper.token!!, requestBody) + } + suspend fun countDevice(): String { return smartTownApi.countDevice(AuthenticationHelper.token!!) } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt new file mode 100644 index 0000000..cfeef98 --- /dev/null +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -0,0 +1,99 @@ +package com.casic.smart.town.sanxi.view + +import android.graphics.Color +import androidx.lifecycle.ViewModelProvider +import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.model.InfrastructureModel +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.vm.InfrastructureViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.SaveKeyValues +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet +import kotlinx.android.synthetic.main.activity_update_data.* +import kotlinx.android.synthetic.main.include_base_title.* + +class UpdateDataActivity : KotlinBaseActivity() { + + private val gson by lazy { Gson() } + private var dataBeans: MutableList = ArrayList() + private var dataTitles: MutableList = ArrayList() + private lateinit var facilitiesId: String + private lateinit var infrastructureViewModel: InfrastructureViewModel + + override fun initLayoutView(): Int = R.layout.activity_update_data + + override fun observeRequestState() { + infrastructureViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + LoadState.Success -> { + "基础设施数据更新成功".show(this) + LoadingDialogHub.dismiss() + this.finish() + } + LoadState.Fail -> LoadingDialogHub.dismiss() + } + }) + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "更新基础设施数据" + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] + + val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String + val infrastructureModel = gson.fromJson( + s, object : TypeToken() {}.type + ) + infrastructureModel.data.forEach { + dataBeans.add(it) + dataTitles.add(it.facilitiesName) + } + } + + override fun initEvent() { + facilitiesNameView.setOnClickListener { + if (dataTitles.isNotEmpty()) { + BottomActionSheet.Builder() + .setContext(this) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(dataTitles) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + facilitiesId = dataBeans[position].id + facilitiesNameView.text = dataTitles[position] + } + }).build().show() + } + } + + submitButton.setOnClickListener { + val facilitiesName = facilitiesNameView.text.toString().trim() + if (facilitiesName.isBlank()) { + "请先选择设施名称".show(this) + return@setOnClickListener + } + val facilitiesCount = facilitiesCountView.text.toString().trim() + if (facilitiesCount.isBlank()) { + "请输入设施数量".show(this) + return@setOnClickListener + } + infrastructureViewModel.updateInfrastructureData( + facilitiesId, "", facilitiesName, facilitiesCount + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/vm/InfrastructureViewModel.kt b/app/src/main/java/com/casic/smart/town/sanxi/vm/InfrastructureViewModel.kt index 0f72b29..140c0a3 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/vm/InfrastructureViewModel.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/vm/InfrastructureViewModel.kt @@ -11,6 +11,7 @@ import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState class InfrastructureViewModel : BaseViewModel() { @@ -30,4 +31,26 @@ }, { it.printStackTrace() }) + + fun updateInfrastructureData( + id: String, + facilitiesCode: String, + facilitiesName: String, + facilitiesQuantity: String + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.updateInfrastructureData( + id, facilitiesCode, facilitiesName, facilitiesQuantity + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + loadState.value = LoadState.Fail + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_refresh.xml b/app/src/main/res/drawable/ic_refresh.xml new file mode 100644 index 0000000..031764c --- /dev/null +++ b/app/src/main/res/drawable/ic_refresh.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_update_data.xml b/app/src/main/res/drawable/ic_update_data.xml new file mode 100644 index 0000000..49d3c58 --- /dev/null +++ b/app/src/main/res/drawable/ic_update_data.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/layout/activity_update_data.xml b/app/src/main/res/layout/activity_update_data.xml new file mode 100644 index 0000000..5e2a371 --- /dev/null +++ b/app/src/main/res/layout/activity_update_data.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +