diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt new file mode 100644 index 0000000..102a749 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt @@ -0,0 +1,69 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.graphics.Color +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DetectionDetailModel + +class MeasureProcessAdapter( + context: Context, + private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_measure_log_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + when (position) { + 0 -> { + //最后一项 + holder.dotView.setBackgroundColor(Color.BLACK) + holder.operatorNameView.setTextColor(Color.BLACK) + holder.statusView.setTextColor(Color.BLACK) + holder.operateTimeView.setTextColor(Color.BLACK) + holder.currentLibView.setTextColor(Color.BLACK) + + holder.topLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_red) + } + dataRows.size - 1 -> { + holder.bottomLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_gray) + } + else -> { + holder.tagImageView.setImageResource(R.drawable.ic_dot) + } + } + + holder.statusView.text = rowsBean.measureStatusName + holder.operatorNameView.text = rowsBean.measurePerson + holder.currentLibView.text = rowsBean.measureSegment + holder.operateTimeView.text = rowsBean.updateTime + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var statusView: TextView = view.findViewById(R.id.statusView) + var operatorNameView: TextView = view.findViewById(R.id.operatorNameView) + var currentLibView: TextView = view.findViewById(R.id.currentLibView) + var operateTimeView: TextView = view.findViewById(R.id.operateTimeView) + + var topLineView: View = view.findViewById(R.id.topLineView) + var tagImageView: ImageView = view.findViewById(R.id.tagImageView) + var bottomLineView: View = view.findViewById(R.id.bottomLineView) + var dotView: View = view.findViewById(R.id.dotView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt new file mode 100644 index 0000000..102a749 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt @@ -0,0 +1,69 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.graphics.Color +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DetectionDetailModel + +class MeasureProcessAdapter( + context: Context, + private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_measure_log_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + when (position) { + 0 -> { + //最后一项 + holder.dotView.setBackgroundColor(Color.BLACK) + holder.operatorNameView.setTextColor(Color.BLACK) + holder.statusView.setTextColor(Color.BLACK) + holder.operateTimeView.setTextColor(Color.BLACK) + holder.currentLibView.setTextColor(Color.BLACK) + + holder.topLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_red) + } + dataRows.size - 1 -> { + holder.bottomLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_gray) + } + else -> { + holder.tagImageView.setImageResource(R.drawable.ic_dot) + } + } + + holder.statusView.text = rowsBean.measureStatusName + holder.operatorNameView.text = rowsBean.measurePerson + holder.currentLibView.text = rowsBean.measureSegment + holder.operateTimeView.text = rowsBean.updateTime + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var statusView: TextView = view.findViewById(R.id.statusView) + var operatorNameView: TextView = view.findViewById(R.id.operatorNameView) + var currentLibView: TextView = view.findViewById(R.id.currentLibView) + var operateTimeView: TextView = view.findViewById(R.id.operateTimeView) + + var topLineView: View = view.findViewById(R.id.topLineView) + var tagImageView: ImageView = view.findViewById(R.id.tagImageView) + var bottomLineView: View = view.findViewById(R.id.bottomLineView) + var dotView: View = view.findViewById(R.id.dotView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt index b9e59de..a4a509f 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt @@ -10,6 +10,7 @@ import com.casic.xz.meterage.model.DetectionListModel import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.MeasureProcessBottomSheet import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -65,6 +66,15 @@ weakReferenceHandler.sendEmptyMessage(2023042101) } } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + MeasureProcessBottomSheet.Builder() + .setContext(requireContext()) + .setMeasureProcess(it.data.measureProcessList) + .build().show() + } + } } override fun onResume() { @@ -151,6 +161,13 @@ .setText( R.id.dateView, item.requireOverTime.formatToYearMonthDay() ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } } } awaitTaskRecyclerView.adapter = detectionAdapter diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt new file mode 100644 index 0000000..102a749 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt @@ -0,0 +1,69 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.graphics.Color +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DetectionDetailModel + +class MeasureProcessAdapter( + context: Context, + private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_measure_log_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + when (position) { + 0 -> { + //最后一项 + holder.dotView.setBackgroundColor(Color.BLACK) + holder.operatorNameView.setTextColor(Color.BLACK) + holder.statusView.setTextColor(Color.BLACK) + holder.operateTimeView.setTextColor(Color.BLACK) + holder.currentLibView.setTextColor(Color.BLACK) + + holder.topLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_red) + } + dataRows.size - 1 -> { + holder.bottomLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_gray) + } + else -> { + holder.tagImageView.setImageResource(R.drawable.ic_dot) + } + } + + holder.statusView.text = rowsBean.measureStatusName + holder.operatorNameView.text = rowsBean.measurePerson + holder.currentLibView.text = rowsBean.measureSegment + holder.operateTimeView.text = rowsBean.updateTime + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var statusView: TextView = view.findViewById(R.id.statusView) + var operatorNameView: TextView = view.findViewById(R.id.operatorNameView) + var currentLibView: TextView = view.findViewById(R.id.currentLibView) + var operateTimeView: TextView = view.findViewById(R.id.operateTimeView) + + var topLineView: View = view.findViewById(R.id.topLineView) + var tagImageView: ImageView = view.findViewById(R.id.tagImageView) + var bottomLineView: View = view.findViewById(R.id.bottomLineView) + var dotView: View = view.findViewById(R.id.dotView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt index b9e59de..a4a509f 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt @@ -10,6 +10,7 @@ import com.casic.xz.meterage.model.DetectionListModel import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.MeasureProcessBottomSheet import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -65,6 +66,15 @@ weakReferenceHandler.sendEmptyMessage(2023042101) } } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + MeasureProcessBottomSheet.Builder() + .setContext(requireContext()) + .setMeasureProcess(it.data.measureProcessList) + .build().show() + } + } } override fun onResume() { @@ -151,6 +161,13 @@ .setText( R.id.dateView, item.requireOverTime.formatToYearMonthDay() ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } } } awaitTaskRecyclerView.adapter = detectionAdapter diff --git a/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java new file mode 100644 index 0000000..38b266f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DetectionDetailModel { + + 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 String abc; + private String certifications; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String effectiveDate; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureContent; + private String measureLastDate; + private String measurePeriod; + private List measureProcessList; + private List measureSendBackList; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderCode; + private String orderId; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastDate() { + return measureLastDate; + } + + public void setMeasureLastDate(String measureLastDate) { + this.measureLastDate = measureLastDate; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public List getMeasureProcessList() { + return measureProcessList; + } + + public void setMeasureProcessList(List measureProcessList) { + this.measureProcessList = measureProcessList; + } + + public List getMeasureSendBackList() { + return measureSendBackList; + } + + public void setMeasureSendBackList(List measureSendBackList) { + this.measureSendBackList = measureSendBackList; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleId() { + return sampleId; + } + + public void setSampleId(String sampleId) { + this.sampleId = sampleId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public static class MeasureProcessListModel { + private String id; + private String measurePerson; + private String measurePersonId; + private String measureSegment; + private String measureSegmentId; + private String measureSequence; + private String measureStatus; + private String measureStatusName; + private String requireCertifications; + private String updateTime; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getMeasurePerson() { + return measurePerson; + } + + public void setMeasurePerson(String measurePerson) { + this.measurePerson = measurePerson; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getMeasureSegment() { + return measureSegment; + } + + public void setMeasureSegment(String measureSegment) { + this.measureSegment = measureSegment; + } + + public String getMeasureSegmentId() { + return measureSegmentId; + } + + public void setMeasureSegmentId(String measureSegmentId) { + this.measureSegmentId = measureSegmentId; + } + + public String getMeasureSequence() { + return measureSequence; + } + + public void setMeasureSequence(String measureSequence) { + this.measureSequence = measureSequence; + } + + public String getMeasureStatus() { + return measureStatus; + } + + public void setMeasureStatus(String measureStatus) { + this.measureStatus = measureStatus; + } + + public String getMeasureStatusName() { + return measureStatusName; + } + + public void setMeasureStatusName(String measureStatusName) { + this.measureStatusName = measureStatusName; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + + public static class MeasureSendBackListModel { + private String measureSegment; + private String measureSegmentId; + private String sendBackPerson; + private String sendBackPersonId; + private String sendBackReason; + private String sendBackTime; + + public String getMeasureSegment() { + return measureSegment; + } + + public void setMeasureSegment(String measureSegment) { + this.measureSegment = measureSegment; + } + + public String getMeasureSegmentId() { + return measureSegmentId; + } + + public void setMeasureSegmentId(String measureSegmentId) { + this.measureSegmentId = measureSegmentId; + } + + public String getSendBackPerson() { + return sendBackPerson; + } + + public void setSendBackPerson(String sendBackPerson) { + this.sendBackPerson = sendBackPerson; + } + + public String getSendBackPersonId() { + return sendBackPersonId; + } + + public void setSendBackPersonId(String sendBackPersonId) { + this.sendBackPersonId = sendBackPersonId; + } + + public String getSendBackReason() { + return sendBackReason; + } + + public void setSendBackReason(String sendBackReason) { + this.sendBackReason = sendBackReason; + } + + public String getSendBackTime() { + return sendBackTime; + } + + public void setSendBackTime(String sendBackTime) { + this.sendBackTime = sendBackTime; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt new file mode 100644 index 0000000..102a749 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt @@ -0,0 +1,69 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.graphics.Color +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DetectionDetailModel + +class MeasureProcessAdapter( + context: Context, + private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_measure_log_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + when (position) { + 0 -> { + //最后一项 + holder.dotView.setBackgroundColor(Color.BLACK) + holder.operatorNameView.setTextColor(Color.BLACK) + holder.statusView.setTextColor(Color.BLACK) + holder.operateTimeView.setTextColor(Color.BLACK) + holder.currentLibView.setTextColor(Color.BLACK) + + holder.topLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_red) + } + dataRows.size - 1 -> { + holder.bottomLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_gray) + } + else -> { + holder.tagImageView.setImageResource(R.drawable.ic_dot) + } + } + + holder.statusView.text = rowsBean.measureStatusName + holder.operatorNameView.text = rowsBean.measurePerson + holder.currentLibView.text = rowsBean.measureSegment + holder.operateTimeView.text = rowsBean.updateTime + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var statusView: TextView = view.findViewById(R.id.statusView) + var operatorNameView: TextView = view.findViewById(R.id.operatorNameView) + var currentLibView: TextView = view.findViewById(R.id.currentLibView) + var operateTimeView: TextView = view.findViewById(R.id.operateTimeView) + + var topLineView: View = view.findViewById(R.id.topLineView) + var tagImageView: ImageView = view.findViewById(R.id.tagImageView) + var bottomLineView: View = view.findViewById(R.id.bottomLineView) + var dotView: View = view.findViewById(R.id.dotView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt index b9e59de..a4a509f 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt @@ -10,6 +10,7 @@ import com.casic.xz.meterage.model.DetectionListModel import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.MeasureProcessBottomSheet import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -65,6 +66,15 @@ weakReferenceHandler.sendEmptyMessage(2023042101) } } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + MeasureProcessBottomSheet.Builder() + .setContext(requireContext()) + .setMeasureProcess(it.data.measureProcessList) + .build().show() + } + } } override fun onResume() { @@ -151,6 +161,13 @@ .setText( R.id.dateView, item.requireOverTime.formatToYearMonthDay() ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } } } awaitTaskRecyclerView.adapter = detectionAdapter diff --git a/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java new file mode 100644 index 0000000..38b266f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DetectionDetailModel { + + 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 String abc; + private String certifications; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String effectiveDate; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureContent; + private String measureLastDate; + private String measurePeriod; + private List measureProcessList; + private List measureSendBackList; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderCode; + private String orderId; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastDate() { + return measureLastDate; + } + + public void setMeasureLastDate(String measureLastDate) { + this.measureLastDate = measureLastDate; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public List getMeasureProcessList() { + return measureProcessList; + } + + public void setMeasureProcessList(List measureProcessList) { + this.measureProcessList = measureProcessList; + } + + public List getMeasureSendBackList() { + return measureSendBackList; + } + + public void setMeasureSendBackList(List measureSendBackList) { + this.measureSendBackList = measureSendBackList; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleId() { + return sampleId; + } + + public void setSampleId(String sampleId) { + this.sampleId = sampleId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public static class MeasureProcessListModel { + private String id; + private String measurePerson; + private String measurePersonId; + private String measureSegment; + private String measureSegmentId; + private String measureSequence; + private String measureStatus; + private String measureStatusName; + private String requireCertifications; + private String updateTime; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getMeasurePerson() { + return measurePerson; + } + + public void setMeasurePerson(String measurePerson) { + this.measurePerson = measurePerson; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getMeasureSegment() { + return measureSegment; + } + + public void setMeasureSegment(String measureSegment) { + this.measureSegment = measureSegment; + } + + public String getMeasureSegmentId() { + return measureSegmentId; + } + + public void setMeasureSegmentId(String measureSegmentId) { + this.measureSegmentId = measureSegmentId; + } + + public String getMeasureSequence() { + return measureSequence; + } + + public void setMeasureSequence(String measureSequence) { + this.measureSequence = measureSequence; + } + + public String getMeasureStatus() { + return measureStatus; + } + + public void setMeasureStatus(String measureStatus) { + this.measureStatus = measureStatus; + } + + public String getMeasureStatusName() { + return measureStatusName; + } + + public void setMeasureStatusName(String measureStatusName) { + this.measureStatusName = measureStatusName; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + + public static class MeasureSendBackListModel { + private String measureSegment; + private String measureSegmentId; + private String sendBackPerson; + private String sendBackPersonId; + private String sendBackReason; + private String sendBackTime; + + public String getMeasureSegment() { + return measureSegment; + } + + public void setMeasureSegment(String measureSegment) { + this.measureSegment = measureSegment; + } + + public String getMeasureSegmentId() { + return measureSegmentId; + } + + public void setMeasureSegmentId(String measureSegmentId) { + this.measureSegmentId = measureSegmentId; + } + + public String getSendBackPerson() { + return sendBackPerson; + } + + public void setSendBackPerson(String sendBackPerson) { + this.sendBackPerson = sendBackPerson; + } + + public String getSendBackPersonId() { + return sendBackPersonId; + } + + public void setSendBackPersonId(String sendBackPersonId) { + this.sendBackPersonId = sendBackPersonId; + } + + public String getSendBackReason() { + return sendBackReason; + } + + public void setSendBackReason(String sendBackReason) { + this.sendBackReason = sendBackReason; + } + + public String getSendBackTime() { + return sendBackTime; + } + + public void setSendBackTime(String sendBackTime) { + this.sendBackTime = sendBackTime; + } + } + } +} 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 de0677d..a280712 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 @@ -551,6 +551,15 @@ ): String /** + * 获取检测详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getDetectionDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 获取实时工作统计 */ @GET("/business/board/workStatistics") diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt new file mode 100644 index 0000000..102a749 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt @@ -0,0 +1,69 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.graphics.Color +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DetectionDetailModel + +class MeasureProcessAdapter( + context: Context, + private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_measure_log_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + when (position) { + 0 -> { + //最后一项 + holder.dotView.setBackgroundColor(Color.BLACK) + holder.operatorNameView.setTextColor(Color.BLACK) + holder.statusView.setTextColor(Color.BLACK) + holder.operateTimeView.setTextColor(Color.BLACK) + holder.currentLibView.setTextColor(Color.BLACK) + + holder.topLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_red) + } + dataRows.size - 1 -> { + holder.bottomLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_gray) + } + else -> { + holder.tagImageView.setImageResource(R.drawable.ic_dot) + } + } + + holder.statusView.text = rowsBean.measureStatusName + holder.operatorNameView.text = rowsBean.measurePerson + holder.currentLibView.text = rowsBean.measureSegment + holder.operateTimeView.text = rowsBean.updateTime + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var statusView: TextView = view.findViewById(R.id.statusView) + var operatorNameView: TextView = view.findViewById(R.id.operatorNameView) + var currentLibView: TextView = view.findViewById(R.id.currentLibView) + var operateTimeView: TextView = view.findViewById(R.id.operateTimeView) + + var topLineView: View = view.findViewById(R.id.topLineView) + var tagImageView: ImageView = view.findViewById(R.id.tagImageView) + var bottomLineView: View = view.findViewById(R.id.bottomLineView) + var dotView: View = view.findViewById(R.id.dotView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt index b9e59de..a4a509f 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt @@ -10,6 +10,7 @@ import com.casic.xz.meterage.model.DetectionListModel import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.MeasureProcessBottomSheet import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -65,6 +66,15 @@ weakReferenceHandler.sendEmptyMessage(2023042101) } } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + MeasureProcessBottomSheet.Builder() + .setContext(requireContext()) + .setMeasureProcess(it.data.measureProcessList) + .build().show() + } + } } override fun onResume() { @@ -151,6 +161,13 @@ .setText( R.id.dateView, item.requireOverTime.formatToYearMonthDay() ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } } } awaitTaskRecyclerView.adapter = detectionAdapter diff --git a/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java new file mode 100644 index 0000000..38b266f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DetectionDetailModel { + + 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 String abc; + private String certifications; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String effectiveDate; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureContent; + private String measureLastDate; + private String measurePeriod; + private List measureProcessList; + private List measureSendBackList; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderCode; + private String orderId; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastDate() { + return measureLastDate; + } + + public void setMeasureLastDate(String measureLastDate) { + this.measureLastDate = measureLastDate; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public List getMeasureProcessList() { + return measureProcessList; + } + + public void setMeasureProcessList(List measureProcessList) { + this.measureProcessList = measureProcessList; + } + + public List getMeasureSendBackList() { + return measureSendBackList; + } + + public void setMeasureSendBackList(List measureSendBackList) { + this.measureSendBackList = measureSendBackList; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleId() { + return sampleId; + } + + public void setSampleId(String sampleId) { + this.sampleId = sampleId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public static class MeasureProcessListModel { + private String id; + private String measurePerson; + private String measurePersonId; + private String measureSegment; + private String measureSegmentId; + private String measureSequence; + private String measureStatus; + private String measureStatusName; + private String requireCertifications; + private String updateTime; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getMeasurePerson() { + return measurePerson; + } + + public void setMeasurePerson(String measurePerson) { + this.measurePerson = measurePerson; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getMeasureSegment() { + return measureSegment; + } + + public void setMeasureSegment(String measureSegment) { + this.measureSegment = measureSegment; + } + + public String getMeasureSegmentId() { + return measureSegmentId; + } + + public void setMeasureSegmentId(String measureSegmentId) { + this.measureSegmentId = measureSegmentId; + } + + public String getMeasureSequence() { + return measureSequence; + } + + public void setMeasureSequence(String measureSequence) { + this.measureSequence = measureSequence; + } + + public String getMeasureStatus() { + return measureStatus; + } + + public void setMeasureStatus(String measureStatus) { + this.measureStatus = measureStatus; + } + + public String getMeasureStatusName() { + return measureStatusName; + } + + public void setMeasureStatusName(String measureStatusName) { + this.measureStatusName = measureStatusName; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + + public static class MeasureSendBackListModel { + private String measureSegment; + private String measureSegmentId; + private String sendBackPerson; + private String sendBackPersonId; + private String sendBackReason; + private String sendBackTime; + + public String getMeasureSegment() { + return measureSegment; + } + + public void setMeasureSegment(String measureSegment) { + this.measureSegment = measureSegment; + } + + public String getMeasureSegmentId() { + return measureSegmentId; + } + + public void setMeasureSegmentId(String measureSegmentId) { + this.measureSegmentId = measureSegmentId; + } + + public String getSendBackPerson() { + return sendBackPerson; + } + + public void setSendBackPerson(String sendBackPerson) { + this.sendBackPerson = sendBackPerson; + } + + public String getSendBackPersonId() { + return sendBackPersonId; + } + + public void setSendBackPersonId(String sendBackPersonId) { + this.sendBackPersonId = sendBackPersonId; + } + + public String getSendBackReason() { + return sendBackReason; + } + + public void setSendBackReason(String sendBackReason) { + this.sendBackReason = sendBackReason; + } + + public String getSendBackTime() { + return sendBackTime; + } + + public void setSendBackTime(String sendBackTime) { + this.sendBackTime = sendBackTime; + } + } + } +} 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 de0677d..a280712 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 @@ -551,6 +551,15 @@ ): String /** + * 获取检测详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getDetectionDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 获取实时工作统计 */ @GET("/business/board/workStatistics") 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 0c65764..8c2a581 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 @@ -1297,6 +1297,19 @@ } /** + * 获取检测详情 + */ + suspend fun getDetectionDetail(orderId: String, sampleId: String): String { + val param = JsonObject() + param.addProperty("orderId", orderId) + param.addProperty("sampleId", sampleId) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getDetectionDetail(AuthenticationHelper.token!!, requestBody) + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt new file mode 100644 index 0000000..102a749 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt @@ -0,0 +1,69 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.graphics.Color +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DetectionDetailModel + +class MeasureProcessAdapter( + context: Context, + private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_measure_log_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + when (position) { + 0 -> { + //最后一项 + holder.dotView.setBackgroundColor(Color.BLACK) + holder.operatorNameView.setTextColor(Color.BLACK) + holder.statusView.setTextColor(Color.BLACK) + holder.operateTimeView.setTextColor(Color.BLACK) + holder.currentLibView.setTextColor(Color.BLACK) + + holder.topLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_red) + } + dataRows.size - 1 -> { + holder.bottomLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_gray) + } + else -> { + holder.tagImageView.setImageResource(R.drawable.ic_dot) + } + } + + holder.statusView.text = rowsBean.measureStatusName + holder.operatorNameView.text = rowsBean.measurePerson + holder.currentLibView.text = rowsBean.measureSegment + holder.operateTimeView.text = rowsBean.updateTime + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var statusView: TextView = view.findViewById(R.id.statusView) + var operatorNameView: TextView = view.findViewById(R.id.operatorNameView) + var currentLibView: TextView = view.findViewById(R.id.currentLibView) + var operateTimeView: TextView = view.findViewById(R.id.operateTimeView) + + var topLineView: View = view.findViewById(R.id.topLineView) + var tagImageView: ImageView = view.findViewById(R.id.tagImageView) + var bottomLineView: View = view.findViewById(R.id.bottomLineView) + var dotView: View = view.findViewById(R.id.dotView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt index b9e59de..a4a509f 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt @@ -10,6 +10,7 @@ import com.casic.xz.meterage.model.DetectionListModel import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.MeasureProcessBottomSheet import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -65,6 +66,15 @@ weakReferenceHandler.sendEmptyMessage(2023042101) } } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + MeasureProcessBottomSheet.Builder() + .setContext(requireContext()) + .setMeasureProcess(it.data.measureProcessList) + .build().show() + } + } } override fun onResume() { @@ -151,6 +161,13 @@ .setText( R.id.dateView, item.requireOverTime.formatToYearMonthDay() ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } } } awaitTaskRecyclerView.adapter = detectionAdapter diff --git a/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java new file mode 100644 index 0000000..38b266f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DetectionDetailModel { + + 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 String abc; + private String certifications; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String effectiveDate; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureContent; + private String measureLastDate; + private String measurePeriod; + private List measureProcessList; + private List measureSendBackList; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderCode; + private String orderId; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastDate() { + return measureLastDate; + } + + public void setMeasureLastDate(String measureLastDate) { + this.measureLastDate = measureLastDate; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public List getMeasureProcessList() { + return measureProcessList; + } + + public void setMeasureProcessList(List measureProcessList) { + this.measureProcessList = measureProcessList; + } + + public List getMeasureSendBackList() { + return measureSendBackList; + } + + public void setMeasureSendBackList(List measureSendBackList) { + this.measureSendBackList = measureSendBackList; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleId() { + return sampleId; + } + + public void setSampleId(String sampleId) { + this.sampleId = sampleId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public static class MeasureProcessListModel { + private String id; + private String measurePerson; + private String measurePersonId; + private String measureSegment; + private String measureSegmentId; + private String measureSequence; + private String measureStatus; + private String measureStatusName; + private String requireCertifications; + private String updateTime; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getMeasurePerson() { + return measurePerson; + } + + public void setMeasurePerson(String measurePerson) { + this.measurePerson = measurePerson; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getMeasureSegment() { + return measureSegment; + } + + public void setMeasureSegment(String measureSegment) { + this.measureSegment = measureSegment; + } + + public String getMeasureSegmentId() { + return measureSegmentId; + } + + public void setMeasureSegmentId(String measureSegmentId) { + this.measureSegmentId = measureSegmentId; + } + + public String getMeasureSequence() { + return measureSequence; + } + + public void setMeasureSequence(String measureSequence) { + this.measureSequence = measureSequence; + } + + public String getMeasureStatus() { + return measureStatus; + } + + public void setMeasureStatus(String measureStatus) { + this.measureStatus = measureStatus; + } + + public String getMeasureStatusName() { + return measureStatusName; + } + + public void setMeasureStatusName(String measureStatusName) { + this.measureStatusName = measureStatusName; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + + public static class MeasureSendBackListModel { + private String measureSegment; + private String measureSegmentId; + private String sendBackPerson; + private String sendBackPersonId; + private String sendBackReason; + private String sendBackTime; + + public String getMeasureSegment() { + return measureSegment; + } + + public void setMeasureSegment(String measureSegment) { + this.measureSegment = measureSegment; + } + + public String getMeasureSegmentId() { + return measureSegmentId; + } + + public void setMeasureSegmentId(String measureSegmentId) { + this.measureSegmentId = measureSegmentId; + } + + public String getSendBackPerson() { + return sendBackPerson; + } + + public void setSendBackPerson(String sendBackPerson) { + this.sendBackPerson = sendBackPerson; + } + + public String getSendBackPersonId() { + return sendBackPersonId; + } + + public void setSendBackPersonId(String sendBackPersonId) { + this.sendBackPersonId = sendBackPersonId; + } + + public String getSendBackReason() { + return sendBackReason; + } + + public void setSendBackReason(String sendBackReason) { + this.sendBackReason = sendBackReason; + } + + public String getSendBackTime() { + return sendBackTime; + } + + public void setSendBackTime(String sendBackTime) { + this.sendBackTime = sendBackTime; + } + } + } +} 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 de0677d..a280712 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 @@ -551,6 +551,15 @@ ): String /** + * 获取检测详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getDetectionDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 获取实时工作统计 */ @GET("/business/board/workStatistics") 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 0c65764..8c2a581 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 @@ -1297,6 +1297,19 @@ } /** + * 获取检测详情 + */ + suspend fun getDetectionDetail(orderId: String, sampleId: String): String { + val param = JsonObject() + param.addProperty("orderId", orderId) + param.addProperty("sampleId", sampleId) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getDetectionDetail(AuthenticationHelper.token!!, requestBody) + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { diff --git a/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt index 8dc98c6..0c80c62 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DetectionDetailModel import com.casic.xz.meterage.model.DetectionListModel import com.casic.xz.meterage.model.OutfieldDetectionDetailModel import com.casic.xz.meterage.model.OutfieldDetectionListModel @@ -24,6 +25,7 @@ val outfieldDetectionList = MutableLiveData() val outfieldDetectionDetail = MutableLiveData() val detectionList = MutableLiveData() + val detectionDetail = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -113,4 +115,23 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getDetectionDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + detectionDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt new file mode 100644 index 0000000..102a749 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt @@ -0,0 +1,69 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.graphics.Color +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DetectionDetailModel + +class MeasureProcessAdapter( + context: Context, + private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_measure_log_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + when (position) { + 0 -> { + //最后一项 + holder.dotView.setBackgroundColor(Color.BLACK) + holder.operatorNameView.setTextColor(Color.BLACK) + holder.statusView.setTextColor(Color.BLACK) + holder.operateTimeView.setTextColor(Color.BLACK) + holder.currentLibView.setTextColor(Color.BLACK) + + holder.topLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_red) + } + dataRows.size - 1 -> { + holder.bottomLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_gray) + } + else -> { + holder.tagImageView.setImageResource(R.drawable.ic_dot) + } + } + + holder.statusView.text = rowsBean.measureStatusName + holder.operatorNameView.text = rowsBean.measurePerson + holder.currentLibView.text = rowsBean.measureSegment + holder.operateTimeView.text = rowsBean.updateTime + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var statusView: TextView = view.findViewById(R.id.statusView) + var operatorNameView: TextView = view.findViewById(R.id.operatorNameView) + var currentLibView: TextView = view.findViewById(R.id.currentLibView) + var operateTimeView: TextView = view.findViewById(R.id.operateTimeView) + + var topLineView: View = view.findViewById(R.id.topLineView) + var tagImageView: ImageView = view.findViewById(R.id.tagImageView) + var bottomLineView: View = view.findViewById(R.id.bottomLineView) + var dotView: View = view.findViewById(R.id.dotView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt index b9e59de..a4a509f 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt @@ -10,6 +10,7 @@ import com.casic.xz.meterage.model.DetectionListModel import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.MeasureProcessBottomSheet import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -65,6 +66,15 @@ weakReferenceHandler.sendEmptyMessage(2023042101) } } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + MeasureProcessBottomSheet.Builder() + .setContext(requireContext()) + .setMeasureProcess(it.data.measureProcessList) + .build().show() + } + } } override fun onResume() { @@ -151,6 +161,13 @@ .setText( R.id.dateView, item.requireOverTime.formatToYearMonthDay() ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } } } awaitTaskRecyclerView.adapter = detectionAdapter diff --git a/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java new file mode 100644 index 0000000..38b266f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DetectionDetailModel { + + 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 String abc; + private String certifications; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String effectiveDate; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureContent; + private String measureLastDate; + private String measurePeriod; + private List measureProcessList; + private List measureSendBackList; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderCode; + private String orderId; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastDate() { + return measureLastDate; + } + + public void setMeasureLastDate(String measureLastDate) { + this.measureLastDate = measureLastDate; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public List getMeasureProcessList() { + return measureProcessList; + } + + public void setMeasureProcessList(List measureProcessList) { + this.measureProcessList = measureProcessList; + } + + public List getMeasureSendBackList() { + return measureSendBackList; + } + + public void setMeasureSendBackList(List measureSendBackList) { + this.measureSendBackList = measureSendBackList; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleId() { + return sampleId; + } + + public void setSampleId(String sampleId) { + this.sampleId = sampleId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public static class MeasureProcessListModel { + private String id; + private String measurePerson; + private String measurePersonId; + private String measureSegment; + private String measureSegmentId; + private String measureSequence; + private String measureStatus; + private String measureStatusName; + private String requireCertifications; + private String updateTime; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getMeasurePerson() { + return measurePerson; + } + + public void setMeasurePerson(String measurePerson) { + this.measurePerson = measurePerson; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getMeasureSegment() { + return measureSegment; + } + + public void setMeasureSegment(String measureSegment) { + this.measureSegment = measureSegment; + } + + public String getMeasureSegmentId() { + return measureSegmentId; + } + + public void setMeasureSegmentId(String measureSegmentId) { + this.measureSegmentId = measureSegmentId; + } + + public String getMeasureSequence() { + return measureSequence; + } + + public void setMeasureSequence(String measureSequence) { + this.measureSequence = measureSequence; + } + + public String getMeasureStatus() { + return measureStatus; + } + + public void setMeasureStatus(String measureStatus) { + this.measureStatus = measureStatus; + } + + public String getMeasureStatusName() { + return measureStatusName; + } + + public void setMeasureStatusName(String measureStatusName) { + this.measureStatusName = measureStatusName; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + + public static class MeasureSendBackListModel { + private String measureSegment; + private String measureSegmentId; + private String sendBackPerson; + private String sendBackPersonId; + private String sendBackReason; + private String sendBackTime; + + public String getMeasureSegment() { + return measureSegment; + } + + public void setMeasureSegment(String measureSegment) { + this.measureSegment = measureSegment; + } + + public String getMeasureSegmentId() { + return measureSegmentId; + } + + public void setMeasureSegmentId(String measureSegmentId) { + this.measureSegmentId = measureSegmentId; + } + + public String getSendBackPerson() { + return sendBackPerson; + } + + public void setSendBackPerson(String sendBackPerson) { + this.sendBackPerson = sendBackPerson; + } + + public String getSendBackPersonId() { + return sendBackPersonId; + } + + public void setSendBackPersonId(String sendBackPersonId) { + this.sendBackPersonId = sendBackPersonId; + } + + public String getSendBackReason() { + return sendBackReason; + } + + public void setSendBackReason(String sendBackReason) { + this.sendBackReason = sendBackReason; + } + + public String getSendBackTime() { + return sendBackTime; + } + + public void setSendBackTime(String sendBackTime) { + this.sendBackTime = sendBackTime; + } + } + } +} 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 de0677d..a280712 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 @@ -551,6 +551,15 @@ ): String /** + * 获取检测详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getDetectionDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 获取实时工作统计 */ @GET("/business/board/workStatistics") 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 0c65764..8c2a581 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 @@ -1297,6 +1297,19 @@ } /** + * 获取检测详情 + */ + suspend fun getDetectionDetail(orderId: String, sampleId: String): String { + val param = JsonObject() + param.addProperty("orderId", orderId) + param.addProperty("sampleId", sampleId) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getDetectionDetail(AuthenticationHelper.token!!, requestBody) + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { diff --git a/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt index 8dc98c6..0c80c62 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DetectionDetailModel import com.casic.xz.meterage.model.DetectionListModel import com.casic.xz.meterage.model.OutfieldDetectionDetailModel import com.casic.xz.meterage.model.OutfieldDetectionListModel @@ -24,6 +25,7 @@ val outfieldDetectionList = MutableLiveData() val outfieldDetectionDetail = MutableLiveData() val detectionList = MutableLiveData() + val detectionDetail = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -113,4 +115,23 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getDetectionDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + detectionDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt new file mode 100644 index 0000000..449d525 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt @@ -0,0 +1,49 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.os.Bundle +import android.view.Gravity +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.MeasureProcessAdapter +import com.casic.xz.meterage.model.DetectionDetailModel +import com.pengxh.kt.lite.extensions.resetParams + +class MeasureProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val measureProcess = builder.measureProcess + + class Builder { + lateinit var context: Context + lateinit var measureProcess: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setMeasureProcess(measureProcess: List): Builder { + this.measureProcess = measureProcess + return this + } + + fun build(): MeasureProcessBottomSheet { + return MeasureProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_measure_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, measureProcess) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt new file mode 100644 index 0000000..102a749 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt @@ -0,0 +1,69 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.graphics.Color +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DetectionDetailModel + +class MeasureProcessAdapter( + context: Context, + private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_measure_log_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + when (position) { + 0 -> { + //最后一项 + holder.dotView.setBackgroundColor(Color.BLACK) + holder.operatorNameView.setTextColor(Color.BLACK) + holder.statusView.setTextColor(Color.BLACK) + holder.operateTimeView.setTextColor(Color.BLACK) + holder.currentLibView.setTextColor(Color.BLACK) + + holder.topLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_red) + } + dataRows.size - 1 -> { + holder.bottomLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_gray) + } + else -> { + holder.tagImageView.setImageResource(R.drawable.ic_dot) + } + } + + holder.statusView.text = rowsBean.measureStatusName + holder.operatorNameView.text = rowsBean.measurePerson + holder.currentLibView.text = rowsBean.measureSegment + holder.operateTimeView.text = rowsBean.updateTime + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var statusView: TextView = view.findViewById(R.id.statusView) + var operatorNameView: TextView = view.findViewById(R.id.operatorNameView) + var currentLibView: TextView = view.findViewById(R.id.currentLibView) + var operateTimeView: TextView = view.findViewById(R.id.operateTimeView) + + var topLineView: View = view.findViewById(R.id.topLineView) + var tagImageView: ImageView = view.findViewById(R.id.tagImageView) + var bottomLineView: View = view.findViewById(R.id.bottomLineView) + var dotView: View = view.findViewById(R.id.dotView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt index b9e59de..a4a509f 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt @@ -10,6 +10,7 @@ import com.casic.xz.meterage.model.DetectionListModel import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.MeasureProcessBottomSheet import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -65,6 +66,15 @@ weakReferenceHandler.sendEmptyMessage(2023042101) } } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + MeasureProcessBottomSheet.Builder() + .setContext(requireContext()) + .setMeasureProcess(it.data.measureProcessList) + .build().show() + } + } } override fun onResume() { @@ -151,6 +161,13 @@ .setText( R.id.dateView, item.requireOverTime.formatToYearMonthDay() ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } } } awaitTaskRecyclerView.adapter = detectionAdapter diff --git a/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java new file mode 100644 index 0000000..38b266f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DetectionDetailModel { + + 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 String abc; + private String certifications; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String effectiveDate; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureContent; + private String measureLastDate; + private String measurePeriod; + private List measureProcessList; + private List measureSendBackList; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderCode; + private String orderId; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastDate() { + return measureLastDate; + } + + public void setMeasureLastDate(String measureLastDate) { + this.measureLastDate = measureLastDate; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public List getMeasureProcessList() { + return measureProcessList; + } + + public void setMeasureProcessList(List measureProcessList) { + this.measureProcessList = measureProcessList; + } + + public List getMeasureSendBackList() { + return measureSendBackList; + } + + public void setMeasureSendBackList(List measureSendBackList) { + this.measureSendBackList = measureSendBackList; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleId() { + return sampleId; + } + + public void setSampleId(String sampleId) { + this.sampleId = sampleId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public static class MeasureProcessListModel { + private String id; + private String measurePerson; + private String measurePersonId; + private String measureSegment; + private String measureSegmentId; + private String measureSequence; + private String measureStatus; + private String measureStatusName; + private String requireCertifications; + private String updateTime; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getMeasurePerson() { + return measurePerson; + } + + public void setMeasurePerson(String measurePerson) { + this.measurePerson = measurePerson; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getMeasureSegment() { + return measureSegment; + } + + public void setMeasureSegment(String measureSegment) { + this.measureSegment = measureSegment; + } + + public String getMeasureSegmentId() { + return measureSegmentId; + } + + public void setMeasureSegmentId(String measureSegmentId) { + this.measureSegmentId = measureSegmentId; + } + + public String getMeasureSequence() { + return measureSequence; + } + + public void setMeasureSequence(String measureSequence) { + this.measureSequence = measureSequence; + } + + public String getMeasureStatus() { + return measureStatus; + } + + public void setMeasureStatus(String measureStatus) { + this.measureStatus = measureStatus; + } + + public String getMeasureStatusName() { + return measureStatusName; + } + + public void setMeasureStatusName(String measureStatusName) { + this.measureStatusName = measureStatusName; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + + public static class MeasureSendBackListModel { + private String measureSegment; + private String measureSegmentId; + private String sendBackPerson; + private String sendBackPersonId; + private String sendBackReason; + private String sendBackTime; + + public String getMeasureSegment() { + return measureSegment; + } + + public void setMeasureSegment(String measureSegment) { + this.measureSegment = measureSegment; + } + + public String getMeasureSegmentId() { + return measureSegmentId; + } + + public void setMeasureSegmentId(String measureSegmentId) { + this.measureSegmentId = measureSegmentId; + } + + public String getSendBackPerson() { + return sendBackPerson; + } + + public void setSendBackPerson(String sendBackPerson) { + this.sendBackPerson = sendBackPerson; + } + + public String getSendBackPersonId() { + return sendBackPersonId; + } + + public void setSendBackPersonId(String sendBackPersonId) { + this.sendBackPersonId = sendBackPersonId; + } + + public String getSendBackReason() { + return sendBackReason; + } + + public void setSendBackReason(String sendBackReason) { + this.sendBackReason = sendBackReason; + } + + public String getSendBackTime() { + return sendBackTime; + } + + public void setSendBackTime(String sendBackTime) { + this.sendBackTime = sendBackTime; + } + } + } +} 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 de0677d..a280712 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 @@ -551,6 +551,15 @@ ): String /** + * 获取检测详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getDetectionDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 获取实时工作统计 */ @GET("/business/board/workStatistics") 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 0c65764..8c2a581 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 @@ -1297,6 +1297,19 @@ } /** + * 获取检测详情 + */ + suspend fun getDetectionDetail(orderId: String, sampleId: String): String { + val param = JsonObject() + param.addProperty("orderId", orderId) + param.addProperty("sampleId", sampleId) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getDetectionDetail(AuthenticationHelper.token!!, requestBody) + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { diff --git a/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt index 8dc98c6..0c80c62 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DetectionDetailModel import com.casic.xz.meterage.model.DetectionListModel import com.casic.xz.meterage.model.OutfieldDetectionDetailModel import com.casic.xz.meterage.model.OutfieldDetectionListModel @@ -24,6 +25,7 @@ val outfieldDetectionList = MutableLiveData() val outfieldDetectionDetail = MutableLiveData() val detectionList = MutableLiveData() + val detectionDetail = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -113,4 +115,23 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getDetectionDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + detectionDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt new file mode 100644 index 0000000..449d525 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt @@ -0,0 +1,49 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.os.Bundle +import android.view.Gravity +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.MeasureProcessAdapter +import com.casic.xz.meterage.model.DetectionDetailModel +import com.pengxh.kt.lite.extensions.resetParams + +class MeasureProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val measureProcess = builder.measureProcess + + class Builder { + lateinit var context: Context + lateinit var measureProcess: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setMeasureProcess(measureProcess: List): Builder { + this.measureProcess = measureProcess + return this + } + + fun build(): MeasureProcessBottomSheet { + return MeasureProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_measure_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, measureProcess) + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 8cc77a0..1891be8 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -144,7 +144,7 @@ +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_measure_log_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + when (position) { + 0 -> { + //最后一项 + holder.dotView.setBackgroundColor(Color.BLACK) + holder.operatorNameView.setTextColor(Color.BLACK) + holder.statusView.setTextColor(Color.BLACK) + holder.operateTimeView.setTextColor(Color.BLACK) + holder.currentLibView.setTextColor(Color.BLACK) + + holder.topLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_red) + } + dataRows.size - 1 -> { + holder.bottomLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_gray) + } + else -> { + holder.tagImageView.setImageResource(R.drawable.ic_dot) + } + } + + holder.statusView.text = rowsBean.measureStatusName + holder.operatorNameView.text = rowsBean.measurePerson + holder.currentLibView.text = rowsBean.measureSegment + holder.operateTimeView.text = rowsBean.updateTime + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var statusView: TextView = view.findViewById(R.id.statusView) + var operatorNameView: TextView = view.findViewById(R.id.operatorNameView) + var currentLibView: TextView = view.findViewById(R.id.currentLibView) + var operateTimeView: TextView = view.findViewById(R.id.operateTimeView) + + var topLineView: View = view.findViewById(R.id.topLineView) + var tagImageView: ImageView = view.findViewById(R.id.tagImageView) + var bottomLineView: View = view.findViewById(R.id.bottomLineView) + var dotView: View = view.findViewById(R.id.dotView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt index b9e59de..a4a509f 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt @@ -10,6 +10,7 @@ import com.casic.xz.meterage.model.DetectionListModel import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.MeasureProcessBottomSheet import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -65,6 +66,15 @@ weakReferenceHandler.sendEmptyMessage(2023042101) } } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + MeasureProcessBottomSheet.Builder() + .setContext(requireContext()) + .setMeasureProcess(it.data.measureProcessList) + .build().show() + } + } } override fun onResume() { @@ -151,6 +161,13 @@ .setText( R.id.dateView, item.requireOverTime.formatToYearMonthDay() ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } } } awaitTaskRecyclerView.adapter = detectionAdapter diff --git a/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java new file mode 100644 index 0000000..38b266f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DetectionDetailModel { + + 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 String abc; + private String certifications; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String effectiveDate; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureContent; + private String measureLastDate; + private String measurePeriod; + private List measureProcessList; + private List measureSendBackList; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderCode; + private String orderId; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastDate() { + return measureLastDate; + } + + public void setMeasureLastDate(String measureLastDate) { + this.measureLastDate = measureLastDate; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public List getMeasureProcessList() { + return measureProcessList; + } + + public void setMeasureProcessList(List measureProcessList) { + this.measureProcessList = measureProcessList; + } + + public List getMeasureSendBackList() { + return measureSendBackList; + } + + public void setMeasureSendBackList(List measureSendBackList) { + this.measureSendBackList = measureSendBackList; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleId() { + return sampleId; + } + + public void setSampleId(String sampleId) { + this.sampleId = sampleId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public static class MeasureProcessListModel { + private String id; + private String measurePerson; + private String measurePersonId; + private String measureSegment; + private String measureSegmentId; + private String measureSequence; + private String measureStatus; + private String measureStatusName; + private String requireCertifications; + private String updateTime; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getMeasurePerson() { + return measurePerson; + } + + public void setMeasurePerson(String measurePerson) { + this.measurePerson = measurePerson; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getMeasureSegment() { + return measureSegment; + } + + public void setMeasureSegment(String measureSegment) { + this.measureSegment = measureSegment; + } + + public String getMeasureSegmentId() { + return measureSegmentId; + } + + public void setMeasureSegmentId(String measureSegmentId) { + this.measureSegmentId = measureSegmentId; + } + + public String getMeasureSequence() { + return measureSequence; + } + + public void setMeasureSequence(String measureSequence) { + this.measureSequence = measureSequence; + } + + public String getMeasureStatus() { + return measureStatus; + } + + public void setMeasureStatus(String measureStatus) { + this.measureStatus = measureStatus; + } + + public String getMeasureStatusName() { + return measureStatusName; + } + + public void setMeasureStatusName(String measureStatusName) { + this.measureStatusName = measureStatusName; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + + public static class MeasureSendBackListModel { + private String measureSegment; + private String measureSegmentId; + private String sendBackPerson; + private String sendBackPersonId; + private String sendBackReason; + private String sendBackTime; + + public String getMeasureSegment() { + return measureSegment; + } + + public void setMeasureSegment(String measureSegment) { + this.measureSegment = measureSegment; + } + + public String getMeasureSegmentId() { + return measureSegmentId; + } + + public void setMeasureSegmentId(String measureSegmentId) { + this.measureSegmentId = measureSegmentId; + } + + public String getSendBackPerson() { + return sendBackPerson; + } + + public void setSendBackPerson(String sendBackPerson) { + this.sendBackPerson = sendBackPerson; + } + + public String getSendBackPersonId() { + return sendBackPersonId; + } + + public void setSendBackPersonId(String sendBackPersonId) { + this.sendBackPersonId = sendBackPersonId; + } + + public String getSendBackReason() { + return sendBackReason; + } + + public void setSendBackReason(String sendBackReason) { + this.sendBackReason = sendBackReason; + } + + public String getSendBackTime() { + return sendBackTime; + } + + public void setSendBackTime(String sendBackTime) { + this.sendBackTime = sendBackTime; + } + } + } +} 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 de0677d..a280712 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 @@ -551,6 +551,15 @@ ): String /** + * 获取检测详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getDetectionDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 获取实时工作统计 */ @GET("/business/board/workStatistics") 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 0c65764..8c2a581 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 @@ -1297,6 +1297,19 @@ } /** + * 获取检测详情 + */ + suspend fun getDetectionDetail(orderId: String, sampleId: String): String { + val param = JsonObject() + param.addProperty("orderId", orderId) + param.addProperty("sampleId", sampleId) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getDetectionDetail(AuthenticationHelper.token!!, requestBody) + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { diff --git a/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt index 8dc98c6..0c80c62 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DetectionDetailModel import com.casic.xz.meterage.model.DetectionListModel import com.casic.xz.meterage.model.OutfieldDetectionDetailModel import com.casic.xz.meterage.model.OutfieldDetectionListModel @@ -24,6 +25,7 @@ val outfieldDetectionList = MutableLiveData() val outfieldDetectionDetail = MutableLiveData() val detectionList = MutableLiveData() + val detectionDetail = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -113,4 +115,23 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getDetectionDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + detectionDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt new file mode 100644 index 0000000..449d525 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt @@ -0,0 +1,49 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.os.Bundle +import android.view.Gravity +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.MeasureProcessAdapter +import com.casic.xz.meterage.model.DetectionDetailModel +import com.pengxh.kt.lite.extensions.resetParams + +class MeasureProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val measureProcess = builder.measureProcess + + class Builder { + lateinit var context: Context + lateinit var measureProcess: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setMeasureProcess(measureProcess: List): Builder { + this.measureProcess = measureProcess + return this + } + + fun build(): MeasureProcessBottomSheet { + return MeasureProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_measure_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, measureProcess) + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 8cc77a0..1891be8 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -144,7 +144,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt new file mode 100644 index 0000000..102a749 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt @@ -0,0 +1,69 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.graphics.Color +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DetectionDetailModel + +class MeasureProcessAdapter( + context: Context, + private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_measure_log_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + when (position) { + 0 -> { + //最后一项 + holder.dotView.setBackgroundColor(Color.BLACK) + holder.operatorNameView.setTextColor(Color.BLACK) + holder.statusView.setTextColor(Color.BLACK) + holder.operateTimeView.setTextColor(Color.BLACK) + holder.currentLibView.setTextColor(Color.BLACK) + + holder.topLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_red) + } + dataRows.size - 1 -> { + holder.bottomLineView.visibility = View.INVISIBLE + holder.tagImageView.setImageResource(R.drawable.ic_dot_gray) + } + else -> { + holder.tagImageView.setImageResource(R.drawable.ic_dot) + } + } + + holder.statusView.text = rowsBean.measureStatusName + holder.operatorNameView.text = rowsBean.measurePerson + holder.currentLibView.text = rowsBean.measureSegment + holder.operateTimeView.text = rowsBean.updateTime + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var statusView: TextView = view.findViewById(R.id.statusView) + var operatorNameView: TextView = view.findViewById(R.id.operatorNameView) + var currentLibView: TextView = view.findViewById(R.id.currentLibView) + var operateTimeView: TextView = view.findViewById(R.id.operateTimeView) + + var topLineView: View = view.findViewById(R.id.topLineView) + var tagImageView: ImageView = view.findViewById(R.id.tagImageView) + var bottomLineView: View = view.findViewById(R.id.bottomLineView) + var dotView: View = view.findViewById(R.id.dotView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt index b9e59de..a4a509f 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt @@ -10,6 +10,7 @@ import com.casic.xz.meterage.model.DetectionListModel import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.MeasureProcessBottomSheet import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -65,6 +66,15 @@ weakReferenceHandler.sendEmptyMessage(2023042101) } } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + MeasureProcessBottomSheet.Builder() + .setContext(requireContext()) + .setMeasureProcess(it.data.measureProcessList) + .build().show() + } + } } override fun onResume() { @@ -151,6 +161,13 @@ .setText( R.id.dateView, item.requireOverTime.formatToYearMonthDay() ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } } } awaitTaskRecyclerView.adapter = detectionAdapter diff --git a/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java new file mode 100644 index 0000000..38b266f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DetectionDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DetectionDetailModel { + + 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 String abc; + private String certifications; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String effectiveDate; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureContent; + private String measureLastDate; + private String measurePeriod; + private List measureProcessList; + private List measureSendBackList; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderCode; + private String orderId; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastDate() { + return measureLastDate; + } + + public void setMeasureLastDate(String measureLastDate) { + this.measureLastDate = measureLastDate; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public List getMeasureProcessList() { + return measureProcessList; + } + + public void setMeasureProcessList(List measureProcessList) { + this.measureProcessList = measureProcessList; + } + + public List getMeasureSendBackList() { + return measureSendBackList; + } + + public void setMeasureSendBackList(List measureSendBackList) { + this.measureSendBackList = measureSendBackList; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleId() { + return sampleId; + } + + public void setSampleId(String sampleId) { + this.sampleId = sampleId; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public static class MeasureProcessListModel { + private String id; + private String measurePerson; + private String measurePersonId; + private String measureSegment; + private String measureSegmentId; + private String measureSequence; + private String measureStatus; + private String measureStatusName; + private String requireCertifications; + private String updateTime; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getMeasurePerson() { + return measurePerson; + } + + public void setMeasurePerson(String measurePerson) { + this.measurePerson = measurePerson; + } + + public String getMeasurePersonId() { + return measurePersonId; + } + + public void setMeasurePersonId(String measurePersonId) { + this.measurePersonId = measurePersonId; + } + + public String getMeasureSegment() { + return measureSegment; + } + + public void setMeasureSegment(String measureSegment) { + this.measureSegment = measureSegment; + } + + public String getMeasureSegmentId() { + return measureSegmentId; + } + + public void setMeasureSegmentId(String measureSegmentId) { + this.measureSegmentId = measureSegmentId; + } + + public String getMeasureSequence() { + return measureSequence; + } + + public void setMeasureSequence(String measureSequence) { + this.measureSequence = measureSequence; + } + + public String getMeasureStatus() { + return measureStatus; + } + + public void setMeasureStatus(String measureStatus) { + this.measureStatus = measureStatus; + } + + public String getMeasureStatusName() { + return measureStatusName; + } + + public void setMeasureStatusName(String measureStatusName) { + this.measureStatusName = measureStatusName; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + + public static class MeasureSendBackListModel { + private String measureSegment; + private String measureSegmentId; + private String sendBackPerson; + private String sendBackPersonId; + private String sendBackReason; + private String sendBackTime; + + public String getMeasureSegment() { + return measureSegment; + } + + public void setMeasureSegment(String measureSegment) { + this.measureSegment = measureSegment; + } + + public String getMeasureSegmentId() { + return measureSegmentId; + } + + public void setMeasureSegmentId(String measureSegmentId) { + this.measureSegmentId = measureSegmentId; + } + + public String getSendBackPerson() { + return sendBackPerson; + } + + public void setSendBackPerson(String sendBackPerson) { + this.sendBackPerson = sendBackPerson; + } + + public String getSendBackPersonId() { + return sendBackPersonId; + } + + public void setSendBackPersonId(String sendBackPersonId) { + this.sendBackPersonId = sendBackPersonId; + } + + public String getSendBackReason() { + return sendBackReason; + } + + public void setSendBackReason(String sendBackReason) { + this.sendBackReason = sendBackReason; + } + + public String getSendBackTime() { + return sendBackTime; + } + + public void setSendBackTime(String sendBackTime) { + this.sendBackTime = sendBackTime; + } + } + } +} 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 de0677d..a280712 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 @@ -551,6 +551,15 @@ ): String /** + * 获取检测详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getDetectionDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 获取实时工作统计 */ @GET("/business/board/workStatistics") 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 0c65764..8c2a581 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 @@ -1297,6 +1297,19 @@ } /** + * 获取检测详情 + */ + suspend fun getDetectionDetail(orderId: String, sampleId: String): String { + val param = JsonObject() + param.addProperty("orderId", orderId) + param.addProperty("sampleId", sampleId) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getDetectionDetail(AuthenticationHelper.token!!, requestBody) + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { diff --git a/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt index 8dc98c6..0c80c62 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/DetectionViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DetectionDetailModel import com.casic.xz.meterage.model.DetectionListModel import com.casic.xz.meterage.model.OutfieldDetectionDetailModel import com.casic.xz.meterage.model.OutfieldDetectionListModel @@ -24,6 +25,7 @@ val outfieldDetectionList = MutableLiveData() val outfieldDetectionDetail = MutableLiveData() val detectionList = MutableLiveData() + val detectionDetail = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -113,4 +115,23 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getDetectionDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + detectionDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt new file mode 100644 index 0000000..449d525 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt @@ -0,0 +1,49 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.os.Bundle +import android.view.Gravity +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.MeasureProcessAdapter +import com.casic.xz.meterage.model.DetectionDetailModel +import com.pengxh.kt.lite.extensions.resetParams + +class MeasureProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val measureProcess = builder.measureProcess + + class Builder { + lateinit var context: Context + lateinit var measureProcess: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setMeasureProcess(measureProcess: List): Builder { + this.measureProcess = measureProcess + return this + } + + fun build(): MeasureProcessBottomSheet { + return MeasureProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_measure_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, measureProcess) + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 8cc77a0..1891be8 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -144,7 +144,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/sheet_measure_process.xml b/app/src/main/res/layout/sheet_measure_process.xml new file mode 100644 index 0000000..8cb533d --- /dev/null +++ b/app/src/main/res/layout/sheet_measure_process.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file