diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java new file mode 100644 index 0000000..da1e09d --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java @@ -0,0 +1,4 @@ +package com.casic.br.app.model; + +public class CheckHistoryModel { +} diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java new file mode 100644 index 0000000..da1e09d --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java @@ -0,0 +1,4 @@ +package com.casic.br.app.model; + +public class CheckHistoryModel { +} diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index f563902..075ca63 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -9,6 +9,17 @@ interface RetrofitService { /** + * 获取巡查记录 + */ + @POST("/meter/file/listPage") + suspend fun getCheckHistoryByPage( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** * 获取标准规范文件列表 */ @POST("/meter/file/listPage") diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java new file mode 100644 index 0000000..da1e09d --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java @@ -0,0 +1,4 @@ +package com.casic.br.app.model; + +public class CheckHistoryModel { +} diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index f563902..075ca63 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -9,6 +9,17 @@ interface RetrofitService { /** + * 获取巡查记录 + */ + @POST("/meter/file/listPage") + suspend fun getCheckHistoryByPage( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** * 获取标准规范文件列表 */ @POST("/meter/file/listPage") diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 5aa25c2..2ddf452 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -18,6 +18,26 @@ } /** + * 获取巡查记录 + */ + suspend fun getCheckHistoryByPage(keywords: String, offset: Int): String { + val param = JsonObject() + param.addProperty("keywords", keywords) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getCheckHistoryByPage( + AuthenticationHelper.token, requestBody, limitMap, offsetMap + ) + } + + /** * 获取标准规范文件列表 */ suspend fun getStandardFileByPage(keywords: String, offset: Int): String { diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java new file mode 100644 index 0000000..da1e09d --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java @@ -0,0 +1,4 @@ +package com.casic.br.app.model; + +public class CheckHistoryModel { +} diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index f563902..075ca63 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -9,6 +9,17 @@ interface RetrofitService { /** + * 获取巡查记录 + */ + @POST("/meter/file/listPage") + suspend fun getCheckHistoryByPage( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** * 获取标准规范文件列表 */ @POST("/meter/file/listPage") diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 5aa25c2..2ddf452 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -18,6 +18,26 @@ } /** + * 获取巡查记录 + */ + suspend fun getCheckHistoryByPage(keywords: String, offset: Int): String { + val param = JsonObject() + param.addProperty("keywords", keywords) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getCheckHistoryByPage( + AuthenticationHelper.token, requestBody, limitMap, offsetMap + ) + } + + /** * 获取标准规范文件列表 */ suspend fun getStandardFileByPage(keywords: String, offset: Int): String { diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index af54dd6..9925205 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -1,16 +1,113 @@ package com.casic.br.app.view +import android.graphics.Color import android.os.Bundle +import android.os.Handler +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckHistoryBinding +import com.casic.br.app.extensions.initImmersionBar +import com.casic.br.app.model.CheckHistoryModel +import com.casic.br.app.vm.CheckHistoryViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemDivider +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.utils.LoadingDialogHub +import com.pengxh.kt.lite.utils.WeakReferenceHandler -class CheckHistoryActivity : KotlinBaseActivity() { +class CheckHistoryActivity : KotlinBaseActivity(), Handler.Callback { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var checkHistoryViewModel: CheckHistoryViewModel + private lateinit var checkHistoryAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var keywords = "" + private var page = 1 + private var isRefresh = false + private var isLoadMore = false + override fun initEvent() { + binding.leftButton.setOnClickListener { finish() } + binding.refreshLayout.setOnRefreshListener { + isRefresh = true + page = 1 + getCheckHistoryByPage() + } + + binding.refreshLayout.setOnLoadMoreListener { + isLoadMore = true + page++ + getCheckHistoryByPage() + } } override fun initOnCreate(savedInstanceState: Bundle?) { + weakReferenceHandler = WeakReferenceHandler(this) + checkHistoryViewModel = ViewModelProvider(this)[CheckHistoryViewModel::class.java] + checkHistoryViewModel.historyResult.observe(this) { +// if (it.code == 200) { +// val dataRows = it.data?.rows!! +// when { +// isRefresh -> { +// checkHistoryAdapter.setRefreshData(dataRows) +// binding.refreshLayout.finishRefresh() +// isRefresh = false +// } +// +// isLoadMore -> { +// if (dataRows.size == 0) { +// "到底了,别拉了".show(this) +// } +// checkHistoryAdapter.setLoadMoreData(dataRows) +// binding.refreshLayout.finishLoadMore() +// isLoadMore = false +// } +// +// else -> { +// dataBeans = dataRows +// weakReferenceHandler.sendEmptyMessage(2024030503) +// } +// } +// } + } + } + private fun getCheckHistoryByPage() { + checkHistoryViewModel.getCheckHistoryByPage(this, keywords, page) + } + + override fun handleMessage(msg: Message): Boolean { + when (msg.what) { + 2024030503 -> { + checkHistoryAdapter = object : + NormalRecyclerAdapter( + R.layout.item_check_history, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CheckHistoryModel + ) { + + } + } + binding.recyclerView.adapter = checkHistoryAdapter + binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(1, Color.WHITE)) + checkHistoryAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked( + position: Int, t: CheckHistoryModel + ) { + //TODO 查看巡查记录详情 + } + }) + } + } + return true } override fun initViewBinding(): ActivityCheckHistoryBinding { @@ -18,10 +115,22 @@ } override fun observeRequestState() { + checkHistoryViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") + LoadState.Success -> { + LoadingDialogHub.dismiss() + } + LoadState.Fail -> { + LoadingDialogHub.dismiss() + "数据加载失败,请重试".show(this) + } + } + } } override fun setupTopBarLayout() { - + binding.rootView.initImmersionBar(this, false, R.color.themeColor) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java new file mode 100644 index 0000000..da1e09d --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java @@ -0,0 +1,4 @@ +package com.casic.br.app.model; + +public class CheckHistoryModel { +} diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index f563902..075ca63 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -9,6 +9,17 @@ interface RetrofitService { /** + * 获取巡查记录 + */ + @POST("/meter/file/listPage") + suspend fun getCheckHistoryByPage( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** * 获取标准规范文件列表 */ @POST("/meter/file/listPage") diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 5aa25c2..2ddf452 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -18,6 +18,26 @@ } /** + * 获取巡查记录 + */ + suspend fun getCheckHistoryByPage(keywords: String, offset: Int): String { + val param = JsonObject() + param.addProperty("keywords", keywords) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getCheckHistoryByPage( + AuthenticationHelper.token, requestBody, limitMap, offsetMap + ) + } + + /** * 获取标准规范文件列表 */ suspend fun getStandardFileByPage(keywords: String, offset: Int): String { diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index af54dd6..9925205 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -1,16 +1,113 @@ package com.casic.br.app.view +import android.graphics.Color import android.os.Bundle +import android.os.Handler +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckHistoryBinding +import com.casic.br.app.extensions.initImmersionBar +import com.casic.br.app.model.CheckHistoryModel +import com.casic.br.app.vm.CheckHistoryViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemDivider +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.utils.LoadingDialogHub +import com.pengxh.kt.lite.utils.WeakReferenceHandler -class CheckHistoryActivity : KotlinBaseActivity() { +class CheckHistoryActivity : KotlinBaseActivity(), Handler.Callback { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var checkHistoryViewModel: CheckHistoryViewModel + private lateinit var checkHistoryAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var keywords = "" + private var page = 1 + private var isRefresh = false + private var isLoadMore = false + override fun initEvent() { + binding.leftButton.setOnClickListener { finish() } + binding.refreshLayout.setOnRefreshListener { + isRefresh = true + page = 1 + getCheckHistoryByPage() + } + + binding.refreshLayout.setOnLoadMoreListener { + isLoadMore = true + page++ + getCheckHistoryByPage() + } } override fun initOnCreate(savedInstanceState: Bundle?) { + weakReferenceHandler = WeakReferenceHandler(this) + checkHistoryViewModel = ViewModelProvider(this)[CheckHistoryViewModel::class.java] + checkHistoryViewModel.historyResult.observe(this) { +// if (it.code == 200) { +// val dataRows = it.data?.rows!! +// when { +// isRefresh -> { +// checkHistoryAdapter.setRefreshData(dataRows) +// binding.refreshLayout.finishRefresh() +// isRefresh = false +// } +// +// isLoadMore -> { +// if (dataRows.size == 0) { +// "到底了,别拉了".show(this) +// } +// checkHistoryAdapter.setLoadMoreData(dataRows) +// binding.refreshLayout.finishLoadMore() +// isLoadMore = false +// } +// +// else -> { +// dataBeans = dataRows +// weakReferenceHandler.sendEmptyMessage(2024030503) +// } +// } +// } + } + } + private fun getCheckHistoryByPage() { + checkHistoryViewModel.getCheckHistoryByPage(this, keywords, page) + } + + override fun handleMessage(msg: Message): Boolean { + when (msg.what) { + 2024030503 -> { + checkHistoryAdapter = object : + NormalRecyclerAdapter( + R.layout.item_check_history, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CheckHistoryModel + ) { + + } + } + binding.recyclerView.adapter = checkHistoryAdapter + binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(1, Color.WHITE)) + checkHistoryAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked( + position: Int, t: CheckHistoryModel + ) { + //TODO 查看巡查记录详情 + } + }) + } + } + return true } override fun initViewBinding(): ActivityCheckHistoryBinding { @@ -18,10 +115,22 @@ } override fun observeRequestState() { + checkHistoryViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") + LoadState.Success -> { + LoadingDialogHub.dismiss() + } + LoadState.Fail -> { + LoadingDialogHub.dismiss() + "数据加载失败,请重试".show(this) + } + } + } } override fun setupTopBarLayout() { - + binding.rootView.initImmersionBar(this, false, R.color.themeColor) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt b/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt new file mode 100644 index 0000000..f0bfec2 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt @@ -0,0 +1,41 @@ +package com.casic.br.app.vm + +import android.content.Context +import androidx.lifecycle.MutableLiveData +import com.casic.br.app.extensions.getResponseCode +import com.casic.br.app.extensions.getResponseMessage +import com.casic.br.app.model.CheckHistoryModel +import com.casic.br.app.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 + +class CheckHistoryViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val historyResult = MutableLiveData() + + fun getCheckHistoryByPage(context: Context, keywords: String, offset: Int) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getCheckHistoryByPage(keywords, offset) + when (response.getResponseCode()) { + 200 -> { + loadState.value = LoadState.Success + historyResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } + + else -> { + loadState.value = LoadState.Fail + response.getResponseMessage().show(context) + } + } + }, { + loadState.value = LoadState.Fail + it.localizedMessage?.show(context) + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java new file mode 100644 index 0000000..da1e09d --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java @@ -0,0 +1,4 @@ +package com.casic.br.app.model; + +public class CheckHistoryModel { +} diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index f563902..075ca63 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -9,6 +9,17 @@ interface RetrofitService { /** + * 获取巡查记录 + */ + @POST("/meter/file/listPage") + suspend fun getCheckHistoryByPage( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** * 获取标准规范文件列表 */ @POST("/meter/file/listPage") diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 5aa25c2..2ddf452 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -18,6 +18,26 @@ } /** + * 获取巡查记录 + */ + suspend fun getCheckHistoryByPage(keywords: String, offset: Int): String { + val param = JsonObject() + param.addProperty("keywords", keywords) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getCheckHistoryByPage( + AuthenticationHelper.token, requestBody, limitMap, offsetMap + ) + } + + /** * 获取标准规范文件列表 */ suspend fun getStandardFileByPage(keywords: String, offset: Int): String { diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index af54dd6..9925205 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -1,16 +1,113 @@ package com.casic.br.app.view +import android.graphics.Color import android.os.Bundle +import android.os.Handler +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckHistoryBinding +import com.casic.br.app.extensions.initImmersionBar +import com.casic.br.app.model.CheckHistoryModel +import com.casic.br.app.vm.CheckHistoryViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemDivider +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.utils.LoadingDialogHub +import com.pengxh.kt.lite.utils.WeakReferenceHandler -class CheckHistoryActivity : KotlinBaseActivity() { +class CheckHistoryActivity : KotlinBaseActivity(), Handler.Callback { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var checkHistoryViewModel: CheckHistoryViewModel + private lateinit var checkHistoryAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var keywords = "" + private var page = 1 + private var isRefresh = false + private var isLoadMore = false + override fun initEvent() { + binding.leftButton.setOnClickListener { finish() } + binding.refreshLayout.setOnRefreshListener { + isRefresh = true + page = 1 + getCheckHistoryByPage() + } + + binding.refreshLayout.setOnLoadMoreListener { + isLoadMore = true + page++ + getCheckHistoryByPage() + } } override fun initOnCreate(savedInstanceState: Bundle?) { + weakReferenceHandler = WeakReferenceHandler(this) + checkHistoryViewModel = ViewModelProvider(this)[CheckHistoryViewModel::class.java] + checkHistoryViewModel.historyResult.observe(this) { +// if (it.code == 200) { +// val dataRows = it.data?.rows!! +// when { +// isRefresh -> { +// checkHistoryAdapter.setRefreshData(dataRows) +// binding.refreshLayout.finishRefresh() +// isRefresh = false +// } +// +// isLoadMore -> { +// if (dataRows.size == 0) { +// "到底了,别拉了".show(this) +// } +// checkHistoryAdapter.setLoadMoreData(dataRows) +// binding.refreshLayout.finishLoadMore() +// isLoadMore = false +// } +// +// else -> { +// dataBeans = dataRows +// weakReferenceHandler.sendEmptyMessage(2024030503) +// } +// } +// } + } + } + private fun getCheckHistoryByPage() { + checkHistoryViewModel.getCheckHistoryByPage(this, keywords, page) + } + + override fun handleMessage(msg: Message): Boolean { + when (msg.what) { + 2024030503 -> { + checkHistoryAdapter = object : + NormalRecyclerAdapter( + R.layout.item_check_history, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CheckHistoryModel + ) { + + } + } + binding.recyclerView.adapter = checkHistoryAdapter + binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(1, Color.WHITE)) + checkHistoryAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked( + position: Int, t: CheckHistoryModel + ) { + //TODO 查看巡查记录详情 + } + }) + } + } + return true } override fun initViewBinding(): ActivityCheckHistoryBinding { @@ -18,10 +115,22 @@ } override fun observeRequestState() { + checkHistoryViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") + LoadState.Success -> { + LoadingDialogHub.dismiss() + } + LoadState.Fail -> { + LoadingDialogHub.dismiss() + "数据加载失败,请重试".show(this) + } + } + } } override fun setupTopBarLayout() { - + binding.rootView.initImmersionBar(this, false, R.color.themeColor) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt b/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt new file mode 100644 index 0000000..f0bfec2 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt @@ -0,0 +1,41 @@ +package com.casic.br.app.vm + +import android.content.Context +import androidx.lifecycle.MutableLiveData +import com.casic.br.app.extensions.getResponseCode +import com.casic.br.app.extensions.getResponseMessage +import com.casic.br.app.model.CheckHistoryModel +import com.casic.br.app.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 + +class CheckHistoryViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val historyResult = MutableLiveData() + + fun getCheckHistoryByPage(context: Context, keywords: String, offset: Int) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getCheckHistoryByPage(keywords, offset) + when (response.getResponseCode()) { + 200 -> { + loadState.value = LoadState.Success + historyResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } + + else -> { + loadState.value = LoadState.Fail + response.getResponseMessage().show(context) + } + } + }, { + loadState.value = LoadState.Fail + it.localizedMessage?.show(context) + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_check_history.xml b/app/src/main/res/layout/activity_check_history.xml index 37dc5f1..b6ed0f2 100644 --- a/app/src/main/res/layout/activity_check_history.xml +++ b/app/src/main/res/layout/activity_check_history.xml @@ -1,9 +1,54 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java new file mode 100644 index 0000000..da1e09d --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java @@ -0,0 +1,4 @@ +package com.casic.br.app.model; + +public class CheckHistoryModel { +} diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index f563902..075ca63 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -9,6 +9,17 @@ interface RetrofitService { /** + * 获取巡查记录 + */ + @POST("/meter/file/listPage") + suspend fun getCheckHistoryByPage( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** * 获取标准规范文件列表 */ @POST("/meter/file/listPage") diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 5aa25c2..2ddf452 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -18,6 +18,26 @@ } /** + * 获取巡查记录 + */ + suspend fun getCheckHistoryByPage(keywords: String, offset: Int): String { + val param = JsonObject() + param.addProperty("keywords", keywords) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getCheckHistoryByPage( + AuthenticationHelper.token, requestBody, limitMap, offsetMap + ) + } + + /** * 获取标准规范文件列表 */ suspend fun getStandardFileByPage(keywords: String, offset: Int): String { diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index af54dd6..9925205 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -1,16 +1,113 @@ package com.casic.br.app.view +import android.graphics.Color import android.os.Bundle +import android.os.Handler +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckHistoryBinding +import com.casic.br.app.extensions.initImmersionBar +import com.casic.br.app.model.CheckHistoryModel +import com.casic.br.app.vm.CheckHistoryViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemDivider +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.utils.LoadingDialogHub +import com.pengxh.kt.lite.utils.WeakReferenceHandler -class CheckHistoryActivity : KotlinBaseActivity() { +class CheckHistoryActivity : KotlinBaseActivity(), Handler.Callback { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var checkHistoryViewModel: CheckHistoryViewModel + private lateinit var checkHistoryAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var keywords = "" + private var page = 1 + private var isRefresh = false + private var isLoadMore = false + override fun initEvent() { + binding.leftButton.setOnClickListener { finish() } + binding.refreshLayout.setOnRefreshListener { + isRefresh = true + page = 1 + getCheckHistoryByPage() + } + + binding.refreshLayout.setOnLoadMoreListener { + isLoadMore = true + page++ + getCheckHistoryByPage() + } } override fun initOnCreate(savedInstanceState: Bundle?) { + weakReferenceHandler = WeakReferenceHandler(this) + checkHistoryViewModel = ViewModelProvider(this)[CheckHistoryViewModel::class.java] + checkHistoryViewModel.historyResult.observe(this) { +// if (it.code == 200) { +// val dataRows = it.data?.rows!! +// when { +// isRefresh -> { +// checkHistoryAdapter.setRefreshData(dataRows) +// binding.refreshLayout.finishRefresh() +// isRefresh = false +// } +// +// isLoadMore -> { +// if (dataRows.size == 0) { +// "到底了,别拉了".show(this) +// } +// checkHistoryAdapter.setLoadMoreData(dataRows) +// binding.refreshLayout.finishLoadMore() +// isLoadMore = false +// } +// +// else -> { +// dataBeans = dataRows +// weakReferenceHandler.sendEmptyMessage(2024030503) +// } +// } +// } + } + } + private fun getCheckHistoryByPage() { + checkHistoryViewModel.getCheckHistoryByPage(this, keywords, page) + } + + override fun handleMessage(msg: Message): Boolean { + when (msg.what) { + 2024030503 -> { + checkHistoryAdapter = object : + NormalRecyclerAdapter( + R.layout.item_check_history, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CheckHistoryModel + ) { + + } + } + binding.recyclerView.adapter = checkHistoryAdapter + binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(1, Color.WHITE)) + checkHistoryAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked( + position: Int, t: CheckHistoryModel + ) { + //TODO 查看巡查记录详情 + } + }) + } + } + return true } override fun initViewBinding(): ActivityCheckHistoryBinding { @@ -18,10 +115,22 @@ } override fun observeRequestState() { + checkHistoryViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") + LoadState.Success -> { + LoadingDialogHub.dismiss() + } + LoadState.Fail -> { + LoadingDialogHub.dismiss() + "数据加载失败,请重试".show(this) + } + } + } } override fun setupTopBarLayout() { - + binding.rootView.initImmersionBar(this, false, R.color.themeColor) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt b/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt new file mode 100644 index 0000000..f0bfec2 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt @@ -0,0 +1,41 @@ +package com.casic.br.app.vm + +import android.content.Context +import androidx.lifecycle.MutableLiveData +import com.casic.br.app.extensions.getResponseCode +import com.casic.br.app.extensions.getResponseMessage +import com.casic.br.app.model.CheckHistoryModel +import com.casic.br.app.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 + +class CheckHistoryViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val historyResult = MutableLiveData() + + fun getCheckHistoryByPage(context: Context, keywords: String, offset: Int) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getCheckHistoryByPage(keywords, offset) + when (response.getResponseCode()) { + 200 -> { + loadState.value = LoadState.Success + historyResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } + + else -> { + loadState.value = LoadState.Fail + response.getResponseMessage().show(context) + } + } + }, { + loadState.value = LoadState.Fail + it.localizedMessage?.show(context) + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_check_history.xml b/app/src/main/res/layout/activity_check_history.xml index 37dc5f1..b6ed0f2 100644 --- a/app/src/main/res/layout/activity_check_history.xml +++ b/app/src/main/res/layout/activity_check_history.xml @@ -1,9 +1,54 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_check_history.xml b/app/src/main/res/layout/item_check_history.xml new file mode 100644 index 0000000..9c372d3 --- /dev/null +++ b/app/src/main/res/layout/item_check_history.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file