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 5ed35b6..7dccf6d 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,20 +1,86 @@ package com.casic.xz.meterage.fragment.customer +import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateRecordsModel +import com.casic.xz.meterage.utils.DividerItemDecoration 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.dp2px +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_customer_certificate.* +import kotlinx.android.synthetic.main.include_empty_view.* class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel + private lateinit var certificateAdapter: 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.certificateRecords.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + certificateLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + certificateLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042701) + } + } } override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateRecordListPageById() + } + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateRecordListPageById() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateRecordListPageById() + } + + private fun getCertificateRecordListPageById() { + customerViewModel.getCertificateRecordListPageById("", customerId, pageIndex) } override fun initLayoutView(): Int = R.layout.fragment_customer_certificate @@ -26,4 +92,47 @@ override fun setupTopBarLayout() { } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023042701 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView.showEmptyPage("无检定证书记录") { + pageIndex = 1 + getCertificateRecordListPageById() + } + } else { + emptyView.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_customer_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CertificateRecordsModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.indexView, ((position + 1).toString())) + .setText(R.id.certificationNameView, item.certificationName) + .setText( + R.id.effectiveDateView, + "发证日期:${item.effectiveDate.formatToYearMonthDay()}" + ).setText( + R.id.certificationCodeView, + "证书编号:${item.certificationCode}" + ) + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(45f.dp2px(requireContext()).toFloat(), 0f) + ) + certificateRecyclerView.adapter = certificateAdapter + } + } + } + } + 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 5ed35b6..7dccf6d 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,20 +1,86 @@ package com.casic.xz.meterage.fragment.customer +import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateRecordsModel +import com.casic.xz.meterage.utils.DividerItemDecoration 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.dp2px +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_customer_certificate.* +import kotlinx.android.synthetic.main.include_empty_view.* class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel + private lateinit var certificateAdapter: 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.certificateRecords.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + certificateLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + certificateLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042701) + } + } } override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateRecordListPageById() + } + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateRecordListPageById() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateRecordListPageById() + } + + private fun getCertificateRecordListPageById() { + customerViewModel.getCertificateRecordListPageById("", customerId, pageIndex) } override fun initLayoutView(): Int = R.layout.fragment_customer_certificate @@ -26,4 +92,47 @@ override fun setupTopBarLayout() { } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023042701 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView.showEmptyPage("无检定证书记录") { + pageIndex = 1 + getCertificateRecordListPageById() + } + } else { + emptyView.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_customer_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CertificateRecordsModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.indexView, ((position + 1).toString())) + .setText(R.id.certificationNameView, item.certificationName) + .setText( + R.id.effectiveDateView, + "发证日期:${item.effectiveDate.formatToYearMonthDay()}" + ).setText( + R.id.certificationCodeView, + "证书编号:${item.certificationCode}" + ) + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(45f.dp2px(requireContext()).toFloat(), 0f) + ) + certificateRecyclerView.adapter = certificateAdapter + } + } + } + } + true + } } \ No newline at end of file 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 e6a6bcc..4ca6a58 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 @@ -4,12 +4,16 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.model.ContractRecordsModel +import com.casic.xz.meterage.model.ContractListModel +import com.casic.xz.meterage.view.home.ContractDetailActivity 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.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_customer_contract_record.* @@ -19,8 +23,8 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel - private lateinit var contractRecordsAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var contractRecordsAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -78,7 +82,19 @@ } private fun getContractRecordListPageById() { - customerViewModel.getContractRecordById(customerId, pageIndex) + customerViewModel.getContractRecordById( + "", + "", + "", + customerId, + "", + "", + arrayOf(), + "", + "", + "", + pageIndex + ) } override fun initLayoutView(): Int = R.layout.fragment_customer_contract_record @@ -105,14 +121,42 @@ } else { emptyView.hide() contractRecordsAdapter = object : - NormalRecyclerAdapter( - R.layout.item_remind_rv_l, dataBeans + NormalRecyclerAdapter( + R.layout.item_contract_rv_l, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: ContractRecordsModel.DataModel.RowsModel + item: ContractListModel.DataModel.RowsModel ) { + viewHolder.setText(R.id.contractNameView, item.agreementName) + .setText(R.id.contractStateView, item.statusName) + .setText(R.id.contractCodeView, "合同编号:${item.agreementNo}") + .setText(R.id.firstPartNameView, "甲方单位:${item.firstParty}") + .setText( + R.id.startDateView, + "签订日期:${item.estimateSignDate.formatToYearMonthDay()}" + ) + if (item.statusName.contains("已完成")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.green.convertColor(requireContext()) + ) + } else if (item.statusName.contains("未完成")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.red.convertColor(requireContext()) + ) + } else if (item.statusName.contains("已废止")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.gray.convertColor(requireContext()) + ) + } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + requireContext().navigatePageTo(item.id) + } } } contractRecordsRecyclerView.addItemDecoration( 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 5ed35b6..7dccf6d 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,20 +1,86 @@ package com.casic.xz.meterage.fragment.customer +import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateRecordsModel +import com.casic.xz.meterage.utils.DividerItemDecoration 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.dp2px +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_customer_certificate.* +import kotlinx.android.synthetic.main.include_empty_view.* class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel + private lateinit var certificateAdapter: 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.certificateRecords.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + certificateLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + certificateLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042701) + } + } } override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateRecordListPageById() + } + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateRecordListPageById() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateRecordListPageById() + } + + private fun getCertificateRecordListPageById() { + customerViewModel.getCertificateRecordListPageById("", customerId, pageIndex) } override fun initLayoutView(): Int = R.layout.fragment_customer_certificate @@ -26,4 +92,47 @@ override fun setupTopBarLayout() { } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023042701 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView.showEmptyPage("无检定证书记录") { + pageIndex = 1 + getCertificateRecordListPageById() + } + } else { + emptyView.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_customer_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CertificateRecordsModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.indexView, ((position + 1).toString())) + .setText(R.id.certificationNameView, item.certificationName) + .setText( + R.id.effectiveDateView, + "发证日期:${item.effectiveDate.formatToYearMonthDay()}" + ).setText( + R.id.certificationCodeView, + "证书编号:${item.certificationCode}" + ) + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(45f.dp2px(requireContext()).toFloat(), 0f) + ) + certificateRecyclerView.adapter = certificateAdapter + } + } + } + } + true + } } \ No newline at end of file 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 e6a6bcc..4ca6a58 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 @@ -4,12 +4,16 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.model.ContractRecordsModel +import com.casic.xz.meterage.model.ContractListModel +import com.casic.xz.meterage.view.home.ContractDetailActivity 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.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_customer_contract_record.* @@ -19,8 +23,8 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel - private lateinit var contractRecordsAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var contractRecordsAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -78,7 +82,19 @@ } private fun getContractRecordListPageById() { - customerViewModel.getContractRecordById(customerId, pageIndex) + customerViewModel.getContractRecordById( + "", + "", + "", + customerId, + "", + "", + arrayOf(), + "", + "", + "", + pageIndex + ) } override fun initLayoutView(): Int = R.layout.fragment_customer_contract_record @@ -105,14 +121,42 @@ } else { emptyView.hide() contractRecordsAdapter = object : - NormalRecyclerAdapter( - R.layout.item_remind_rv_l, dataBeans + NormalRecyclerAdapter( + R.layout.item_contract_rv_l, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: ContractRecordsModel.DataModel.RowsModel + item: ContractListModel.DataModel.RowsModel ) { + viewHolder.setText(R.id.contractNameView, item.agreementName) + .setText(R.id.contractStateView, item.statusName) + .setText(R.id.contractCodeView, "合同编号:${item.agreementNo}") + .setText(R.id.firstPartNameView, "甲方单位:${item.firstParty}") + .setText( + R.id.startDateView, + "签订日期:${item.estimateSignDate.formatToYearMonthDay()}" + ) + if (item.statusName.contains("已完成")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.green.convertColor(requireContext()) + ) + } else if (item.statusName.contains("未完成")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.red.convertColor(requireContext()) + ) + } else if (item.statusName.contains("已废止")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.gray.convertColor(requireContext()) + ) + } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + requireContext().navigatePageTo(item.id) + } } } contractRecordsRecyclerView.addItemDecoration( diff --git a/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java new file mode 100644 index 0000000..d531c95 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java @@ -0,0 +1,121 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class CertificateRecordsModel { + + 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 certificationClass; + private String certificationClassName; + private String certificationCode; + private String certificationId; + private String certificationName; + private String effectiveDate; + private String expirationDate; + + public String getCertificationClass() { + return certificationClass; + } + + public void setCertificationClass(String certificationClass) { + this.certificationClass = certificationClass; + } + + public String getCertificationClassName() { + return certificationClassName; + } + + public void setCertificationClassName(String certificationClassName) { + this.certificationClassName = certificationClassName; + } + + public String getCertificationCode() { + return certificationCode; + } + + public void setCertificationCode(String certificationCode) { + this.certificationCode = certificationCode; + } + + public String getCertificationId() { + return certificationId; + } + + public void setCertificationId(String certificationId) { + this.certificationId = certificationId; + } + + public String getCertificationName() { + return certificationName; + } + + public void setCertificationName(String certificationName) { + this.certificationName = certificationName; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getExpirationDate() { + return expirationDate; + } + + public void setExpirationDate(String expirationDate) { + this.expirationDate = expirationDate; + } + } + } +} 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 5ed35b6..7dccf6d 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,20 +1,86 @@ package com.casic.xz.meterage.fragment.customer +import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateRecordsModel +import com.casic.xz.meterage.utils.DividerItemDecoration 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.dp2px +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_customer_certificate.* +import kotlinx.android.synthetic.main.include_empty_view.* class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel + private lateinit var certificateAdapter: 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.certificateRecords.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + certificateLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + certificateLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042701) + } + } } override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateRecordListPageById() + } + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateRecordListPageById() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateRecordListPageById() + } + + private fun getCertificateRecordListPageById() { + customerViewModel.getCertificateRecordListPageById("", customerId, pageIndex) } override fun initLayoutView(): Int = R.layout.fragment_customer_certificate @@ -26,4 +92,47 @@ override fun setupTopBarLayout() { } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023042701 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView.showEmptyPage("无检定证书记录") { + pageIndex = 1 + getCertificateRecordListPageById() + } + } else { + emptyView.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_customer_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CertificateRecordsModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.indexView, ((position + 1).toString())) + .setText(R.id.certificationNameView, item.certificationName) + .setText( + R.id.effectiveDateView, + "发证日期:${item.effectiveDate.formatToYearMonthDay()}" + ).setText( + R.id.certificationCodeView, + "证书编号:${item.certificationCode}" + ) + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(45f.dp2px(requireContext()).toFloat(), 0f) + ) + certificateRecyclerView.adapter = certificateAdapter + } + } + } + } + true + } } \ No newline at end of file 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 e6a6bcc..4ca6a58 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 @@ -4,12 +4,16 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.model.ContractRecordsModel +import com.casic.xz.meterage.model.ContractListModel +import com.casic.xz.meterage.view.home.ContractDetailActivity 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.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_customer_contract_record.* @@ -19,8 +23,8 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel - private lateinit var contractRecordsAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var contractRecordsAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -78,7 +82,19 @@ } private fun getContractRecordListPageById() { - customerViewModel.getContractRecordById(customerId, pageIndex) + customerViewModel.getContractRecordById( + "", + "", + "", + customerId, + "", + "", + arrayOf(), + "", + "", + "", + pageIndex + ) } override fun initLayoutView(): Int = R.layout.fragment_customer_contract_record @@ -105,14 +121,42 @@ } else { emptyView.hide() contractRecordsAdapter = object : - NormalRecyclerAdapter( - R.layout.item_remind_rv_l, dataBeans + NormalRecyclerAdapter( + R.layout.item_contract_rv_l, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: ContractRecordsModel.DataModel.RowsModel + item: ContractListModel.DataModel.RowsModel ) { + viewHolder.setText(R.id.contractNameView, item.agreementName) + .setText(R.id.contractStateView, item.statusName) + .setText(R.id.contractCodeView, "合同编号:${item.agreementNo}") + .setText(R.id.firstPartNameView, "甲方单位:${item.firstParty}") + .setText( + R.id.startDateView, + "签订日期:${item.estimateSignDate.formatToYearMonthDay()}" + ) + if (item.statusName.contains("已完成")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.green.convertColor(requireContext()) + ) + } else if (item.statusName.contains("未完成")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.red.convertColor(requireContext()) + ) + } else if (item.statusName.contains("已废止")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.gray.convertColor(requireContext()) + ) + } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + requireContext().navigatePageTo(item.id) + } } } contractRecordsRecyclerView.addItemDecoration( diff --git a/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java new file mode 100644 index 0000000..d531c95 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java @@ -0,0 +1,121 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class CertificateRecordsModel { + + 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 certificationClass; + private String certificationClassName; + private String certificationCode; + private String certificationId; + private String certificationName; + private String effectiveDate; + private String expirationDate; + + public String getCertificationClass() { + return certificationClass; + } + + public void setCertificationClass(String certificationClass) { + this.certificationClass = certificationClass; + } + + public String getCertificationClassName() { + return certificationClassName; + } + + public void setCertificationClassName(String certificationClassName) { + this.certificationClassName = certificationClassName; + } + + public String getCertificationCode() { + return certificationCode; + } + + public void setCertificationCode(String certificationCode) { + this.certificationCode = certificationCode; + } + + public String getCertificationId() { + return certificationId; + } + + public void setCertificationId(String certificationId) { + this.certificationId = certificationId; + } + + public String getCertificationName() { + return certificationName; + } + + public void setCertificationName(String certificationName) { + this.certificationName = certificationName; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getExpirationDate() { + return expirationDate; + } + + public void setExpirationDate(String expirationDate) { + this.expirationDate = expirationDate; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java deleted file mode 100644 index 6fc7098..0000000 --- a/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.xz.meterage.model; - -import java.util.List; - -public class ContractRecordsModel { - - 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 acompanyDutyman; - private String contractCode; - private int contractId; - private String contractName; - private String contractPrice; - private String contractStatus; - private String contractStatusName; - private String contractTime; - - public String getAcompanyDutyman() { - return acompanyDutyman; - } - - public void setAcompanyDutyman(String acompanyDutyman) { - this.acompanyDutyman = acompanyDutyman; - } - - public String getContractCode() { - return contractCode; - } - - public void setContractCode(String contractCode) { - this.contractCode = contractCode; - } - - public int getContractId() { - return contractId; - } - - public void setContractId(int contractId) { - this.contractId = contractId; - } - - public String getContractName() { - return contractName; - } - - public void setContractName(String contractName) { - this.contractName = contractName; - } - - public String getContractPrice() { - return contractPrice; - } - - public void setContractPrice(String contractPrice) { - this.contractPrice = contractPrice; - } - - public String getContractStatus() { - return contractStatus; - } - - public void setContractStatus(String contractStatus) { - this.contractStatus = contractStatus; - } - - public String getContractStatusName() { - return contractStatusName; - } - - public void setContractStatusName(String contractStatusName) { - this.contractStatusName = contractStatusName; - } - - public String getContractTime() { - return contractTime; - } - - public void setContractTime(String contractTime) { - this.contractTime = contractTime; - } - } - } -} 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 5ed35b6..7dccf6d 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,20 +1,86 @@ package com.casic.xz.meterage.fragment.customer +import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateRecordsModel +import com.casic.xz.meterage.utils.DividerItemDecoration 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.dp2px +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_customer_certificate.* +import kotlinx.android.synthetic.main.include_empty_view.* class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel + private lateinit var certificateAdapter: 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.certificateRecords.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + certificateLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + certificateLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042701) + } + } } override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateRecordListPageById() + } + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateRecordListPageById() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateRecordListPageById() + } + + private fun getCertificateRecordListPageById() { + customerViewModel.getCertificateRecordListPageById("", customerId, pageIndex) } override fun initLayoutView(): Int = R.layout.fragment_customer_certificate @@ -26,4 +92,47 @@ override fun setupTopBarLayout() { } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023042701 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView.showEmptyPage("无检定证书记录") { + pageIndex = 1 + getCertificateRecordListPageById() + } + } else { + emptyView.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_customer_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CertificateRecordsModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.indexView, ((position + 1).toString())) + .setText(R.id.certificationNameView, item.certificationName) + .setText( + R.id.effectiveDateView, + "发证日期:${item.effectiveDate.formatToYearMonthDay()}" + ).setText( + R.id.certificationCodeView, + "证书编号:${item.certificationCode}" + ) + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(45f.dp2px(requireContext()).toFloat(), 0f) + ) + certificateRecyclerView.adapter = certificateAdapter + } + } + } + } + true + } } \ No newline at end of file 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 e6a6bcc..4ca6a58 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 @@ -4,12 +4,16 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.model.ContractRecordsModel +import com.casic.xz.meterage.model.ContractListModel +import com.casic.xz.meterage.view.home.ContractDetailActivity 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.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_customer_contract_record.* @@ -19,8 +23,8 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel - private lateinit var contractRecordsAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var contractRecordsAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -78,7 +82,19 @@ } private fun getContractRecordListPageById() { - customerViewModel.getContractRecordById(customerId, pageIndex) + customerViewModel.getContractRecordById( + "", + "", + "", + customerId, + "", + "", + arrayOf(), + "", + "", + "", + pageIndex + ) } override fun initLayoutView(): Int = R.layout.fragment_customer_contract_record @@ -105,14 +121,42 @@ } else { emptyView.hide() contractRecordsAdapter = object : - NormalRecyclerAdapter( - R.layout.item_remind_rv_l, dataBeans + NormalRecyclerAdapter( + R.layout.item_contract_rv_l, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: ContractRecordsModel.DataModel.RowsModel + item: ContractListModel.DataModel.RowsModel ) { + viewHolder.setText(R.id.contractNameView, item.agreementName) + .setText(R.id.contractStateView, item.statusName) + .setText(R.id.contractCodeView, "合同编号:${item.agreementNo}") + .setText(R.id.firstPartNameView, "甲方单位:${item.firstParty}") + .setText( + R.id.startDateView, + "签订日期:${item.estimateSignDate.formatToYearMonthDay()}" + ) + if (item.statusName.contains("已完成")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.green.convertColor(requireContext()) + ) + } else if (item.statusName.contains("未完成")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.red.convertColor(requireContext()) + ) + } else if (item.statusName.contains("已废止")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.gray.convertColor(requireContext()) + ) + } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + requireContext().navigatePageTo(item.id) + } } } contractRecordsRecyclerView.addItemDecoration( diff --git a/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java new file mode 100644 index 0000000..d531c95 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java @@ -0,0 +1,121 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class CertificateRecordsModel { + + 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 certificationClass; + private String certificationClassName; + private String certificationCode; + private String certificationId; + private String certificationName; + private String effectiveDate; + private String expirationDate; + + public String getCertificationClass() { + return certificationClass; + } + + public void setCertificationClass(String certificationClass) { + this.certificationClass = certificationClass; + } + + public String getCertificationClassName() { + return certificationClassName; + } + + public void setCertificationClassName(String certificationClassName) { + this.certificationClassName = certificationClassName; + } + + public String getCertificationCode() { + return certificationCode; + } + + public void setCertificationCode(String certificationCode) { + this.certificationCode = certificationCode; + } + + public String getCertificationId() { + return certificationId; + } + + public void setCertificationId(String certificationId) { + this.certificationId = certificationId; + } + + public String getCertificationName() { + return certificationName; + } + + public void setCertificationName(String certificationName) { + this.certificationName = certificationName; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getExpirationDate() { + return expirationDate; + } + + public void setExpirationDate(String expirationDate) { + this.expirationDate = expirationDate; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java deleted file mode 100644 index 6fc7098..0000000 --- a/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.xz.meterage.model; - -import java.util.List; - -public class ContractRecordsModel { - - 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 acompanyDutyman; - private String contractCode; - private int contractId; - private String contractName; - private String contractPrice; - private String contractStatus; - private String contractStatusName; - private String contractTime; - - public String getAcompanyDutyman() { - return acompanyDutyman; - } - - public void setAcompanyDutyman(String acompanyDutyman) { - this.acompanyDutyman = acompanyDutyman; - } - - public String getContractCode() { - return contractCode; - } - - public void setContractCode(String contractCode) { - this.contractCode = contractCode; - } - - public int getContractId() { - return contractId; - } - - public void setContractId(int contractId) { - this.contractId = contractId; - } - - public String getContractName() { - return contractName; - } - - public void setContractName(String contractName) { - this.contractName = contractName; - } - - public String getContractPrice() { - return contractPrice; - } - - public void setContractPrice(String contractPrice) { - this.contractPrice = contractPrice; - } - - public String getContractStatus() { - return contractStatus; - } - - public void setContractStatus(String contractStatus) { - this.contractStatus = contractStatus; - } - - public String getContractStatusName() { - return contractStatusName; - } - - public void setContractStatusName(String contractStatusName) { - this.contractStatusName = contractStatusName; - } - - public String getContractTime() { - return contractTime; - } - - public void setContractTime(String contractTime) { - this.contractTime = contractTime; - } - } - } -} 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 0930c8e..f0d238d 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 @@ -264,7 +264,7 @@ /** * 获取客户合同记录 */ - @POST("/customer/contractRecords") + @POST("/finance/agreement/listPage") suspend fun getContractRecordById( @Header("token") token: String, @Body requestBody: RequestBody, @@ -273,6 +273,17 @@ ): String /** + * 获取客户样品检定证书记录 + */ + @POST("/business/certificateReport/certificateRecordsById") + suspend fun getCertificateRecordListPageById( + @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 5ed35b6..7dccf6d 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,20 +1,86 @@ package com.casic.xz.meterage.fragment.customer +import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateRecordsModel +import com.casic.xz.meterage.utils.DividerItemDecoration 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.dp2px +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_customer_certificate.* +import kotlinx.android.synthetic.main.include_empty_view.* class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel + private lateinit var certificateAdapter: 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.certificateRecords.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + certificateLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + certificateLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042701) + } + } } override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateRecordListPageById() + } + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateRecordListPageById() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateRecordListPageById() + } + + private fun getCertificateRecordListPageById() { + customerViewModel.getCertificateRecordListPageById("", customerId, pageIndex) } override fun initLayoutView(): Int = R.layout.fragment_customer_certificate @@ -26,4 +92,47 @@ override fun setupTopBarLayout() { } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023042701 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView.showEmptyPage("无检定证书记录") { + pageIndex = 1 + getCertificateRecordListPageById() + } + } else { + emptyView.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_customer_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CertificateRecordsModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.indexView, ((position + 1).toString())) + .setText(R.id.certificationNameView, item.certificationName) + .setText( + R.id.effectiveDateView, + "发证日期:${item.effectiveDate.formatToYearMonthDay()}" + ).setText( + R.id.certificationCodeView, + "证书编号:${item.certificationCode}" + ) + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(45f.dp2px(requireContext()).toFloat(), 0f) + ) + certificateRecyclerView.adapter = certificateAdapter + } + } + } + } + true + } } \ No newline at end of file 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 e6a6bcc..4ca6a58 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 @@ -4,12 +4,16 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.model.ContractRecordsModel +import com.casic.xz.meterage.model.ContractListModel +import com.casic.xz.meterage.view.home.ContractDetailActivity 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.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_customer_contract_record.* @@ -19,8 +23,8 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel - private lateinit var contractRecordsAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var contractRecordsAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -78,7 +82,19 @@ } private fun getContractRecordListPageById() { - customerViewModel.getContractRecordById(customerId, pageIndex) + customerViewModel.getContractRecordById( + "", + "", + "", + customerId, + "", + "", + arrayOf(), + "", + "", + "", + pageIndex + ) } override fun initLayoutView(): Int = R.layout.fragment_customer_contract_record @@ -105,14 +121,42 @@ } else { emptyView.hide() contractRecordsAdapter = object : - NormalRecyclerAdapter( - R.layout.item_remind_rv_l, dataBeans + NormalRecyclerAdapter( + R.layout.item_contract_rv_l, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: ContractRecordsModel.DataModel.RowsModel + item: ContractListModel.DataModel.RowsModel ) { + viewHolder.setText(R.id.contractNameView, item.agreementName) + .setText(R.id.contractStateView, item.statusName) + .setText(R.id.contractCodeView, "合同编号:${item.agreementNo}") + .setText(R.id.firstPartNameView, "甲方单位:${item.firstParty}") + .setText( + R.id.startDateView, + "签订日期:${item.estimateSignDate.formatToYearMonthDay()}" + ) + if (item.statusName.contains("已完成")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.green.convertColor(requireContext()) + ) + } else if (item.statusName.contains("未完成")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.red.convertColor(requireContext()) + ) + } else if (item.statusName.contains("已废止")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.gray.convertColor(requireContext()) + ) + } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + requireContext().navigatePageTo(item.id) + } } } contractRecordsRecyclerView.addItemDecoration( diff --git a/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java new file mode 100644 index 0000000..d531c95 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java @@ -0,0 +1,121 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class CertificateRecordsModel { + + 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 certificationClass; + private String certificationClassName; + private String certificationCode; + private String certificationId; + private String certificationName; + private String effectiveDate; + private String expirationDate; + + public String getCertificationClass() { + return certificationClass; + } + + public void setCertificationClass(String certificationClass) { + this.certificationClass = certificationClass; + } + + public String getCertificationClassName() { + return certificationClassName; + } + + public void setCertificationClassName(String certificationClassName) { + this.certificationClassName = certificationClassName; + } + + public String getCertificationCode() { + return certificationCode; + } + + public void setCertificationCode(String certificationCode) { + this.certificationCode = certificationCode; + } + + public String getCertificationId() { + return certificationId; + } + + public void setCertificationId(String certificationId) { + this.certificationId = certificationId; + } + + public String getCertificationName() { + return certificationName; + } + + public void setCertificationName(String certificationName) { + this.certificationName = certificationName; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getExpirationDate() { + return expirationDate; + } + + public void setExpirationDate(String expirationDate) { + this.expirationDate = expirationDate; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java deleted file mode 100644 index 6fc7098..0000000 --- a/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.xz.meterage.model; - -import java.util.List; - -public class ContractRecordsModel { - - 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 acompanyDutyman; - private String contractCode; - private int contractId; - private String contractName; - private String contractPrice; - private String contractStatus; - private String contractStatusName; - private String contractTime; - - public String getAcompanyDutyman() { - return acompanyDutyman; - } - - public void setAcompanyDutyman(String acompanyDutyman) { - this.acompanyDutyman = acompanyDutyman; - } - - public String getContractCode() { - return contractCode; - } - - public void setContractCode(String contractCode) { - this.contractCode = contractCode; - } - - public int getContractId() { - return contractId; - } - - public void setContractId(int contractId) { - this.contractId = contractId; - } - - public String getContractName() { - return contractName; - } - - public void setContractName(String contractName) { - this.contractName = contractName; - } - - public String getContractPrice() { - return contractPrice; - } - - public void setContractPrice(String contractPrice) { - this.contractPrice = contractPrice; - } - - public String getContractStatus() { - return contractStatus; - } - - public void setContractStatus(String contractStatus) { - this.contractStatus = contractStatus; - } - - public String getContractStatusName() { - return contractStatusName; - } - - public void setContractStatusName(String contractStatusName) { - this.contractStatusName = contractStatusName; - } - - public String getContractTime() { - return contractTime; - } - - public void setContractTime(String contractTime) { - this.contractTime = contractTime; - } - } - } -} 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 0930c8e..f0d238d 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 @@ -264,7 +264,7 @@ /** * 获取客户合同记录 */ - @POST("/customer/contractRecords") + @POST("/finance/agreement/listPage") suspend fun getContractRecordById( @Header("token") token: String, @Body requestBody: RequestBody, @@ -273,6 +273,17 @@ ): String /** + * 获取客户样品检定证书记录 + */ + @POST("/business/certificateReport/certificateRecordsById") + suspend fun getCertificateRecordListPageById( + @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 af7851e..478b16c 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 @@ -596,9 +596,32 @@ /** * 获取客户合同记录 */ - suspend fun getContractRecordById(id: String, offset: Int): String { + suspend fun getContractRecordById( + agreementType: String, + agreementNo: String, + agreementName: String, + customerId: String, + estimateSignEndDate: String, + firstParty: String, + ids: Array, + estimateSignStartDate: String, + agreementKind: String, + status: String, + offset: Int + ): String { val param = JsonObject() - param.addProperty("id", id) + param.addProperty("formId", LocaleConstant.CONTRACT_FORM_ID) + param.addProperty("agreementType", agreementType) + param.addProperty("agreementNo", agreementNo) + param.addProperty("agreementName", agreementName) + param.addProperty("customerId", customerId) + param.addProperty("estimateSignEndDate", estimateSignEndDate) + param.addProperty("firstParty", firstParty) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("estimateSignStartDate", estimateSignStartDate) + param.addProperty("agreementKind", agreementKind) + param.addProperty("status", status) + val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) @@ -614,6 +637,30 @@ } /** + * 获取客户样品检定证书记录 + */ + suspend fun getCertificateRecordListPageById( + sampleId: String, customerId: String, offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleId", sampleId) + param.addProperty("customerId", customerId) + + 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.getCertificateRecordListPageById( + 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 5ed35b6..7dccf6d 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,20 +1,86 @@ package com.casic.xz.meterage.fragment.customer +import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateRecordsModel +import com.casic.xz.meterage.utils.DividerItemDecoration 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.dp2px +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_customer_certificate.* +import kotlinx.android.synthetic.main.include_empty_view.* class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel + private lateinit var certificateAdapter: 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.certificateRecords.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + certificateLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + certificateLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042701) + } + } } override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateRecordListPageById() + } + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateRecordListPageById() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateRecordListPageById() + } + + private fun getCertificateRecordListPageById() { + customerViewModel.getCertificateRecordListPageById("", customerId, pageIndex) } override fun initLayoutView(): Int = R.layout.fragment_customer_certificate @@ -26,4 +92,47 @@ override fun setupTopBarLayout() { } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023042701 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView.showEmptyPage("无检定证书记录") { + pageIndex = 1 + getCertificateRecordListPageById() + } + } else { + emptyView.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_customer_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CertificateRecordsModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.indexView, ((position + 1).toString())) + .setText(R.id.certificationNameView, item.certificationName) + .setText( + R.id.effectiveDateView, + "发证日期:${item.effectiveDate.formatToYearMonthDay()}" + ).setText( + R.id.certificationCodeView, + "证书编号:${item.certificationCode}" + ) + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(45f.dp2px(requireContext()).toFloat(), 0f) + ) + certificateRecyclerView.adapter = certificateAdapter + } + } + } + } + true + } } \ No newline at end of file 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 e6a6bcc..4ca6a58 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 @@ -4,12 +4,16 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.model.ContractRecordsModel +import com.casic.xz.meterage.model.ContractListModel +import com.casic.xz.meterage.view.home.ContractDetailActivity 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.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_customer_contract_record.* @@ -19,8 +23,8 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel - private lateinit var contractRecordsAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var contractRecordsAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -78,7 +82,19 @@ } private fun getContractRecordListPageById() { - customerViewModel.getContractRecordById(customerId, pageIndex) + customerViewModel.getContractRecordById( + "", + "", + "", + customerId, + "", + "", + arrayOf(), + "", + "", + "", + pageIndex + ) } override fun initLayoutView(): Int = R.layout.fragment_customer_contract_record @@ -105,14 +121,42 @@ } else { emptyView.hide() contractRecordsAdapter = object : - NormalRecyclerAdapter( - R.layout.item_remind_rv_l, dataBeans + NormalRecyclerAdapter( + R.layout.item_contract_rv_l, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: ContractRecordsModel.DataModel.RowsModel + item: ContractListModel.DataModel.RowsModel ) { + viewHolder.setText(R.id.contractNameView, item.agreementName) + .setText(R.id.contractStateView, item.statusName) + .setText(R.id.contractCodeView, "合同编号:${item.agreementNo}") + .setText(R.id.firstPartNameView, "甲方单位:${item.firstParty}") + .setText( + R.id.startDateView, + "签订日期:${item.estimateSignDate.formatToYearMonthDay()}" + ) + if (item.statusName.contains("已完成")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.green.convertColor(requireContext()) + ) + } else if (item.statusName.contains("未完成")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.red.convertColor(requireContext()) + ) + } else if (item.statusName.contains("已废止")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.gray.convertColor(requireContext()) + ) + } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + requireContext().navigatePageTo(item.id) + } } } contractRecordsRecyclerView.addItemDecoration( diff --git a/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java new file mode 100644 index 0000000..d531c95 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java @@ -0,0 +1,121 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class CertificateRecordsModel { + + 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 certificationClass; + private String certificationClassName; + private String certificationCode; + private String certificationId; + private String certificationName; + private String effectiveDate; + private String expirationDate; + + public String getCertificationClass() { + return certificationClass; + } + + public void setCertificationClass(String certificationClass) { + this.certificationClass = certificationClass; + } + + public String getCertificationClassName() { + return certificationClassName; + } + + public void setCertificationClassName(String certificationClassName) { + this.certificationClassName = certificationClassName; + } + + public String getCertificationCode() { + return certificationCode; + } + + public void setCertificationCode(String certificationCode) { + this.certificationCode = certificationCode; + } + + public String getCertificationId() { + return certificationId; + } + + public void setCertificationId(String certificationId) { + this.certificationId = certificationId; + } + + public String getCertificationName() { + return certificationName; + } + + public void setCertificationName(String certificationName) { + this.certificationName = certificationName; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getExpirationDate() { + return expirationDate; + } + + public void setExpirationDate(String expirationDate) { + this.expirationDate = expirationDate; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java deleted file mode 100644 index 6fc7098..0000000 --- a/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.xz.meterage.model; - -import java.util.List; - -public class ContractRecordsModel { - - 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 acompanyDutyman; - private String contractCode; - private int contractId; - private String contractName; - private String contractPrice; - private String contractStatus; - private String contractStatusName; - private String contractTime; - - public String getAcompanyDutyman() { - return acompanyDutyman; - } - - public void setAcompanyDutyman(String acompanyDutyman) { - this.acompanyDutyman = acompanyDutyman; - } - - public String getContractCode() { - return contractCode; - } - - public void setContractCode(String contractCode) { - this.contractCode = contractCode; - } - - public int getContractId() { - return contractId; - } - - public void setContractId(int contractId) { - this.contractId = contractId; - } - - public String getContractName() { - return contractName; - } - - public void setContractName(String contractName) { - this.contractName = contractName; - } - - public String getContractPrice() { - return contractPrice; - } - - public void setContractPrice(String contractPrice) { - this.contractPrice = contractPrice; - } - - public String getContractStatus() { - return contractStatus; - } - - public void setContractStatus(String contractStatus) { - this.contractStatus = contractStatus; - } - - public String getContractStatusName() { - return contractStatusName; - } - - public void setContractStatusName(String contractStatusName) { - this.contractStatusName = contractStatusName; - } - - public String getContractTime() { - return contractTime; - } - - public void setContractTime(String contractTime) { - this.contractTime = contractTime; - } - } - } -} 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 0930c8e..f0d238d 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 @@ -264,7 +264,7 @@ /** * 获取客户合同记录 */ - @POST("/customer/contractRecords") + @POST("/finance/agreement/listPage") suspend fun getContractRecordById( @Header("token") token: String, @Body requestBody: RequestBody, @@ -273,6 +273,17 @@ ): String /** + * 获取客户样品检定证书记录 + */ + @POST("/business/certificateReport/certificateRecordsById") + suspend fun getCertificateRecordListPageById( + @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 af7851e..478b16c 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 @@ -596,9 +596,32 @@ /** * 获取客户合同记录 */ - suspend fun getContractRecordById(id: String, offset: Int): String { + suspend fun getContractRecordById( + agreementType: String, + agreementNo: String, + agreementName: String, + customerId: String, + estimateSignEndDate: String, + firstParty: String, + ids: Array, + estimateSignStartDate: String, + agreementKind: String, + status: String, + offset: Int + ): String { val param = JsonObject() - param.addProperty("id", id) + param.addProperty("formId", LocaleConstant.CONTRACT_FORM_ID) + param.addProperty("agreementType", agreementType) + param.addProperty("agreementNo", agreementNo) + param.addProperty("agreementName", agreementName) + param.addProperty("customerId", customerId) + param.addProperty("estimateSignEndDate", estimateSignEndDate) + param.addProperty("firstParty", firstParty) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("estimateSignStartDate", estimateSignStartDate) + param.addProperty("agreementKind", agreementKind) + param.addProperty("status", status) + val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) @@ -614,6 +637,30 @@ } /** + * 获取客户样品检定证书记录 + */ + suspend fun getCertificateRecordListPageById( + sampleId: String, customerId: String, offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleId", sampleId) + param.addProperty("customerId", customerId) + + 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.getCertificateRecordListPageById( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** * 获取计量人员列表 */ suspend fun getStaffList(id: String): String { 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 75976b2..2516507 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 @@ -4,10 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage -import com.casic.xz.meterage.model.ContractRecordsModel -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.model.* import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -25,7 +22,8 @@ val customerList = MutableLiveData() val customerDetail = MutableLiveData() val sampleRecords = MutableLiveData() - val contractRecords = MutableLiveData() + val contractRecords = MutableLiveData() + val certificateRecords = MutableLiveData() fun getCustomerList( bussinessSize: String, customerName: String, customerNo: String, grade: String, offset: Int @@ -88,14 +86,61 @@ it.printStackTrace() }) - fun getContractRecordById(id: String, offset: Int) = launch({ + fun getContractRecordById( + agreementType: String, + agreementNo: String, + agreementName: String, + customerId: String, + estimateSignEndDate: String, + firstParty: String, + ids: Array, + estimateSignStartDate: String, + agreementKind: String, + status: String, + offset: Int + ) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getContractRecordById(id, offset) + val response = RetrofitServiceManager.getContractRecordById( + agreementType, + agreementNo, + agreementName, + customerId, + estimateSignEndDate, + firstParty, + ids, + estimateSignStartDate, + agreementKind, + status, + offset + ) val responseCode = response.separateResponseCode() if (responseCode == 200) { loadState.value = LoadState.Success - contractRecords.value = gson.fromJson( - response, object : TypeToken() {}.type + contractRecords.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() + }) + + fun getCertificateRecordListPageById( + sampleId: String, customerId: String, offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getCertificateRecordListPageById( + sampleId, customerId, offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + certificateRecords.value = gson.fromJson( + response, object : TypeToken() {}.type ) } else { loadState.value = LoadState.Fail 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 5ed35b6..7dccf6d 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,20 +1,86 @@ package com.casic.xz.meterage.fragment.customer +import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateRecordsModel +import com.casic.xz.meterage.utils.DividerItemDecoration 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.dp2px +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_customer_certificate.* +import kotlinx.android.synthetic.main.include_empty_view.* class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel + private lateinit var certificateAdapter: 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.certificateRecords.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + certificateLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + certificateLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042701) + } + } } override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateRecordListPageById() + } + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateRecordListPageById() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateRecordListPageById() + } + + private fun getCertificateRecordListPageById() { + customerViewModel.getCertificateRecordListPageById("", customerId, pageIndex) } override fun initLayoutView(): Int = R.layout.fragment_customer_certificate @@ -26,4 +92,47 @@ override fun setupTopBarLayout() { } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023042701 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView.showEmptyPage("无检定证书记录") { + pageIndex = 1 + getCertificateRecordListPageById() + } + } else { + emptyView.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_customer_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CertificateRecordsModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.indexView, ((position + 1).toString())) + .setText(R.id.certificationNameView, item.certificationName) + .setText( + R.id.effectiveDateView, + "发证日期:${item.effectiveDate.formatToYearMonthDay()}" + ).setText( + R.id.certificationCodeView, + "证书编号:${item.certificationCode}" + ) + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(45f.dp2px(requireContext()).toFloat(), 0f) + ) + certificateRecyclerView.adapter = certificateAdapter + } + } + } + } + true + } } \ No newline at end of file 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 e6a6bcc..4ca6a58 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 @@ -4,12 +4,16 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.model.ContractRecordsModel +import com.casic.xz.meterage.model.ContractListModel +import com.casic.xz.meterage.view.home.ContractDetailActivity 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.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_customer_contract_record.* @@ -19,8 +23,8 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel - private lateinit var contractRecordsAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var contractRecordsAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -78,7 +82,19 @@ } private fun getContractRecordListPageById() { - customerViewModel.getContractRecordById(customerId, pageIndex) + customerViewModel.getContractRecordById( + "", + "", + "", + customerId, + "", + "", + arrayOf(), + "", + "", + "", + pageIndex + ) } override fun initLayoutView(): Int = R.layout.fragment_customer_contract_record @@ -105,14 +121,42 @@ } else { emptyView.hide() contractRecordsAdapter = object : - NormalRecyclerAdapter( - R.layout.item_remind_rv_l, dataBeans + NormalRecyclerAdapter( + R.layout.item_contract_rv_l, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: ContractRecordsModel.DataModel.RowsModel + item: ContractListModel.DataModel.RowsModel ) { + viewHolder.setText(R.id.contractNameView, item.agreementName) + .setText(R.id.contractStateView, item.statusName) + .setText(R.id.contractCodeView, "合同编号:${item.agreementNo}") + .setText(R.id.firstPartNameView, "甲方单位:${item.firstParty}") + .setText( + R.id.startDateView, + "签订日期:${item.estimateSignDate.formatToYearMonthDay()}" + ) + if (item.statusName.contains("已完成")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.green.convertColor(requireContext()) + ) + } else if (item.statusName.contains("未完成")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.red.convertColor(requireContext()) + ) + } else if (item.statusName.contains("已废止")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.gray.convertColor(requireContext()) + ) + } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + requireContext().navigatePageTo(item.id) + } } } contractRecordsRecyclerView.addItemDecoration( diff --git a/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java new file mode 100644 index 0000000..d531c95 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java @@ -0,0 +1,121 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class CertificateRecordsModel { + + 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 certificationClass; + private String certificationClassName; + private String certificationCode; + private String certificationId; + private String certificationName; + private String effectiveDate; + private String expirationDate; + + public String getCertificationClass() { + return certificationClass; + } + + public void setCertificationClass(String certificationClass) { + this.certificationClass = certificationClass; + } + + public String getCertificationClassName() { + return certificationClassName; + } + + public void setCertificationClassName(String certificationClassName) { + this.certificationClassName = certificationClassName; + } + + public String getCertificationCode() { + return certificationCode; + } + + public void setCertificationCode(String certificationCode) { + this.certificationCode = certificationCode; + } + + public String getCertificationId() { + return certificationId; + } + + public void setCertificationId(String certificationId) { + this.certificationId = certificationId; + } + + public String getCertificationName() { + return certificationName; + } + + public void setCertificationName(String certificationName) { + this.certificationName = certificationName; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getExpirationDate() { + return expirationDate; + } + + public void setExpirationDate(String expirationDate) { + this.expirationDate = expirationDate; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java deleted file mode 100644 index 6fc7098..0000000 --- a/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.xz.meterage.model; - -import java.util.List; - -public class ContractRecordsModel { - - 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 acompanyDutyman; - private String contractCode; - private int contractId; - private String contractName; - private String contractPrice; - private String contractStatus; - private String contractStatusName; - private String contractTime; - - public String getAcompanyDutyman() { - return acompanyDutyman; - } - - public void setAcompanyDutyman(String acompanyDutyman) { - this.acompanyDutyman = acompanyDutyman; - } - - public String getContractCode() { - return contractCode; - } - - public void setContractCode(String contractCode) { - this.contractCode = contractCode; - } - - public int getContractId() { - return contractId; - } - - public void setContractId(int contractId) { - this.contractId = contractId; - } - - public String getContractName() { - return contractName; - } - - public void setContractName(String contractName) { - this.contractName = contractName; - } - - public String getContractPrice() { - return contractPrice; - } - - public void setContractPrice(String contractPrice) { - this.contractPrice = contractPrice; - } - - public String getContractStatus() { - return contractStatus; - } - - public void setContractStatus(String contractStatus) { - this.contractStatus = contractStatus; - } - - public String getContractStatusName() { - return contractStatusName; - } - - public void setContractStatusName(String contractStatusName) { - this.contractStatusName = contractStatusName; - } - - public String getContractTime() { - return contractTime; - } - - public void setContractTime(String contractTime) { - this.contractTime = contractTime; - } - } - } -} 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 0930c8e..f0d238d 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 @@ -264,7 +264,7 @@ /** * 获取客户合同记录 */ - @POST("/customer/contractRecords") + @POST("/finance/agreement/listPage") suspend fun getContractRecordById( @Header("token") token: String, @Body requestBody: RequestBody, @@ -273,6 +273,17 @@ ): String /** + * 获取客户样品检定证书记录 + */ + @POST("/business/certificateReport/certificateRecordsById") + suspend fun getCertificateRecordListPageById( + @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 af7851e..478b16c 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 @@ -596,9 +596,32 @@ /** * 获取客户合同记录 */ - suspend fun getContractRecordById(id: String, offset: Int): String { + suspend fun getContractRecordById( + agreementType: String, + agreementNo: String, + agreementName: String, + customerId: String, + estimateSignEndDate: String, + firstParty: String, + ids: Array, + estimateSignStartDate: String, + agreementKind: String, + status: String, + offset: Int + ): String { val param = JsonObject() - param.addProperty("id", id) + param.addProperty("formId", LocaleConstant.CONTRACT_FORM_ID) + param.addProperty("agreementType", agreementType) + param.addProperty("agreementNo", agreementNo) + param.addProperty("agreementName", agreementName) + param.addProperty("customerId", customerId) + param.addProperty("estimateSignEndDate", estimateSignEndDate) + param.addProperty("firstParty", firstParty) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("estimateSignStartDate", estimateSignStartDate) + param.addProperty("agreementKind", agreementKind) + param.addProperty("status", status) + val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) @@ -614,6 +637,30 @@ } /** + * 获取客户样品检定证书记录 + */ + suspend fun getCertificateRecordListPageById( + sampleId: String, customerId: String, offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleId", sampleId) + param.addProperty("customerId", customerId) + + 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.getCertificateRecordListPageById( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** * 获取计量人员列表 */ suspend fun getStaffList(id: String): String { 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 75976b2..2516507 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 @@ -4,10 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage -import com.casic.xz.meterage.model.ContractRecordsModel -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.model.* import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -25,7 +22,8 @@ val customerList = MutableLiveData() val customerDetail = MutableLiveData() val sampleRecords = MutableLiveData() - val contractRecords = MutableLiveData() + val contractRecords = MutableLiveData() + val certificateRecords = MutableLiveData() fun getCustomerList( bussinessSize: String, customerName: String, customerNo: String, grade: String, offset: Int @@ -88,14 +86,61 @@ it.printStackTrace() }) - fun getContractRecordById(id: String, offset: Int) = launch({ + fun getContractRecordById( + agreementType: String, + agreementNo: String, + agreementName: String, + customerId: String, + estimateSignEndDate: String, + firstParty: String, + ids: Array, + estimateSignStartDate: String, + agreementKind: String, + status: String, + offset: Int + ) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getContractRecordById(id, offset) + val response = RetrofitServiceManager.getContractRecordById( + agreementType, + agreementNo, + agreementName, + customerId, + estimateSignEndDate, + firstParty, + ids, + estimateSignStartDate, + agreementKind, + status, + offset + ) val responseCode = response.separateResponseCode() if (responseCode == 200) { loadState.value = LoadState.Success - contractRecords.value = gson.fromJson( - response, object : TypeToken() {}.type + contractRecords.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() + }) + + fun getCertificateRecordListPageById( + sampleId: String, customerId: String, offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getCertificateRecordListPageById( + sampleId, customerId, offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + certificateRecords.value = gson.fromJson( + response, object : TypeToken() {}.type ) } else { loadState.value = LoadState.Fail diff --git a/app/src/main/res/layout/fragment_customer_certificate.xml b/app/src/main/res/layout/fragment_customer_certificate.xml index 3728533..cb3e9ab 100644 --- a/app/src/main/res/layout/fragment_customer_certificate.xml +++ b/app/src/main/res/layout/fragment_customer_certificate.xml @@ -1,7 +1,37 @@ - + android:background="@color/white" + android:orientation="vertical"> - \ No newline at end of file + + + + + + + + + + + + + + \ 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 5ed35b6..7dccf6d 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,20 +1,86 @@ package com.casic.xz.meterage.fragment.customer +import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateRecordsModel +import com.casic.xz.meterage.utils.DividerItemDecoration 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.dp2px +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_customer_certificate.* +import kotlinx.android.synthetic.main.include_empty_view.* class CertificateFragment(private val customerId: String) : KotlinBaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel + private lateinit var certificateAdapter: 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.certificateRecords.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + certificateLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + certificateLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042701) + } + } } override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateRecordListPageById() + } + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateRecordListPageById() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateRecordListPageById() + } + + private fun getCertificateRecordListPageById() { + customerViewModel.getCertificateRecordListPageById("", customerId, pageIndex) } override fun initLayoutView(): Int = R.layout.fragment_customer_certificate @@ -26,4 +92,47 @@ override fun setupTopBarLayout() { } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023042701 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView.showEmptyPage("无检定证书记录") { + pageIndex = 1 + getCertificateRecordListPageById() + } + } else { + emptyView.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_customer_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CertificateRecordsModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.indexView, ((position + 1).toString())) + .setText(R.id.certificationNameView, item.certificationName) + .setText( + R.id.effectiveDateView, + "发证日期:${item.effectiveDate.formatToYearMonthDay()}" + ).setText( + R.id.certificationCodeView, + "证书编号:${item.certificationCode}" + ) + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(45f.dp2px(requireContext()).toFloat(), 0f) + ) + certificateRecyclerView.adapter = certificateAdapter + } + } + } + } + true + } } \ No newline at end of file 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 e6a6bcc..4ca6a58 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 @@ -4,12 +4,16 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.model.ContractRecordsModel +import com.casic.xz.meterage.model.ContractListModel +import com.casic.xz.meterage.view.home.ContractDetailActivity 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.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_customer_contract_record.* @@ -19,8 +23,8 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var customerViewModel: CustomerViewModel - private lateinit var contractRecordsAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var contractRecordsAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -78,7 +82,19 @@ } private fun getContractRecordListPageById() { - customerViewModel.getContractRecordById(customerId, pageIndex) + customerViewModel.getContractRecordById( + "", + "", + "", + customerId, + "", + "", + arrayOf(), + "", + "", + "", + pageIndex + ) } override fun initLayoutView(): Int = R.layout.fragment_customer_contract_record @@ -105,14 +121,42 @@ } else { emptyView.hide() contractRecordsAdapter = object : - NormalRecyclerAdapter( - R.layout.item_remind_rv_l, dataBeans + NormalRecyclerAdapter( + R.layout.item_contract_rv_l, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: ContractRecordsModel.DataModel.RowsModel + item: ContractListModel.DataModel.RowsModel ) { + viewHolder.setText(R.id.contractNameView, item.agreementName) + .setText(R.id.contractStateView, item.statusName) + .setText(R.id.contractCodeView, "合同编号:${item.agreementNo}") + .setText(R.id.firstPartNameView, "甲方单位:${item.firstParty}") + .setText( + R.id.startDateView, + "签订日期:${item.estimateSignDate.formatToYearMonthDay()}" + ) + if (item.statusName.contains("已完成")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.green.convertColor(requireContext()) + ) + } else if (item.statusName.contains("未完成")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.red.convertColor(requireContext()) + ) + } else if (item.statusName.contains("已废止")) { + viewHolder.setBackgroundColor( + R.id.contractStateView, + R.color.gray.convertColor(requireContext()) + ) + } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + requireContext().navigatePageTo(item.id) + } } } contractRecordsRecyclerView.addItemDecoration( diff --git a/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java new file mode 100644 index 0000000..d531c95 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/CertificateRecordsModel.java @@ -0,0 +1,121 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class CertificateRecordsModel { + + 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 certificationClass; + private String certificationClassName; + private String certificationCode; + private String certificationId; + private String certificationName; + private String effectiveDate; + private String expirationDate; + + public String getCertificationClass() { + return certificationClass; + } + + public void setCertificationClass(String certificationClass) { + this.certificationClass = certificationClass; + } + + public String getCertificationClassName() { + return certificationClassName; + } + + public void setCertificationClassName(String certificationClassName) { + this.certificationClassName = certificationClassName; + } + + public String getCertificationCode() { + return certificationCode; + } + + public void setCertificationCode(String certificationCode) { + this.certificationCode = certificationCode; + } + + public String getCertificationId() { + return certificationId; + } + + public void setCertificationId(String certificationId) { + this.certificationId = certificationId; + } + + public String getCertificationName() { + return certificationName; + } + + public void setCertificationName(String certificationName) { + this.certificationName = certificationName; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getExpirationDate() { + return expirationDate; + } + + public void setExpirationDate(String expirationDate) { + this.expirationDate = expirationDate; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java deleted file mode 100644 index 6fc7098..0000000 --- a/app/src/main/java/com/casic/xz/meterage/model/ContractRecordsModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.xz.meterage.model; - -import java.util.List; - -public class ContractRecordsModel { - - 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 acompanyDutyman; - private String contractCode; - private int contractId; - private String contractName; - private String contractPrice; - private String contractStatus; - private String contractStatusName; - private String contractTime; - - public String getAcompanyDutyman() { - return acompanyDutyman; - } - - public void setAcompanyDutyman(String acompanyDutyman) { - this.acompanyDutyman = acompanyDutyman; - } - - public String getContractCode() { - return contractCode; - } - - public void setContractCode(String contractCode) { - this.contractCode = contractCode; - } - - public int getContractId() { - return contractId; - } - - public void setContractId(int contractId) { - this.contractId = contractId; - } - - public String getContractName() { - return contractName; - } - - public void setContractName(String contractName) { - this.contractName = contractName; - } - - public String getContractPrice() { - return contractPrice; - } - - public void setContractPrice(String contractPrice) { - this.contractPrice = contractPrice; - } - - public String getContractStatus() { - return contractStatus; - } - - public void setContractStatus(String contractStatus) { - this.contractStatus = contractStatus; - } - - public String getContractStatusName() { - return contractStatusName; - } - - public void setContractStatusName(String contractStatusName) { - this.contractStatusName = contractStatusName; - } - - public String getContractTime() { - return contractTime; - } - - public void setContractTime(String contractTime) { - this.contractTime = contractTime; - } - } - } -} 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 0930c8e..f0d238d 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 @@ -264,7 +264,7 @@ /** * 获取客户合同记录 */ - @POST("/customer/contractRecords") + @POST("/finance/agreement/listPage") suspend fun getContractRecordById( @Header("token") token: String, @Body requestBody: RequestBody, @@ -273,6 +273,17 @@ ): String /** + * 获取客户样品检定证书记录 + */ + @POST("/business/certificateReport/certificateRecordsById") + suspend fun getCertificateRecordListPageById( + @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 af7851e..478b16c 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 @@ -596,9 +596,32 @@ /** * 获取客户合同记录 */ - suspend fun getContractRecordById(id: String, offset: Int): String { + suspend fun getContractRecordById( + agreementType: String, + agreementNo: String, + agreementName: String, + customerId: String, + estimateSignEndDate: String, + firstParty: String, + ids: Array, + estimateSignStartDate: String, + agreementKind: String, + status: String, + offset: Int + ): String { val param = JsonObject() - param.addProperty("id", id) + param.addProperty("formId", LocaleConstant.CONTRACT_FORM_ID) + param.addProperty("agreementType", agreementType) + param.addProperty("agreementNo", agreementNo) + param.addProperty("agreementName", agreementName) + param.addProperty("customerId", customerId) + param.addProperty("estimateSignEndDate", estimateSignEndDate) + param.addProperty("firstParty", firstParty) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("estimateSignStartDate", estimateSignStartDate) + param.addProperty("agreementKind", agreementKind) + param.addProperty("status", status) + val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) @@ -614,6 +637,30 @@ } /** + * 获取客户样品检定证书记录 + */ + suspend fun getCertificateRecordListPageById( + sampleId: String, customerId: String, offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleId", sampleId) + param.addProperty("customerId", customerId) + + 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.getCertificateRecordListPageById( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** * 获取计量人员列表 */ suspend fun getStaffList(id: String): String { 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 75976b2..2516507 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 @@ -4,10 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage -import com.casic.xz.meterage.model.ContractRecordsModel -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.model.* import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -25,7 +22,8 @@ val customerList = MutableLiveData() val customerDetail = MutableLiveData() val sampleRecords = MutableLiveData() - val contractRecords = MutableLiveData() + val contractRecords = MutableLiveData() + val certificateRecords = MutableLiveData() fun getCustomerList( bussinessSize: String, customerName: String, customerNo: String, grade: String, offset: Int @@ -88,14 +86,61 @@ it.printStackTrace() }) - fun getContractRecordById(id: String, offset: Int) = launch({ + fun getContractRecordById( + agreementType: String, + agreementNo: String, + agreementName: String, + customerId: String, + estimateSignEndDate: String, + firstParty: String, + ids: Array, + estimateSignStartDate: String, + agreementKind: String, + status: String, + offset: Int + ) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getContractRecordById(id, offset) + val response = RetrofitServiceManager.getContractRecordById( + agreementType, + agreementNo, + agreementName, + customerId, + estimateSignEndDate, + firstParty, + ids, + estimateSignStartDate, + agreementKind, + status, + offset + ) val responseCode = response.separateResponseCode() if (responseCode == 200) { loadState.value = LoadState.Success - contractRecords.value = gson.fromJson( - response, object : TypeToken() {}.type + contractRecords.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() + }) + + fun getCertificateRecordListPageById( + sampleId: String, customerId: String, offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getCertificateRecordListPageById( + sampleId, customerId, offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + certificateRecords.value = gson.fromJson( + response, object : TypeToken() {}.type ) } else { loadState.value = LoadState.Fail diff --git a/app/src/main/res/layout/fragment_customer_certificate.xml b/app/src/main/res/layout/fragment_customer_certificate.xml index 3728533..cb3e9ab 100644 --- a/app/src/main/res/layout/fragment_customer_certificate.xml +++ b/app/src/main/res/layout/fragment_customer_certificate.xml @@ -1,7 +1,37 @@ - + android:background="@color/white" + android:orientation="vertical"> - \ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_customer_certificate_rv_l.xml b/app/src/main/res/layout/item_customer_certificate_rv_l.xml new file mode 100644 index 0000000..0cc36e7 --- /dev/null +++ b/app/src/main/res/layout/item_customer_certificate_rv_l.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file