diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt index 5b7d635..5ed35b6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class CertificateFragment : KotlinBaseFragment() { +class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt index 5b7d635..5ed35b6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class CertificateFragment : KotlinBaseFragment() { +class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt index 8df0f70..9def9c7 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class ContractRecordFragment : KotlinBaseFragment() { +class ContractRecordFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt index 5b7d635..5ed35b6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class CertificateFragment : KotlinBaseFragment() { +class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt index 8df0f70..9def9c7 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class ContractRecordFragment : KotlinBaseFragment() { +class ContractRecordFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt index 69caae0..4d0d60b 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt @@ -1,18 +1,87 @@ package com.casic.xz.meterage.fragment.customer +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.SampleRecordsModel +import com.casic.xz.meterage.vm.CustomerViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_customer_sample_record.* +import kotlinx.android.synthetic.main.include_empty_view.* -class SampleRecordFragment : KotlinBaseFragment() { +class SampleRecordFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var customerViewModel: CustomerViewModel + private lateinit var sampleRecordsAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] + customerViewModel.sampleRecords.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + sampleRecordsLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + sampleRecordsLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042601) + } + } } override fun initEvent() { + sampleRecordsLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getSampleRecordListPageById() + } + sampleRecordsLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getSampleRecordListPageById() + } } + override fun onResume() { + super.onResume() + pageIndex = 1 + getSampleRecordListPageById() + } + + private fun getSampleRecordListPageById() { + customerViewModel.getSampleRecordById(customerId, pageIndex) + } + + override fun initLayoutView(): Int = R.layout.fragment_customer_sample_record override fun observeRequestState() { @@ -22,4 +91,41 @@ override fun setupTopBarLayout() { } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023042601 -> { + if (isRefresh || isLoadMore) { + sampleRecordsAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView.showEmptyPage("无样品记录") { + pageIndex = 1 + getSampleRecordListPageById() + } + } else { + emptyView.hide() + sampleRecordsAdapter = + object : NormalRecyclerAdapter( + R.layout.item_remind_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: SampleRecordsModel.DataModel.RowsModel + ) { + + } + } + sampleRecordsRecyclerView.addItemDecoration( + DividerItemDecoration( + requireContext(), DividerItemDecoration.VERTICAL + ) + ) + sampleRecordsRecyclerView.adapter = sampleRecordsAdapter + } + } + } + } + true + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt index 5b7d635..5ed35b6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class CertificateFragment : KotlinBaseFragment() { +class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt index 8df0f70..9def9c7 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class ContractRecordFragment : KotlinBaseFragment() { +class ContractRecordFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt index 69caae0..4d0d60b 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt @@ -1,18 +1,87 @@ package com.casic.xz.meterage.fragment.customer +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.SampleRecordsModel +import com.casic.xz.meterage.vm.CustomerViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_customer_sample_record.* +import kotlinx.android.synthetic.main.include_empty_view.* -class SampleRecordFragment : KotlinBaseFragment() { +class SampleRecordFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var customerViewModel: CustomerViewModel + private lateinit var sampleRecordsAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] + customerViewModel.sampleRecords.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + sampleRecordsLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + sampleRecordsLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042601) + } + } } override fun initEvent() { + sampleRecordsLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getSampleRecordListPageById() + } + sampleRecordsLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getSampleRecordListPageById() + } } + override fun onResume() { + super.onResume() + pageIndex = 1 + getSampleRecordListPageById() + } + + private fun getSampleRecordListPageById() { + customerViewModel.getSampleRecordById(customerId, pageIndex) + } + + override fun initLayoutView(): Int = R.layout.fragment_customer_sample_record override fun observeRequestState() { @@ -22,4 +91,41 @@ override fun setupTopBarLayout() { } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023042601 -> { + if (isRefresh || isLoadMore) { + sampleRecordsAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView.showEmptyPage("无样品记录") { + pageIndex = 1 + getSampleRecordListPageById() + } + } else { + emptyView.hide() + sampleRecordsAdapter = + object : NormalRecyclerAdapter( + R.layout.item_remind_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: SampleRecordsModel.DataModel.RowsModel + ) { + + } + } + sampleRecordsRecyclerView.addItemDecoration( + DividerItemDecoration( + requireContext(), DividerItemDecoration.VERTICAL + ) + ) + sampleRecordsRecyclerView.adapter = sampleRecordsAdapter + } + } + } + } + true + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java new file mode 100644 index 0000000..1b6e413 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java @@ -0,0 +1,112 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class SampleRecordsModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String manufacturingNo; + private String mesurePeriod; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMesurePeriod() { + return mesurePeriod; + } + + public void setMesurePeriod(String mesurePeriod) { + this.mesurePeriod = mesurePeriod; + } + + public String getSampleId() { + return sampleId; + } + + public void setSampleId(String sampleId) { + this.sampleId = sampleId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt index 5b7d635..5ed35b6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class CertificateFragment : KotlinBaseFragment() { +class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt index 8df0f70..9def9c7 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class ContractRecordFragment : KotlinBaseFragment() { +class ContractRecordFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt index 69caae0..4d0d60b 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt @@ -1,18 +1,87 @@ package com.casic.xz.meterage.fragment.customer +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.SampleRecordsModel +import com.casic.xz.meterage.vm.CustomerViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_customer_sample_record.* +import kotlinx.android.synthetic.main.include_empty_view.* -class SampleRecordFragment : KotlinBaseFragment() { +class SampleRecordFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var customerViewModel: CustomerViewModel + private lateinit var sampleRecordsAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] + customerViewModel.sampleRecords.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + sampleRecordsLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + sampleRecordsLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042601) + } + } } override fun initEvent() { + sampleRecordsLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getSampleRecordListPageById() + } + sampleRecordsLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getSampleRecordListPageById() + } } + override fun onResume() { + super.onResume() + pageIndex = 1 + getSampleRecordListPageById() + } + + private fun getSampleRecordListPageById() { + customerViewModel.getSampleRecordById(customerId, pageIndex) + } + + override fun initLayoutView(): Int = R.layout.fragment_customer_sample_record override fun observeRequestState() { @@ -22,4 +91,41 @@ override fun setupTopBarLayout() { } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023042601 -> { + if (isRefresh || isLoadMore) { + sampleRecordsAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView.showEmptyPage("无样品记录") { + pageIndex = 1 + getSampleRecordListPageById() + } + } else { + emptyView.hide() + sampleRecordsAdapter = + object : NormalRecyclerAdapter( + R.layout.item_remind_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: SampleRecordsModel.DataModel.RowsModel + ) { + + } + } + sampleRecordsRecyclerView.addItemDecoration( + DividerItemDecoration( + requireContext(), DividerItemDecoration.VERTICAL + ) + ) + sampleRecordsRecyclerView.adapter = sampleRecordsAdapter + } + } + } + } + true + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java new file mode 100644 index 0000000..1b6e413 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java @@ -0,0 +1,112 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class SampleRecordsModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String manufacturingNo; + private String mesurePeriod; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMesurePeriod() { + return mesurePeriod; + } + + public void setMesurePeriod(String mesurePeriod) { + this.mesurePeriod = mesurePeriod; + } + + public String getSampleId() { + return sampleId; + } + + public void setSampleId(String sampleId) { + this.sampleId = sampleId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 005966d..9907e12 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -251,6 +251,17 @@ ): String /** + * 获取客户样品记录 + */ + @POST("/customer/sampleRecords") + suspend fun getSampleRecordById( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** * 获取计量人员列表 */ @POST("/meter/standard/user/listPage") diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt index 5b7d635..5ed35b6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class CertificateFragment : KotlinBaseFragment() { +class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt index 8df0f70..9def9c7 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class ContractRecordFragment : KotlinBaseFragment() { +class ContractRecordFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt index 69caae0..4d0d60b 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt @@ -1,18 +1,87 @@ package com.casic.xz.meterage.fragment.customer +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.SampleRecordsModel +import com.casic.xz.meterage.vm.CustomerViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_customer_sample_record.* +import kotlinx.android.synthetic.main.include_empty_view.* -class SampleRecordFragment : KotlinBaseFragment() { +class SampleRecordFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var customerViewModel: CustomerViewModel + private lateinit var sampleRecordsAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] + customerViewModel.sampleRecords.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + sampleRecordsLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + sampleRecordsLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042601) + } + } } override fun initEvent() { + sampleRecordsLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getSampleRecordListPageById() + } + sampleRecordsLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getSampleRecordListPageById() + } } + override fun onResume() { + super.onResume() + pageIndex = 1 + getSampleRecordListPageById() + } + + private fun getSampleRecordListPageById() { + customerViewModel.getSampleRecordById(customerId, pageIndex) + } + + override fun initLayoutView(): Int = R.layout.fragment_customer_sample_record override fun observeRequestState() { @@ -22,4 +91,41 @@ override fun setupTopBarLayout() { } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023042601 -> { + if (isRefresh || isLoadMore) { + sampleRecordsAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView.showEmptyPage("无样品记录") { + pageIndex = 1 + getSampleRecordListPageById() + } + } else { + emptyView.hide() + sampleRecordsAdapter = + object : NormalRecyclerAdapter( + R.layout.item_remind_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: SampleRecordsModel.DataModel.RowsModel + ) { + + } + } + sampleRecordsRecyclerView.addItemDecoration( + DividerItemDecoration( + requireContext(), DividerItemDecoration.VERTICAL + ) + ) + sampleRecordsRecyclerView.adapter = sampleRecordsAdapter + } + } + } + } + true + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java new file mode 100644 index 0000000..1b6e413 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java @@ -0,0 +1,112 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class SampleRecordsModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String manufacturingNo; + private String mesurePeriod; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMesurePeriod() { + return mesurePeriod; + } + + public void setMesurePeriod(String mesurePeriod) { + this.mesurePeriod = mesurePeriod; + } + + public String getSampleId() { + return sampleId; + } + + public void setSampleId(String sampleId) { + this.sampleId = sampleId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 005966d..9907e12 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -251,6 +251,17 @@ ): String /** + * 获取客户样品记录 + */ + @POST("/customer/sampleRecords") + suspend fun getSampleRecordById( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** * 获取计量人员列表 */ @POST("/meter/standard/user/listPage") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 5e355d6..5d88802 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -574,6 +574,26 @@ } /** + * 获取客户样品记录 + */ + suspend fun getSampleRecordById(id: String, offset: Int): String { + val param = JsonObject() + param.addProperty("id", id) + 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.getSampleRecordById( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** * 获取计量人员列表 */ suspend fun getStaffList(id: String): String { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt index 5b7d635..5ed35b6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class CertificateFragment : KotlinBaseFragment() { +class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt index 8df0f70..9def9c7 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class ContractRecordFragment : KotlinBaseFragment() { +class ContractRecordFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt index 69caae0..4d0d60b 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt @@ -1,18 +1,87 @@ package com.casic.xz.meterage.fragment.customer +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.SampleRecordsModel +import com.casic.xz.meterage.vm.CustomerViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_customer_sample_record.* +import kotlinx.android.synthetic.main.include_empty_view.* -class SampleRecordFragment : KotlinBaseFragment() { +class SampleRecordFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var customerViewModel: CustomerViewModel + private lateinit var sampleRecordsAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] + customerViewModel.sampleRecords.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + sampleRecordsLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + sampleRecordsLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042601) + } + } } override fun initEvent() { + sampleRecordsLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getSampleRecordListPageById() + } + sampleRecordsLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getSampleRecordListPageById() + } } + override fun onResume() { + super.onResume() + pageIndex = 1 + getSampleRecordListPageById() + } + + private fun getSampleRecordListPageById() { + customerViewModel.getSampleRecordById(customerId, pageIndex) + } + + override fun initLayoutView(): Int = R.layout.fragment_customer_sample_record override fun observeRequestState() { @@ -22,4 +91,41 @@ override fun setupTopBarLayout() { } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023042601 -> { + if (isRefresh || isLoadMore) { + sampleRecordsAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView.showEmptyPage("无样品记录") { + pageIndex = 1 + getSampleRecordListPageById() + } + } else { + emptyView.hide() + sampleRecordsAdapter = + object : NormalRecyclerAdapter( + R.layout.item_remind_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: SampleRecordsModel.DataModel.RowsModel + ) { + + } + } + sampleRecordsRecyclerView.addItemDecoration( + DividerItemDecoration( + requireContext(), DividerItemDecoration.VERTICAL + ) + ) + sampleRecordsRecyclerView.adapter = sampleRecordsAdapter + } + } + } + } + true + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java new file mode 100644 index 0000000..1b6e413 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java @@ -0,0 +1,112 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class SampleRecordsModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String manufacturingNo; + private String mesurePeriod; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMesurePeriod() { + return mesurePeriod; + } + + public void setMesurePeriod(String mesurePeriod) { + this.mesurePeriod = mesurePeriod; + } + + public String getSampleId() { + return sampleId; + } + + public void setSampleId(String sampleId) { + this.sampleId = sampleId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 005966d..9907e12 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -251,6 +251,17 @@ ): String /** + * 获取客户样品记录 + */ + @POST("/customer/sampleRecords") + suspend fun getSampleRecordById( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** * 获取计量人员列表 */ @POST("/meter/standard/user/listPage") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 5e355d6..5d88802 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -574,6 +574,26 @@ } /** + * 获取客户样品记录 + */ + suspend fun getSampleRecordById(id: String, offset: Int): String { + val param = JsonObject() + param.addProperty("id", id) + 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.getSampleRecordById( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** * 获取计量人员列表 */ suspend fun getStaffList(id: String): String { diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt index c10b460..e2ded84 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt @@ -36,9 +36,9 @@ fragmentPages.add(BasicInformationFragment(data)) fragmentPages.add(PersonnelFragment(data.customerUserList)) - fragmentPages.add(SampleRecordFragment()) - fragmentPages.add(ContractRecordFragment()) - fragmentPages.add(CertificateFragment()) + fragmentPages.add(SampleRecordFragment(customerId)) + fragmentPages.add(ContractRecordFragment(customerId)) + fragmentPages.add(CertificateFragment(customerId)) val equipmentPageTitles = arrayOf("基础信息", "客户人员", "样品记录", "合同记录", "证书记录") diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt index 5b7d635..5ed35b6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class CertificateFragment : KotlinBaseFragment() { +class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt index 8df0f70..9def9c7 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class ContractRecordFragment : KotlinBaseFragment() { +class ContractRecordFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt index 69caae0..4d0d60b 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt @@ -1,18 +1,87 @@ package com.casic.xz.meterage.fragment.customer +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.SampleRecordsModel +import com.casic.xz.meterage.vm.CustomerViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_customer_sample_record.* +import kotlinx.android.synthetic.main.include_empty_view.* -class SampleRecordFragment : KotlinBaseFragment() { +class SampleRecordFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var customerViewModel: CustomerViewModel + private lateinit var sampleRecordsAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] + customerViewModel.sampleRecords.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + sampleRecordsLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + sampleRecordsLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042601) + } + } } override fun initEvent() { + sampleRecordsLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getSampleRecordListPageById() + } + sampleRecordsLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getSampleRecordListPageById() + } } + override fun onResume() { + super.onResume() + pageIndex = 1 + getSampleRecordListPageById() + } + + private fun getSampleRecordListPageById() { + customerViewModel.getSampleRecordById(customerId, pageIndex) + } + + override fun initLayoutView(): Int = R.layout.fragment_customer_sample_record override fun observeRequestState() { @@ -22,4 +91,41 @@ override fun setupTopBarLayout() { } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023042601 -> { + if (isRefresh || isLoadMore) { + sampleRecordsAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView.showEmptyPage("无样品记录") { + pageIndex = 1 + getSampleRecordListPageById() + } + } else { + emptyView.hide() + sampleRecordsAdapter = + object : NormalRecyclerAdapter( + R.layout.item_remind_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: SampleRecordsModel.DataModel.RowsModel + ) { + + } + } + sampleRecordsRecyclerView.addItemDecoration( + DividerItemDecoration( + requireContext(), DividerItemDecoration.VERTICAL + ) + ) + sampleRecordsRecyclerView.adapter = sampleRecordsAdapter + } + } + } + } + true + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java new file mode 100644 index 0000000..1b6e413 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java @@ -0,0 +1,112 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class SampleRecordsModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String manufacturingNo; + private String mesurePeriod; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMesurePeriod() { + return mesurePeriod; + } + + public void setMesurePeriod(String mesurePeriod) { + this.mesurePeriod = mesurePeriod; + } + + public String getSampleId() { + return sampleId; + } + + public void setSampleId(String sampleId) { + this.sampleId = sampleId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 005966d..9907e12 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -251,6 +251,17 @@ ): String /** + * 获取客户样品记录 + */ + @POST("/customer/sampleRecords") + suspend fun getSampleRecordById( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** * 获取计量人员列表 */ @POST("/meter/standard/user/listPage") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 5e355d6..5d88802 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -574,6 +574,26 @@ } /** + * 获取客户样品记录 + */ + suspend fun getSampleRecordById(id: String, offset: Int): String { + val param = JsonObject() + param.addProperty("id", id) + 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.getSampleRecordById( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** * 获取计量人员列表 */ suspend fun getStaffList(id: String): String { diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt index c10b460..e2ded84 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt @@ -36,9 +36,9 @@ fragmentPages.add(BasicInformationFragment(data)) fragmentPages.add(PersonnelFragment(data.customerUserList)) - fragmentPages.add(SampleRecordFragment()) - fragmentPages.add(ContractRecordFragment()) - fragmentPages.add(CertificateFragment()) + fragmentPages.add(SampleRecordFragment(customerId)) + fragmentPages.add(ContractRecordFragment(customerId)) + fragmentPages.add(CertificateFragment(customerId)) val equipmentPageTitles = arrayOf("基础信息", "客户人员", "样品记录", "合同记录", "证书记录") diff --git a/app/src/main/java/com/casic/xz/meterage/vm/CustomerViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/CustomerViewModel.kt index ccfabdd..07e2557 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/CustomerViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/CustomerViewModel.kt @@ -6,6 +6,7 @@ import com.casic.xz.meterage.extensions.toErrorMessage import com.casic.xz.meterage.model.CustomerDetailModel import com.casic.xz.meterage.model.CustomerListModel +import com.casic.xz.meterage.model.SampleRecordsModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -22,6 +23,7 @@ private val gson by lazy { Gson() } val customerList = MutableLiveData() val customerDetail = MutableLiveData() + val sampleRecords = MutableLiveData() fun getCustomerList( bussinessSize: String, customerName: String, customerNo: String, grade: String, offset: Int @@ -64,4 +66,23 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getSampleRecordById(id: String, offset: Int) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getSampleRecordById(id, offset) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + sampleRecords.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt index 5b7d635..5ed35b6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/CertificateFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class CertificateFragment : KotlinBaseFragment() { +class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt index 8df0f70..9def9c7 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/ContractRecordFragment.kt @@ -1,12 +1,16 @@ package com.casic.xz.meterage.fragment.customer +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.vm.CustomerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment -class ContractRecordFragment : KotlinBaseFragment() { +class ContractRecordFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var customerViewModel: CustomerViewModel override fun initData() { - + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt index 69caae0..4d0d60b 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/customer/SampleRecordFragment.kt @@ -1,18 +1,87 @@ package com.casic.xz.meterage.fragment.customer +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.SampleRecordsModel +import com.casic.xz.meterage.vm.CustomerViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_customer_sample_record.* +import kotlinx.android.synthetic.main.include_empty_view.* -class SampleRecordFragment : KotlinBaseFragment() { +class SampleRecordFragment(private val customerId: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var customerViewModel: CustomerViewModel + private lateinit var sampleRecordsAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java] + customerViewModel.sampleRecords.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + sampleRecordsLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + sampleRecordsLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042601) + } + } } override fun initEvent() { + sampleRecordsLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getSampleRecordListPageById() + } + sampleRecordsLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getSampleRecordListPageById() + } } + override fun onResume() { + super.onResume() + pageIndex = 1 + getSampleRecordListPageById() + } + + private fun getSampleRecordListPageById() { + customerViewModel.getSampleRecordById(customerId, pageIndex) + } + + override fun initLayoutView(): Int = R.layout.fragment_customer_sample_record override fun observeRequestState() { @@ -22,4 +91,41 @@ override fun setupTopBarLayout() { } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023042601 -> { + if (isRefresh || isLoadMore) { + sampleRecordsAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView.showEmptyPage("无样品记录") { + pageIndex = 1 + getSampleRecordListPageById() + } + } else { + emptyView.hide() + sampleRecordsAdapter = + object : NormalRecyclerAdapter( + R.layout.item_remind_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: SampleRecordsModel.DataModel.RowsModel + ) { + + } + } + sampleRecordsRecyclerView.addItemDecoration( + DividerItemDecoration( + requireContext(), DividerItemDecoration.VERTICAL + ) + ) + sampleRecordsRecyclerView.adapter = sampleRecordsAdapter + } + } + } + } + true + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java new file mode 100644 index 0000000..1b6e413 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/SampleRecordsModel.java @@ -0,0 +1,112 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class SampleRecordsModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String manufacturingNo; + private String mesurePeriod; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMesurePeriod() { + return mesurePeriod; + } + + public void setMesurePeriod(String mesurePeriod) { + this.mesurePeriod = mesurePeriod; + } + + public String getSampleId() { + return sampleId; + } + + public void setSampleId(String sampleId) { + this.sampleId = sampleId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 005966d..9907e12 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -251,6 +251,17 @@ ): String /** + * 获取客户样品记录 + */ + @POST("/customer/sampleRecords") + suspend fun getSampleRecordById( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** * 获取计量人员列表 */ @POST("/meter/standard/user/listPage") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 5e355d6..5d88802 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -574,6 +574,26 @@ } /** + * 获取客户样品记录 + */ + suspend fun getSampleRecordById(id: String, offset: Int): String { + val param = JsonObject() + param.addProperty("id", id) + 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.getSampleRecordById( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** * 获取计量人员列表 */ suspend fun getStaffList(id: String): String { diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt index c10b460..e2ded84 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt @@ -36,9 +36,9 @@ fragmentPages.add(BasicInformationFragment(data)) fragmentPages.add(PersonnelFragment(data.customerUserList)) - fragmentPages.add(SampleRecordFragment()) - fragmentPages.add(ContractRecordFragment()) - fragmentPages.add(CertificateFragment()) + fragmentPages.add(SampleRecordFragment(customerId)) + fragmentPages.add(ContractRecordFragment(customerId)) + fragmentPages.add(CertificateFragment(customerId)) val equipmentPageTitles = arrayOf("基础信息", "客户人员", "样品记录", "合同记录", "证书记录") diff --git a/app/src/main/java/com/casic/xz/meterage/vm/CustomerViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/CustomerViewModel.kt index ccfabdd..07e2557 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/CustomerViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/CustomerViewModel.kt @@ -6,6 +6,7 @@ import com.casic.xz.meterage.extensions.toErrorMessage import com.casic.xz.meterage.model.CustomerDetailModel import com.casic.xz.meterage.model.CustomerListModel +import com.casic.xz.meterage.model.SampleRecordsModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -22,6 +23,7 @@ private val gson by lazy { Gson() } val customerList = MutableLiveData() val customerDetail = MutableLiveData() + val sampleRecords = MutableLiveData() fun getCustomerList( bussinessSize: String, customerName: String, customerNo: String, grade: String, offset: Int @@ -64,4 +66,23 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getSampleRecordById(id: String, offset: Int) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getSampleRecordById(id, offset) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + sampleRecords.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_customer_sample_record.xml b/app/src/main/res/layout/fragment_customer_sample_record.xml index 3728533..f61c1d6 100644 --- a/app/src/main/res/layout/fragment_customer_sample_record.xml +++ b/app/src/main/res/layout/fragment_customer_sample_record.xml @@ -1,7 +1,37 @@ - + android:background="@color/white" + android:orientation="vertical"> - \ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file