diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd791fe..c58a8a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,7 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd791fe..c58a8a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt index 8c89dfb..151f951 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt @@ -265,7 +265,7 @@ when (t) { "仪器设备" -> requireContext().navigatePageTo() "标准装置" -> requireContext().navigatePageTo() -// "证书报告" -> requireContext().navigatePageTo() + "证书报告" -> requireContext().navigatePageTo() "委托需求" -> requireContext().navigatePageTo() // "访客" -> requireContext().navigatePageTo() "标准规范" -> requireContext().navigatePageTo() diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd791fe..c58a8a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt index 8c89dfb..151f951 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt @@ -265,7 +265,7 @@ when (t) { "仪器设备" -> requireContext().navigatePageTo() "标准装置" -> requireContext().navigatePageTo() -// "证书报告" -> requireContext().navigatePageTo() + "证书报告" -> requireContext().navigatePageTo() "委托需求" -> requireContext().navigatePageTo() // "访客" -> requireContext().navigatePageTo() "标准规范" -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt new file mode 100644 index 0000000..2f3c95c --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt @@ -0,0 +1,162 @@ +package com.casic.xz.meterage.fragment.certificate + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateModel +import com.casic.xz.meterage.vm.CertificateViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_certificate_report.* +import kotlinx.android.synthetic.main.include_empty_view.* + +/** + * 计量法规 + * + * formId:ywglzsbg + * */ +class CertificateReportFragment(private val status: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var certificateViewModel: CertificateViewModel + 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) + certificateViewModel = ViewModelProvider(this)[CertificateViewModel::class.java] + certificateViewModel.certificateList.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(2023030802) + } + } + } + + override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateReportList() + } + + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateReportList() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateReportList() + } + + private fun getCertificateReportList() { + certificateViewModel.getCertificateReportList( + status, + "", + "", + "", + "", + "", + "", + arrayOf(), + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_certificate_report + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023030802 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无相关证书报告") { + pageIndex = 1 + getCertificateReportList() + } + } else { + emptyView!!.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: CertificateModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.reportNameView, item.certificateReportName) +// .setText(R.id.fileStateView, item.effectiveStatusName) +// .setText(R.id.remarkView, "备注:$remark") +// .setText(R.id.fileCodeView, "文件号:${item.fileNo}") +// .setText(R.id.releaseDateView, "实施时间:${item.publishTime}") +// +// if (!item.effectiveStatus.equals("1")) { +// viewHolder.setBackgroundColor( +// R.id.fileStateView, +// R.color.gray.convertColor(requireContext()) +// ) +// } + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + certificateRecyclerView.adapter = certificateAdapter + certificateAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked( + position: Int, t: CertificateModel.DataModel.RowsModel + ) { +// requireContext().navigatePageTo(t.toJson()) + } + }) + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd791fe..c58a8a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt index 8c89dfb..151f951 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt @@ -265,7 +265,7 @@ when (t) { "仪器设备" -> requireContext().navigatePageTo() "标准装置" -> requireContext().navigatePageTo() -// "证书报告" -> requireContext().navigatePageTo() + "证书报告" -> requireContext().navigatePageTo() "委托需求" -> requireContext().navigatePageTo() // "访客" -> requireContext().navigatePageTo() "标准规范" -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt new file mode 100644 index 0000000..2f3c95c --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt @@ -0,0 +1,162 @@ +package com.casic.xz.meterage.fragment.certificate + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateModel +import com.casic.xz.meterage.vm.CertificateViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_certificate_report.* +import kotlinx.android.synthetic.main.include_empty_view.* + +/** + * 计量法规 + * + * formId:ywglzsbg + * */ +class CertificateReportFragment(private val status: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var certificateViewModel: CertificateViewModel + 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) + certificateViewModel = ViewModelProvider(this)[CertificateViewModel::class.java] + certificateViewModel.certificateList.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(2023030802) + } + } + } + + override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateReportList() + } + + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateReportList() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateReportList() + } + + private fun getCertificateReportList() { + certificateViewModel.getCertificateReportList( + status, + "", + "", + "", + "", + "", + "", + arrayOf(), + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_certificate_report + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023030802 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无相关证书报告") { + pageIndex = 1 + getCertificateReportList() + } + } else { + emptyView!!.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: CertificateModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.reportNameView, item.certificateReportName) +// .setText(R.id.fileStateView, item.effectiveStatusName) +// .setText(R.id.remarkView, "备注:$remark") +// .setText(R.id.fileCodeView, "文件号:${item.fileNo}") +// .setText(R.id.releaseDateView, "实施时间:${item.publishTime}") +// +// if (!item.effectiveStatus.equals("1")) { +// viewHolder.setBackgroundColor( +// R.id.fileStateView, +// R.color.gray.convertColor(requireContext()) +// ) +// } + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + certificateRecyclerView.adapter = certificateAdapter + certificateAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked( + position: Int, t: CertificateModel.DataModel.RowsModel + ) { +// requireContext().navigatePageTo(t.toJson()) + } + }) + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java new file mode 100644 index 0000000..ec0d25b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java @@ -0,0 +1,202 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class CertificateModel { + + 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 approvalStatus; + private String approvalStatusName; + private String calibrationMajor; + private String certificateReportCode; + private String certificateReportName; + private String createTime; + private String decisionItem; + private String id; + private String manufacturingNo; + private String measurePersonId; + private String orderCode; + private String processId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String taskId; + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getApprovalStatusName() { + return approvalStatusName; + } + + public void setApprovalStatusName(String approvalStatusName) { + this.approvalStatusName = approvalStatusName; + } + + public String getCalibrationMajor() { + return calibrationMajor; + } + + public void setCalibrationMajor(String calibrationMajor) { + this.calibrationMajor = calibrationMajor; + } + + public String getCertificateReportCode() { + return certificateReportCode; + } + + public void setCertificateReportCode(String certificateReportCode) { + this.certificateReportCode = certificateReportCode; + } + + public String getCertificateReportName() { + return certificateReportName; + } + + public void setCertificateReportName(String certificateReportName) { + this.certificateReportName = certificateReportName; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getDecisionItem() { + return decisionItem; + } + + public void setDecisionItem(String decisionItem) { + this.decisionItem = decisionItem; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + } + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd791fe..c58a8a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt index 8c89dfb..151f951 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt @@ -265,7 +265,7 @@ when (t) { "仪器设备" -> requireContext().navigatePageTo() "标准装置" -> requireContext().navigatePageTo() -// "证书报告" -> requireContext().navigatePageTo() + "证书报告" -> requireContext().navigatePageTo() "委托需求" -> requireContext().navigatePageTo() // "访客" -> requireContext().navigatePageTo() "标准规范" -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt new file mode 100644 index 0000000..2f3c95c --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt @@ -0,0 +1,162 @@ +package com.casic.xz.meterage.fragment.certificate + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateModel +import com.casic.xz.meterage.vm.CertificateViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_certificate_report.* +import kotlinx.android.synthetic.main.include_empty_view.* + +/** + * 计量法规 + * + * formId:ywglzsbg + * */ +class CertificateReportFragment(private val status: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var certificateViewModel: CertificateViewModel + 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) + certificateViewModel = ViewModelProvider(this)[CertificateViewModel::class.java] + certificateViewModel.certificateList.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(2023030802) + } + } + } + + override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateReportList() + } + + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateReportList() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateReportList() + } + + private fun getCertificateReportList() { + certificateViewModel.getCertificateReportList( + status, + "", + "", + "", + "", + "", + "", + arrayOf(), + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_certificate_report + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023030802 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无相关证书报告") { + pageIndex = 1 + getCertificateReportList() + } + } else { + emptyView!!.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: CertificateModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.reportNameView, item.certificateReportName) +// .setText(R.id.fileStateView, item.effectiveStatusName) +// .setText(R.id.remarkView, "备注:$remark") +// .setText(R.id.fileCodeView, "文件号:${item.fileNo}") +// .setText(R.id.releaseDateView, "实施时间:${item.publishTime}") +// +// if (!item.effectiveStatus.equals("1")) { +// viewHolder.setBackgroundColor( +// R.id.fileStateView, +// R.color.gray.convertColor(requireContext()) +// ) +// } + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + certificateRecyclerView.adapter = certificateAdapter + certificateAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked( + position: Int, t: CertificateModel.DataModel.RowsModel + ) { +// requireContext().navigatePageTo(t.toJson()) + } + }) + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java new file mode 100644 index 0000000..ec0d25b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java @@ -0,0 +1,202 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class CertificateModel { + + 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 approvalStatus; + private String approvalStatusName; + private String calibrationMajor; + private String certificateReportCode; + private String certificateReportName; + private String createTime; + private String decisionItem; + private String id; + private String manufacturingNo; + private String measurePersonId; + private String orderCode; + private String processId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String taskId; + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getApprovalStatusName() { + return approvalStatusName; + } + + public void setApprovalStatusName(String approvalStatusName) { + this.approvalStatusName = approvalStatusName; + } + + public String getCalibrationMajor() { + return calibrationMajor; + } + + public void setCalibrationMajor(String calibrationMajor) { + this.calibrationMajor = calibrationMajor; + } + + public String getCertificateReportCode() { + return certificateReportCode; + } + + public void setCertificateReportCode(String certificateReportCode) { + this.certificateReportCode = certificateReportCode; + } + + public String getCertificateReportName() { + return certificateReportName; + } + + public void setCertificateReportName(String certificateReportName) { + this.certificateReportName = certificateReportName; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getDecisionItem() { + return decisionItem; + } + + public void setDecisionItem(String decisionItem) { + this.decisionItem = decisionItem; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 1c6a830..2d50d0a 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -61,7 +61,4 @@ const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" - - //计量文件表单ID - const val FORM_ID = "jlglwjsp" } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd791fe..c58a8a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt index 8c89dfb..151f951 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt @@ -265,7 +265,7 @@ when (t) { "仪器设备" -> requireContext().navigatePageTo() "标准装置" -> requireContext().navigatePageTo() -// "证书报告" -> requireContext().navigatePageTo() + "证书报告" -> requireContext().navigatePageTo() "委托需求" -> requireContext().navigatePageTo() // "访客" -> requireContext().navigatePageTo() "标准规范" -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt new file mode 100644 index 0000000..2f3c95c --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt @@ -0,0 +1,162 @@ +package com.casic.xz.meterage.fragment.certificate + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateModel +import com.casic.xz.meterage.vm.CertificateViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_certificate_report.* +import kotlinx.android.synthetic.main.include_empty_view.* + +/** + * 计量法规 + * + * formId:ywglzsbg + * */ +class CertificateReportFragment(private val status: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var certificateViewModel: CertificateViewModel + 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) + certificateViewModel = ViewModelProvider(this)[CertificateViewModel::class.java] + certificateViewModel.certificateList.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(2023030802) + } + } + } + + override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateReportList() + } + + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateReportList() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateReportList() + } + + private fun getCertificateReportList() { + certificateViewModel.getCertificateReportList( + status, + "", + "", + "", + "", + "", + "", + arrayOf(), + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_certificate_report + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023030802 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无相关证书报告") { + pageIndex = 1 + getCertificateReportList() + } + } else { + emptyView!!.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: CertificateModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.reportNameView, item.certificateReportName) +// .setText(R.id.fileStateView, item.effectiveStatusName) +// .setText(R.id.remarkView, "备注:$remark") +// .setText(R.id.fileCodeView, "文件号:${item.fileNo}") +// .setText(R.id.releaseDateView, "实施时间:${item.publishTime}") +// +// if (!item.effectiveStatus.equals("1")) { +// viewHolder.setBackgroundColor( +// R.id.fileStateView, +// R.color.gray.convertColor(requireContext()) +// ) +// } + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + certificateRecyclerView.adapter = certificateAdapter + certificateAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked( + position: Int, t: CertificateModel.DataModel.RowsModel + ) { +// requireContext().navigatePageTo(t.toJson()) + } + }) + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java new file mode 100644 index 0000000..ec0d25b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java @@ -0,0 +1,202 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class CertificateModel { + + 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 approvalStatus; + private String approvalStatusName; + private String calibrationMajor; + private String certificateReportCode; + private String certificateReportName; + private String createTime; + private String decisionItem; + private String id; + private String manufacturingNo; + private String measurePersonId; + private String orderCode; + private String processId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String taskId; + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getApprovalStatusName() { + return approvalStatusName; + } + + public void setApprovalStatusName(String approvalStatusName) { + this.approvalStatusName = approvalStatusName; + } + + public String getCalibrationMajor() { + return calibrationMajor; + } + + public void setCalibrationMajor(String calibrationMajor) { + this.calibrationMajor = calibrationMajor; + } + + public String getCertificateReportCode() { + return certificateReportCode; + } + + public void setCertificateReportCode(String certificateReportCode) { + this.certificateReportCode = certificateReportCode; + } + + public String getCertificateReportName() { + return certificateReportName; + } + + public void setCertificateReportName(String certificateReportName) { + this.certificateReportName = certificateReportName; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getDecisionItem() { + return decisionItem; + } + + public void setDecisionItem(String decisionItem) { + this.decisionItem = decisionItem; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 1c6a830..2d50d0a 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -61,7 +61,4 @@ const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" - - //计量文件表单ID - const val FORM_ID = "jlglwjsp" } \ No newline at end of file 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 f6e498f..b0dec00 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 @@ -334,4 +334,15 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取证书报告列表 + */ + @POST("/business/certificateReport/approval/listPage") + suspend fun getCertificateReportList( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd791fe..c58a8a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt index 8c89dfb..151f951 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt @@ -265,7 +265,7 @@ when (t) { "仪器设备" -> requireContext().navigatePageTo() "标准装置" -> requireContext().navigatePageTo() -// "证书报告" -> requireContext().navigatePageTo() + "证书报告" -> requireContext().navigatePageTo() "委托需求" -> requireContext().navigatePageTo() // "访客" -> requireContext().navigatePageTo() "标准规范" -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt new file mode 100644 index 0000000..2f3c95c --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt @@ -0,0 +1,162 @@ +package com.casic.xz.meterage.fragment.certificate + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateModel +import com.casic.xz.meterage.vm.CertificateViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_certificate_report.* +import kotlinx.android.synthetic.main.include_empty_view.* + +/** + * 计量法规 + * + * formId:ywglzsbg + * */ +class CertificateReportFragment(private val status: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var certificateViewModel: CertificateViewModel + 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) + certificateViewModel = ViewModelProvider(this)[CertificateViewModel::class.java] + certificateViewModel.certificateList.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(2023030802) + } + } + } + + override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateReportList() + } + + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateReportList() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateReportList() + } + + private fun getCertificateReportList() { + certificateViewModel.getCertificateReportList( + status, + "", + "", + "", + "", + "", + "", + arrayOf(), + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_certificate_report + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023030802 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无相关证书报告") { + pageIndex = 1 + getCertificateReportList() + } + } else { + emptyView!!.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: CertificateModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.reportNameView, item.certificateReportName) +// .setText(R.id.fileStateView, item.effectiveStatusName) +// .setText(R.id.remarkView, "备注:$remark") +// .setText(R.id.fileCodeView, "文件号:${item.fileNo}") +// .setText(R.id.releaseDateView, "实施时间:${item.publishTime}") +// +// if (!item.effectiveStatus.equals("1")) { +// viewHolder.setBackgroundColor( +// R.id.fileStateView, +// R.color.gray.convertColor(requireContext()) +// ) +// } + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + certificateRecyclerView.adapter = certificateAdapter + certificateAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked( + position: Int, t: CertificateModel.DataModel.RowsModel + ) { +// requireContext().navigatePageTo(t.toJson()) + } + }) + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java new file mode 100644 index 0000000..ec0d25b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java @@ -0,0 +1,202 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class CertificateModel { + + 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 approvalStatus; + private String approvalStatusName; + private String calibrationMajor; + private String certificateReportCode; + private String certificateReportName; + private String createTime; + private String decisionItem; + private String id; + private String manufacturingNo; + private String measurePersonId; + private String orderCode; + private String processId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String taskId; + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getApprovalStatusName() { + return approvalStatusName; + } + + public void setApprovalStatusName(String approvalStatusName) { + this.approvalStatusName = approvalStatusName; + } + + public String getCalibrationMajor() { + return calibrationMajor; + } + + public void setCalibrationMajor(String calibrationMajor) { + this.calibrationMajor = calibrationMajor; + } + + public String getCertificateReportCode() { + return certificateReportCode; + } + + public void setCertificateReportCode(String certificateReportCode) { + this.certificateReportCode = certificateReportCode; + } + + public String getCertificateReportName() { + return certificateReportName; + } + + public void setCertificateReportName(String certificateReportName) { + this.certificateReportName = certificateReportName; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getDecisionItem() { + return decisionItem; + } + + public void setDecisionItem(String decisionItem) { + this.decisionItem = decisionItem; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 1c6a830..2d50d0a 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -61,7 +61,4 @@ const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" - - //计量文件表单ID - const val FORM_ID = "jlglwjsp" } \ No newline at end of file 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 f6e498f..b0dec00 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 @@ -334,4 +334,15 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取证书报告列表 + */ + @POST("/business/certificateReport/approval/listPage") + suspend fun getCertificateReportList( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String } \ No newline at end of file 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 0f2a9fd..cef55ec 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 @@ -736,7 +736,7 @@ offset: Int ): String { val param = JsonObject() - param.addProperty("formId", LocaleConstant.FORM_ID) + param.addProperty("formId", "jlglwjsp") param.addProperty("fileType", fileType) param.addProperty("fileName", fileName) param.addProperty("fileNo", fileNo) @@ -761,4 +761,43 @@ AuthenticationHelper.token!!, requestBody, limitMap, offsetMap ) } + + /** + * 获取证书报告列表 + */ + suspend fun getCertificateReportList( + approvalStatus: String, + certificateReportCode: String, + customerName: String, + measureCategory: String, + orderCode: String, + sampleName: String, + sampleNo: String, + ids: Array, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("formId", "ywglzsbg") + param.addProperty("approvalStatus", approvalStatus) + param.addProperty("certificateReportCode", certificateReportCode) + param.addProperty("customerName", customerName) + param.addProperty("measureCategory", measureCategory) + param.addProperty("orderCode", orderCode) + param.addProperty("sampleName", sampleName) + param.addProperty("sampleNo", sampleNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + + 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.getCertificateReportList( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd791fe..c58a8a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt index 8c89dfb..151f951 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt @@ -265,7 +265,7 @@ when (t) { "仪器设备" -> requireContext().navigatePageTo() "标准装置" -> requireContext().navigatePageTo() -// "证书报告" -> requireContext().navigatePageTo() + "证书报告" -> requireContext().navigatePageTo() "委托需求" -> requireContext().navigatePageTo() // "访客" -> requireContext().navigatePageTo() "标准规范" -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt new file mode 100644 index 0000000..2f3c95c --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt @@ -0,0 +1,162 @@ +package com.casic.xz.meterage.fragment.certificate + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateModel +import com.casic.xz.meterage.vm.CertificateViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_certificate_report.* +import kotlinx.android.synthetic.main.include_empty_view.* + +/** + * 计量法规 + * + * formId:ywglzsbg + * */ +class CertificateReportFragment(private val status: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var certificateViewModel: CertificateViewModel + 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) + certificateViewModel = ViewModelProvider(this)[CertificateViewModel::class.java] + certificateViewModel.certificateList.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(2023030802) + } + } + } + + override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateReportList() + } + + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateReportList() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateReportList() + } + + private fun getCertificateReportList() { + certificateViewModel.getCertificateReportList( + status, + "", + "", + "", + "", + "", + "", + arrayOf(), + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_certificate_report + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023030802 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无相关证书报告") { + pageIndex = 1 + getCertificateReportList() + } + } else { + emptyView!!.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: CertificateModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.reportNameView, item.certificateReportName) +// .setText(R.id.fileStateView, item.effectiveStatusName) +// .setText(R.id.remarkView, "备注:$remark") +// .setText(R.id.fileCodeView, "文件号:${item.fileNo}") +// .setText(R.id.releaseDateView, "实施时间:${item.publishTime}") +// +// if (!item.effectiveStatus.equals("1")) { +// viewHolder.setBackgroundColor( +// R.id.fileStateView, +// R.color.gray.convertColor(requireContext()) +// ) +// } + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + certificateRecyclerView.adapter = certificateAdapter + certificateAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked( + position: Int, t: CertificateModel.DataModel.RowsModel + ) { +// requireContext().navigatePageTo(t.toJson()) + } + }) + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java new file mode 100644 index 0000000..ec0d25b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java @@ -0,0 +1,202 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class CertificateModel { + + 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 approvalStatus; + private String approvalStatusName; + private String calibrationMajor; + private String certificateReportCode; + private String certificateReportName; + private String createTime; + private String decisionItem; + private String id; + private String manufacturingNo; + private String measurePersonId; + private String orderCode; + private String processId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String taskId; + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getApprovalStatusName() { + return approvalStatusName; + } + + public void setApprovalStatusName(String approvalStatusName) { + this.approvalStatusName = approvalStatusName; + } + + public String getCalibrationMajor() { + return calibrationMajor; + } + + public void setCalibrationMajor(String calibrationMajor) { + this.calibrationMajor = calibrationMajor; + } + + public String getCertificateReportCode() { + return certificateReportCode; + } + + public void setCertificateReportCode(String certificateReportCode) { + this.certificateReportCode = certificateReportCode; + } + + public String getCertificateReportName() { + return certificateReportName; + } + + public void setCertificateReportName(String certificateReportName) { + this.certificateReportName = certificateReportName; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getDecisionItem() { + return decisionItem; + } + + public void setDecisionItem(String decisionItem) { + this.decisionItem = decisionItem; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 1c6a830..2d50d0a 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -61,7 +61,4 @@ const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" - - //计量文件表单ID - const val FORM_ID = "jlglwjsp" } \ No newline at end of file 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 f6e498f..b0dec00 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 @@ -334,4 +334,15 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取证书报告列表 + */ + @POST("/business/certificateReport/approval/listPage") + suspend fun getCertificateReportList( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String } \ No newline at end of file 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 0f2a9fd..cef55ec 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 @@ -736,7 +736,7 @@ offset: Int ): String { val param = JsonObject() - param.addProperty("formId", LocaleConstant.FORM_ID) + param.addProperty("formId", "jlglwjsp") param.addProperty("fileType", fileType) param.addProperty("fileName", fileName) param.addProperty("fileNo", fileNo) @@ -761,4 +761,43 @@ AuthenticationHelper.token!!, requestBody, limitMap, offsetMap ) } + + /** + * 获取证书报告列表 + */ + suspend fun getCertificateReportList( + approvalStatus: String, + certificateReportCode: String, + customerName: String, + measureCategory: String, + orderCode: String, + sampleName: String, + sampleNo: String, + ids: Array, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("formId", "ywglzsbg") + param.addProperty("approvalStatus", approvalStatus) + param.addProperty("certificateReportCode", certificateReportCode) + param.addProperty("customerName", customerName) + param.addProperty("measureCategory", measureCategory) + param.addProperty("orderCode", orderCode) + param.addProperty("sampleName", sampleName) + param.addProperty("sampleNo", sampleNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + + 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.getCertificateReportList( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CertificateReportActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CertificateReportActivity.kt new file mode 100644 index 0000000..2baefd2 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/CertificateReportActivity.kt @@ -0,0 +1,57 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.certificate.CertificateReportFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import kotlinx.android.synthetic.main.activity_certificate.* +import kotlinx.android.synthetic.main.include_base_title.* + +class CertificateReportActivity : KotlinBaseActivity() { + + private val pageTitles = arrayOf( + "草稿箱", + "待审批", + "审批中", + "已通过", + "未通过", + "已取消", + "非草稿", + "未通过", + "可打印" + ) + private var fragmentPages: ArrayList = ArrayList() + + init { + pageTitles.indices.forEach { + fragmentPages.add(CertificateReportFragment((it + 1).toString())) + } + } + + override fun initData() { + viewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, pageTitles + ) + //绑定 + topTabLayout.setupWithViewPager(viewPager) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_certificate + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "证书报告" + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd791fe..c58a8a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt index 8c89dfb..151f951 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt @@ -265,7 +265,7 @@ when (t) { "仪器设备" -> requireContext().navigatePageTo() "标准装置" -> requireContext().navigatePageTo() -// "证书报告" -> requireContext().navigatePageTo() + "证书报告" -> requireContext().navigatePageTo() "委托需求" -> requireContext().navigatePageTo() // "访客" -> requireContext().navigatePageTo() "标准规范" -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt new file mode 100644 index 0000000..2f3c95c --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt @@ -0,0 +1,162 @@ +package com.casic.xz.meterage.fragment.certificate + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateModel +import com.casic.xz.meterage.vm.CertificateViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_certificate_report.* +import kotlinx.android.synthetic.main.include_empty_view.* + +/** + * 计量法规 + * + * formId:ywglzsbg + * */ +class CertificateReportFragment(private val status: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var certificateViewModel: CertificateViewModel + 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) + certificateViewModel = ViewModelProvider(this)[CertificateViewModel::class.java] + certificateViewModel.certificateList.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(2023030802) + } + } + } + + override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateReportList() + } + + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateReportList() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateReportList() + } + + private fun getCertificateReportList() { + certificateViewModel.getCertificateReportList( + status, + "", + "", + "", + "", + "", + "", + arrayOf(), + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_certificate_report + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023030802 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无相关证书报告") { + pageIndex = 1 + getCertificateReportList() + } + } else { + emptyView!!.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: CertificateModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.reportNameView, item.certificateReportName) +// .setText(R.id.fileStateView, item.effectiveStatusName) +// .setText(R.id.remarkView, "备注:$remark") +// .setText(R.id.fileCodeView, "文件号:${item.fileNo}") +// .setText(R.id.releaseDateView, "实施时间:${item.publishTime}") +// +// if (!item.effectiveStatus.equals("1")) { +// viewHolder.setBackgroundColor( +// R.id.fileStateView, +// R.color.gray.convertColor(requireContext()) +// ) +// } + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + certificateRecyclerView.adapter = certificateAdapter + certificateAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked( + position: Int, t: CertificateModel.DataModel.RowsModel + ) { +// requireContext().navigatePageTo(t.toJson()) + } + }) + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java new file mode 100644 index 0000000..ec0d25b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java @@ -0,0 +1,202 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class CertificateModel { + + 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 approvalStatus; + private String approvalStatusName; + private String calibrationMajor; + private String certificateReportCode; + private String certificateReportName; + private String createTime; + private String decisionItem; + private String id; + private String manufacturingNo; + private String measurePersonId; + private String orderCode; + private String processId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String taskId; + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getApprovalStatusName() { + return approvalStatusName; + } + + public void setApprovalStatusName(String approvalStatusName) { + this.approvalStatusName = approvalStatusName; + } + + public String getCalibrationMajor() { + return calibrationMajor; + } + + public void setCalibrationMajor(String calibrationMajor) { + this.calibrationMajor = calibrationMajor; + } + + public String getCertificateReportCode() { + return certificateReportCode; + } + + public void setCertificateReportCode(String certificateReportCode) { + this.certificateReportCode = certificateReportCode; + } + + public String getCertificateReportName() { + return certificateReportName; + } + + public void setCertificateReportName(String certificateReportName) { + this.certificateReportName = certificateReportName; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getDecisionItem() { + return decisionItem; + } + + public void setDecisionItem(String decisionItem) { + this.decisionItem = decisionItem; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 1c6a830..2d50d0a 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -61,7 +61,4 @@ const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" - - //计量文件表单ID - const val FORM_ID = "jlglwjsp" } \ No newline at end of file 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 f6e498f..b0dec00 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 @@ -334,4 +334,15 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取证书报告列表 + */ + @POST("/business/certificateReport/approval/listPage") + suspend fun getCertificateReportList( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String } \ No newline at end of file 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 0f2a9fd..cef55ec 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 @@ -736,7 +736,7 @@ offset: Int ): String { val param = JsonObject() - param.addProperty("formId", LocaleConstant.FORM_ID) + param.addProperty("formId", "jlglwjsp") param.addProperty("fileType", fileType) param.addProperty("fileName", fileName) param.addProperty("fileNo", fileNo) @@ -761,4 +761,43 @@ AuthenticationHelper.token!!, requestBody, limitMap, offsetMap ) } + + /** + * 获取证书报告列表 + */ + suspend fun getCertificateReportList( + approvalStatus: String, + certificateReportCode: String, + customerName: String, + measureCategory: String, + orderCode: String, + sampleName: String, + sampleNo: String, + ids: Array, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("formId", "ywglzsbg") + param.addProperty("approvalStatus", approvalStatus) + param.addProperty("certificateReportCode", certificateReportCode) + param.addProperty("customerName", customerName) + param.addProperty("measureCategory", measureCategory) + param.addProperty("orderCode", orderCode) + param.addProperty("sampleName", sampleName) + param.addProperty("sampleNo", sampleNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + + 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.getCertificateReportList( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CertificateReportActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CertificateReportActivity.kt new file mode 100644 index 0000000..2baefd2 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/CertificateReportActivity.kt @@ -0,0 +1,57 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.certificate.CertificateReportFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import kotlinx.android.synthetic.main.activity_certificate.* +import kotlinx.android.synthetic.main.include_base_title.* + +class CertificateReportActivity : KotlinBaseActivity() { + + private val pageTitles = arrayOf( + "草稿箱", + "待审批", + "审批中", + "已通过", + "未通过", + "已取消", + "非草稿", + "未通过", + "可打印" + ) + private var fragmentPages: ArrayList = ArrayList() + + init { + pageTitles.indices.forEach { + fragmentPages.add(CertificateReportFragment((it + 1).toString())) + } + } + + override fun initData() { + viewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, pageTitles + ) + //绑定 + topTabLayout.setupWithViewPager(viewPager) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_certificate + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "证书报告" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/vm/CertificateViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/CertificateViewModel.kt new file mode 100644 index 0000000..735e530 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/CertificateViewModel.kt @@ -0,0 +1,62 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +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.CertificateModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 证书报告 VM + * */ +class CertificateViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val certificateList = MutableLiveData() + + fun getCertificateReportList( + approvalStatus: String, + certificateReportCode: String, + customerName: String, + measureCategory: String, + orderCode: String, + sampleName: String, + sampleNo: String, + ids: Array, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getCertificateReportList( + approvalStatus, + certificateReportCode, + customerName, + measureCategory, + orderCode, + sampleName, + sampleNo, + ids, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + certificateList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd791fe..c58a8a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt index 8c89dfb..151f951 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt @@ -265,7 +265,7 @@ when (t) { "仪器设备" -> requireContext().navigatePageTo() "标准装置" -> requireContext().navigatePageTo() -// "证书报告" -> requireContext().navigatePageTo() + "证书报告" -> requireContext().navigatePageTo() "委托需求" -> requireContext().navigatePageTo() // "访客" -> requireContext().navigatePageTo() "标准规范" -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt new file mode 100644 index 0000000..2f3c95c --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt @@ -0,0 +1,162 @@ +package com.casic.xz.meterage.fragment.certificate + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateModel +import com.casic.xz.meterage.vm.CertificateViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_certificate_report.* +import kotlinx.android.synthetic.main.include_empty_view.* + +/** + * 计量法规 + * + * formId:ywglzsbg + * */ +class CertificateReportFragment(private val status: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var certificateViewModel: CertificateViewModel + 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) + certificateViewModel = ViewModelProvider(this)[CertificateViewModel::class.java] + certificateViewModel.certificateList.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(2023030802) + } + } + } + + override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateReportList() + } + + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateReportList() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateReportList() + } + + private fun getCertificateReportList() { + certificateViewModel.getCertificateReportList( + status, + "", + "", + "", + "", + "", + "", + arrayOf(), + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_certificate_report + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023030802 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无相关证书报告") { + pageIndex = 1 + getCertificateReportList() + } + } else { + emptyView!!.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: CertificateModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.reportNameView, item.certificateReportName) +// .setText(R.id.fileStateView, item.effectiveStatusName) +// .setText(R.id.remarkView, "备注:$remark") +// .setText(R.id.fileCodeView, "文件号:${item.fileNo}") +// .setText(R.id.releaseDateView, "实施时间:${item.publishTime}") +// +// if (!item.effectiveStatus.equals("1")) { +// viewHolder.setBackgroundColor( +// R.id.fileStateView, +// R.color.gray.convertColor(requireContext()) +// ) +// } + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + certificateRecyclerView.adapter = certificateAdapter + certificateAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked( + position: Int, t: CertificateModel.DataModel.RowsModel + ) { +// requireContext().navigatePageTo(t.toJson()) + } + }) + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java new file mode 100644 index 0000000..ec0d25b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java @@ -0,0 +1,202 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class CertificateModel { + + 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 approvalStatus; + private String approvalStatusName; + private String calibrationMajor; + private String certificateReportCode; + private String certificateReportName; + private String createTime; + private String decisionItem; + private String id; + private String manufacturingNo; + private String measurePersonId; + private String orderCode; + private String processId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String taskId; + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getApprovalStatusName() { + return approvalStatusName; + } + + public void setApprovalStatusName(String approvalStatusName) { + this.approvalStatusName = approvalStatusName; + } + + public String getCalibrationMajor() { + return calibrationMajor; + } + + public void setCalibrationMajor(String calibrationMajor) { + this.calibrationMajor = calibrationMajor; + } + + public String getCertificateReportCode() { + return certificateReportCode; + } + + public void setCertificateReportCode(String certificateReportCode) { + this.certificateReportCode = certificateReportCode; + } + + public String getCertificateReportName() { + return certificateReportName; + } + + public void setCertificateReportName(String certificateReportName) { + this.certificateReportName = certificateReportName; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getDecisionItem() { + return decisionItem; + } + + public void setDecisionItem(String decisionItem) { + this.decisionItem = decisionItem; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 1c6a830..2d50d0a 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -61,7 +61,4 @@ const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" - - //计量文件表单ID - const val FORM_ID = "jlglwjsp" } \ No newline at end of file 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 f6e498f..b0dec00 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 @@ -334,4 +334,15 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取证书报告列表 + */ + @POST("/business/certificateReport/approval/listPage") + suspend fun getCertificateReportList( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String } \ No newline at end of file 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 0f2a9fd..cef55ec 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 @@ -736,7 +736,7 @@ offset: Int ): String { val param = JsonObject() - param.addProperty("formId", LocaleConstant.FORM_ID) + param.addProperty("formId", "jlglwjsp") param.addProperty("fileType", fileType) param.addProperty("fileName", fileName) param.addProperty("fileNo", fileNo) @@ -761,4 +761,43 @@ AuthenticationHelper.token!!, requestBody, limitMap, offsetMap ) } + + /** + * 获取证书报告列表 + */ + suspend fun getCertificateReportList( + approvalStatus: String, + certificateReportCode: String, + customerName: String, + measureCategory: String, + orderCode: String, + sampleName: String, + sampleNo: String, + ids: Array, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("formId", "ywglzsbg") + param.addProperty("approvalStatus", approvalStatus) + param.addProperty("certificateReportCode", certificateReportCode) + param.addProperty("customerName", customerName) + param.addProperty("measureCategory", measureCategory) + param.addProperty("orderCode", orderCode) + param.addProperty("sampleName", sampleName) + param.addProperty("sampleNo", sampleNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + + 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.getCertificateReportList( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CertificateReportActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CertificateReportActivity.kt new file mode 100644 index 0000000..2baefd2 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/CertificateReportActivity.kt @@ -0,0 +1,57 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.certificate.CertificateReportFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import kotlinx.android.synthetic.main.activity_certificate.* +import kotlinx.android.synthetic.main.include_base_title.* + +class CertificateReportActivity : KotlinBaseActivity() { + + private val pageTitles = arrayOf( + "草稿箱", + "待审批", + "审批中", + "已通过", + "未通过", + "已取消", + "非草稿", + "未通过", + "可打印" + ) + private var fragmentPages: ArrayList = ArrayList() + + init { + pageTitles.indices.forEach { + fragmentPages.add(CertificateReportFragment((it + 1).toString())) + } + } + + override fun initData() { + viewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, pageTitles + ) + //绑定 + topTabLayout.setupWithViewPager(viewPager) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_certificate + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "证书报告" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/vm/CertificateViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/CertificateViewModel.kt new file mode 100644 index 0000000..735e530 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/CertificateViewModel.kt @@ -0,0 +1,62 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +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.CertificateModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 证书报告 VM + * */ +class CertificateViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val certificateList = MutableLiveData() + + fun getCertificateReportList( + approvalStatus: String, + certificateReportCode: String, + customerName: String, + measureCategory: String, + orderCode: String, + sampleName: String, + sampleNo: String, + ids: Array, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getCertificateReportList( + approvalStatus, + certificateReportCode, + customerName, + measureCategory, + orderCode, + sampleName, + sampleNo, + ids, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + certificateList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_certificate.xml b/app/src/main/res/layout/activity_certificate.xml new file mode 100644 index 0000000..87fa531 --- /dev/null +++ b/app/src/main/res/layout/activity_certificate.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd791fe..c58a8a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt index 8c89dfb..151f951 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt @@ -265,7 +265,7 @@ when (t) { "仪器设备" -> requireContext().navigatePageTo() "标准装置" -> requireContext().navigatePageTo() -// "证书报告" -> requireContext().navigatePageTo() + "证书报告" -> requireContext().navigatePageTo() "委托需求" -> requireContext().navigatePageTo() // "访客" -> requireContext().navigatePageTo() "标准规范" -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt new file mode 100644 index 0000000..2f3c95c --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt @@ -0,0 +1,162 @@ +package com.casic.xz.meterage.fragment.certificate + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateModel +import com.casic.xz.meterage.vm.CertificateViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_certificate_report.* +import kotlinx.android.synthetic.main.include_empty_view.* + +/** + * 计量法规 + * + * formId:ywglzsbg + * */ +class CertificateReportFragment(private val status: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var certificateViewModel: CertificateViewModel + 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) + certificateViewModel = ViewModelProvider(this)[CertificateViewModel::class.java] + certificateViewModel.certificateList.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(2023030802) + } + } + } + + override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateReportList() + } + + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateReportList() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateReportList() + } + + private fun getCertificateReportList() { + certificateViewModel.getCertificateReportList( + status, + "", + "", + "", + "", + "", + "", + arrayOf(), + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_certificate_report + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023030802 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无相关证书报告") { + pageIndex = 1 + getCertificateReportList() + } + } else { + emptyView!!.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: CertificateModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.reportNameView, item.certificateReportName) +// .setText(R.id.fileStateView, item.effectiveStatusName) +// .setText(R.id.remarkView, "备注:$remark") +// .setText(R.id.fileCodeView, "文件号:${item.fileNo}") +// .setText(R.id.releaseDateView, "实施时间:${item.publishTime}") +// +// if (!item.effectiveStatus.equals("1")) { +// viewHolder.setBackgroundColor( +// R.id.fileStateView, +// R.color.gray.convertColor(requireContext()) +// ) +// } + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + certificateRecyclerView.adapter = certificateAdapter + certificateAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked( + position: Int, t: CertificateModel.DataModel.RowsModel + ) { +// requireContext().navigatePageTo(t.toJson()) + } + }) + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java new file mode 100644 index 0000000..ec0d25b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java @@ -0,0 +1,202 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class CertificateModel { + + 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 approvalStatus; + private String approvalStatusName; + private String calibrationMajor; + private String certificateReportCode; + private String certificateReportName; + private String createTime; + private String decisionItem; + private String id; + private String manufacturingNo; + private String measurePersonId; + private String orderCode; + private String processId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String taskId; + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getApprovalStatusName() { + return approvalStatusName; + } + + public void setApprovalStatusName(String approvalStatusName) { + this.approvalStatusName = approvalStatusName; + } + + public String getCalibrationMajor() { + return calibrationMajor; + } + + public void setCalibrationMajor(String calibrationMajor) { + this.calibrationMajor = calibrationMajor; + } + + public String getCertificateReportCode() { + return certificateReportCode; + } + + public void setCertificateReportCode(String certificateReportCode) { + this.certificateReportCode = certificateReportCode; + } + + public String getCertificateReportName() { + return certificateReportName; + } + + public void setCertificateReportName(String certificateReportName) { + this.certificateReportName = certificateReportName; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getDecisionItem() { + return decisionItem; + } + + public void setDecisionItem(String decisionItem) { + this.decisionItem = decisionItem; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 1c6a830..2d50d0a 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -61,7 +61,4 @@ const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" - - //计量文件表单ID - const val FORM_ID = "jlglwjsp" } \ No newline at end of file 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 f6e498f..b0dec00 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 @@ -334,4 +334,15 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取证书报告列表 + */ + @POST("/business/certificateReport/approval/listPage") + suspend fun getCertificateReportList( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String } \ No newline at end of file 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 0f2a9fd..cef55ec 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 @@ -736,7 +736,7 @@ offset: Int ): String { val param = JsonObject() - param.addProperty("formId", LocaleConstant.FORM_ID) + param.addProperty("formId", "jlglwjsp") param.addProperty("fileType", fileType) param.addProperty("fileName", fileName) param.addProperty("fileNo", fileNo) @@ -761,4 +761,43 @@ AuthenticationHelper.token!!, requestBody, limitMap, offsetMap ) } + + /** + * 获取证书报告列表 + */ + suspend fun getCertificateReportList( + approvalStatus: String, + certificateReportCode: String, + customerName: String, + measureCategory: String, + orderCode: String, + sampleName: String, + sampleNo: String, + ids: Array, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("formId", "ywglzsbg") + param.addProperty("approvalStatus", approvalStatus) + param.addProperty("certificateReportCode", certificateReportCode) + param.addProperty("customerName", customerName) + param.addProperty("measureCategory", measureCategory) + param.addProperty("orderCode", orderCode) + param.addProperty("sampleName", sampleName) + param.addProperty("sampleNo", sampleNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + + 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.getCertificateReportList( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CertificateReportActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CertificateReportActivity.kt new file mode 100644 index 0000000..2baefd2 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/CertificateReportActivity.kt @@ -0,0 +1,57 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.certificate.CertificateReportFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import kotlinx.android.synthetic.main.activity_certificate.* +import kotlinx.android.synthetic.main.include_base_title.* + +class CertificateReportActivity : KotlinBaseActivity() { + + private val pageTitles = arrayOf( + "草稿箱", + "待审批", + "审批中", + "已通过", + "未通过", + "已取消", + "非草稿", + "未通过", + "可打印" + ) + private var fragmentPages: ArrayList = ArrayList() + + init { + pageTitles.indices.forEach { + fragmentPages.add(CertificateReportFragment((it + 1).toString())) + } + } + + override fun initData() { + viewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, pageTitles + ) + //绑定 + topTabLayout.setupWithViewPager(viewPager) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_certificate + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "证书报告" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/vm/CertificateViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/CertificateViewModel.kt new file mode 100644 index 0000000..735e530 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/CertificateViewModel.kt @@ -0,0 +1,62 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +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.CertificateModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 证书报告 VM + * */ +class CertificateViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val certificateList = MutableLiveData() + + fun getCertificateReportList( + approvalStatus: String, + certificateReportCode: String, + customerName: String, + measureCategory: String, + orderCode: String, + sampleName: String, + sampleNo: String, + ids: Array, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getCertificateReportList( + approvalStatus, + certificateReportCode, + customerName, + measureCategory, + orderCode, + sampleName, + sampleNo, + ids, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + certificateList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_certificate.xml b/app/src/main/res/layout/activity_certificate.xml new file mode 100644 index 0000000..87fa531 --- /dev/null +++ b/app/src/main/res/layout/activity_certificate.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_certificate_report.xml b/app/src/main/res/layout/fragment_certificate_report.xml new file mode 100644 index 0000000..772d499 --- /dev/null +++ b/app/src/main/res/layout/fragment_certificate_report.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd791fe..c58a8a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt index 8c89dfb..151f951 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt @@ -265,7 +265,7 @@ when (t) { "仪器设备" -> requireContext().navigatePageTo() "标准装置" -> requireContext().navigatePageTo() -// "证书报告" -> requireContext().navigatePageTo() + "证书报告" -> requireContext().navigatePageTo() "委托需求" -> requireContext().navigatePageTo() // "访客" -> requireContext().navigatePageTo() "标准规范" -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt new file mode 100644 index 0000000..2f3c95c --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/certificate/CertificateReportFragment.kt @@ -0,0 +1,162 @@ +package com.casic.xz.meterage.fragment.certificate + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.CertificateModel +import com.casic.xz.meterage.vm.CertificateViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_certificate_report.* +import kotlinx.android.synthetic.main.include_empty_view.* + +/** + * 计量法规 + * + * formId:ywglzsbg + * */ +class CertificateReportFragment(private val status: String) : KotlinBaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var certificateViewModel: CertificateViewModel + 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) + certificateViewModel = ViewModelProvider(this)[CertificateViewModel::class.java] + certificateViewModel.certificateList.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(2023030802) + } + } + } + + override fun initEvent() { + certificateLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getCertificateReportList() + } + + certificateLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getCertificateReportList() + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getCertificateReportList() + } + + private fun getCertificateReportList() { + certificateViewModel.getCertificateReportList( + status, + "", + "", + "", + "", + "", + "", + arrayOf(), + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_certificate_report + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023030802 -> { + if (isRefresh || isLoadMore) { + certificateAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无相关证书报告") { + pageIndex = 1 + getCertificateReportList() + } + } else { + emptyView!!.hide() + certificateAdapter = object : + NormalRecyclerAdapter( + R.layout.item_certificate_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: CertificateModel.DataModel.RowsModel + ) { + viewHolder.setText(R.id.reportNameView, item.certificateReportName) +// .setText(R.id.fileStateView, item.effectiveStatusName) +// .setText(R.id.remarkView, "备注:$remark") +// .setText(R.id.fileCodeView, "文件号:${item.fileNo}") +// .setText(R.id.releaseDateView, "实施时间:${item.publishTime}") +// +// if (!item.effectiveStatus.equals("1")) { +// viewHolder.setBackgroundColor( +// R.id.fileStateView, +// R.color.gray.convertColor(requireContext()) +// ) +// } + } + } + certificateRecyclerView.addItemDecoration( + DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ) + certificateRecyclerView.adapter = certificateAdapter + certificateAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked( + position: Int, t: CertificateModel.DataModel.RowsModel + ) { +// requireContext().navigatePageTo(t.toJson()) + } + }) + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java new file mode 100644 index 0000000..ec0d25b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/CertificateModel.java @@ -0,0 +1,202 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class CertificateModel { + + 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 approvalStatus; + private String approvalStatusName; + private String calibrationMajor; + private String certificateReportCode; + private String certificateReportName; + private String createTime; + private String decisionItem; + private String id; + private String manufacturingNo; + private String measurePersonId; + private String orderCode; + private String processId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String taskId; + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getApprovalStatusName() { + return approvalStatusName; + } + + public void setApprovalStatusName(String approvalStatusName) { + this.approvalStatusName = approvalStatusName; + } + + public String getCalibrationMajor() { + return calibrationMajor; + } + + public void setCalibrationMajor(String calibrationMajor) { + this.calibrationMajor = calibrationMajor; + } + + public String getCertificateReportCode() { + return certificateReportCode; + } + + public void setCertificateReportCode(String certificateReportCode) { + this.certificateReportCode = certificateReportCode; + } + + public String getCertificateReportName() { + return certificateReportName; + } + + public void setCertificateReportName(String certificateReportName) { + this.certificateReportName = certificateReportName; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getDecisionItem() { + return decisionItem; + } + + public void setDecisionItem(String decisionItem) { + this.decisionItem = decisionItem; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 1c6a830..2d50d0a 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -61,7 +61,4 @@ const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" - - //计量文件表单ID - const val FORM_ID = "jlglwjsp" } \ No newline at end of file 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 f6e498f..b0dec00 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 @@ -334,4 +334,15 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取证书报告列表 + */ + @POST("/business/certificateReport/approval/listPage") + suspend fun getCertificateReportList( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String } \ No newline at end of file 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 0f2a9fd..cef55ec 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 @@ -736,7 +736,7 @@ offset: Int ): String { val param = JsonObject() - param.addProperty("formId", LocaleConstant.FORM_ID) + param.addProperty("formId", "jlglwjsp") param.addProperty("fileType", fileType) param.addProperty("fileName", fileName) param.addProperty("fileNo", fileNo) @@ -761,4 +761,43 @@ AuthenticationHelper.token!!, requestBody, limitMap, offsetMap ) } + + /** + * 获取证书报告列表 + */ + suspend fun getCertificateReportList( + approvalStatus: String, + certificateReportCode: String, + customerName: String, + measureCategory: String, + orderCode: String, + sampleName: String, + sampleNo: String, + ids: Array, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("formId", "ywglzsbg") + param.addProperty("approvalStatus", approvalStatus) + param.addProperty("certificateReportCode", certificateReportCode) + param.addProperty("customerName", customerName) + param.addProperty("measureCategory", measureCategory) + param.addProperty("orderCode", orderCode) + param.addProperty("sampleName", sampleName) + param.addProperty("sampleNo", sampleNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + + 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.getCertificateReportList( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CertificateReportActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CertificateReportActivity.kt new file mode 100644 index 0000000..2baefd2 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/CertificateReportActivity.kt @@ -0,0 +1,57 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.certificate.CertificateReportFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import kotlinx.android.synthetic.main.activity_certificate.* +import kotlinx.android.synthetic.main.include_base_title.* + +class CertificateReportActivity : KotlinBaseActivity() { + + private val pageTitles = arrayOf( + "草稿箱", + "待审批", + "审批中", + "已通过", + "未通过", + "已取消", + "非草稿", + "未通过", + "可打印" + ) + private var fragmentPages: ArrayList = ArrayList() + + init { + pageTitles.indices.forEach { + fragmentPages.add(CertificateReportFragment((it + 1).toString())) + } + } + + override fun initData() { + viewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, pageTitles + ) + //绑定 + topTabLayout.setupWithViewPager(viewPager) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_certificate + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "证书报告" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/vm/CertificateViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/CertificateViewModel.kt new file mode 100644 index 0000000..735e530 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/CertificateViewModel.kt @@ -0,0 +1,62 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +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.CertificateModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 证书报告 VM + * */ +class CertificateViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val certificateList = MutableLiveData() + + fun getCertificateReportList( + approvalStatus: String, + certificateReportCode: String, + customerName: String, + measureCategory: String, + orderCode: String, + sampleName: String, + sampleNo: String, + ids: Array, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getCertificateReportList( + approvalStatus, + certificateReportCode, + customerName, + measureCategory, + orderCode, + sampleName, + sampleNo, + ids, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + certificateList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_certificate.xml b/app/src/main/res/layout/activity_certificate.xml new file mode 100644 index 0000000..87fa531 --- /dev/null +++ b/app/src/main/res/layout/activity_certificate.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_certificate_report.xml b/app/src/main/res/layout/fragment_certificate_report.xml new file mode 100644 index 0000000..772d499 --- /dev/null +++ b/app/src/main/res/layout/fragment_certificate_report.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_certificate_rv_l.xml b/app/src/main/res/layout/item_certificate_rv_l.xml new file mode 100644 index 0000000..2e39f0c --- /dev/null +++ b/app/src/main/res/layout/item_certificate_rv_l.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file