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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_completed.xml b/app/src/main/res/layout/fragment_task_completed.xml deleted file mode 100644 index 2b3a32d..0000000 --- a/app/src/main/res/layout/fragment_task_completed.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_completed.xml b/app/src/main/res/layout/fragment_task_completed.xml deleted file mode 100644 index 2b3a32d..0000000 --- a/app/src/main/res/layout/fragment_task_completed.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_detection.xml b/app/src/main/res/layout/fragment_task_detection.xml new file mode 100644 index 0000000..1703150 --- /dev/null +++ b/app/src/main/res/layout/fragment_task_detection.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_completed.xml b/app/src/main/res/layout/fragment_task_completed.xml deleted file mode 100644 index 2b3a32d..0000000 --- a/app/src/main/res/layout/fragment_task_completed.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_detection.xml b/app/src/main/res/layout/fragment_task_detection.xml new file mode 100644 index 0000000..1703150 --- /dev/null +++ b/app/src/main/res/layout/fragment_task_detection.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_under.xml b/app/src/main/res/layout/fragment_task_under.xml deleted file mode 100644 index 5f01550..0000000 --- a/app/src/main/res/layout/fragment_task_under.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_completed.xml b/app/src/main/res/layout/fragment_task_completed.xml deleted file mode 100644 index 2b3a32d..0000000 --- a/app/src/main/res/layout/fragment_task_completed.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_detection.xml b/app/src/main/res/layout/fragment_task_detection.xml new file mode 100644 index 0000000..1703150 --- /dev/null +++ b/app/src/main/res/layout/fragment_task_detection.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_under.xml b/app/src/main/res/layout/fragment_task_under.xml deleted file mode 100644 index 5f01550..0000000 --- a/app/src/main/res/layout/fragment_task_under.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/include_task2_top_layout.xml b/app/src/main/res/layout/include_task2_top_layout.xml new file mode 100644 index 0000000..e67041c --- /dev/null +++ b/app/src/main/res/layout/include_task2_top_layout.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_completed.xml b/app/src/main/res/layout/fragment_task_completed.xml deleted file mode 100644 index 2b3a32d..0000000 --- a/app/src/main/res/layout/fragment_task_completed.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_detection.xml b/app/src/main/res/layout/fragment_task_detection.xml new file mode 100644 index 0000000..1703150 --- /dev/null +++ b/app/src/main/res/layout/fragment_task_detection.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_under.xml b/app/src/main/res/layout/fragment_task_under.xml deleted file mode 100644 index 5f01550..0000000 --- a/app/src/main/res/layout/fragment_task_under.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/include_task2_top_layout.xml b/app/src/main/res/layout/include_task2_top_layout.xml new file mode 100644 index 0000000..e67041c --- /dev/null +++ b/app/src/main/res/layout/include_task2_top_layout.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_detection_rv_l.xml b/app/src/main/res/layout/item_await_detection_rv_l.xml new file mode 100644 index 0000000..a973100 --- /dev/null +++ b/app/src/main/res/layout/item_await_detection_rv_l.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_completed.xml b/app/src/main/res/layout/fragment_task_completed.xml deleted file mode 100644 index 2b3a32d..0000000 --- a/app/src/main/res/layout/fragment_task_completed.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_detection.xml b/app/src/main/res/layout/fragment_task_detection.xml new file mode 100644 index 0000000..1703150 --- /dev/null +++ b/app/src/main/res/layout/fragment_task_detection.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_under.xml b/app/src/main/res/layout/fragment_task_under.xml deleted file mode 100644 index 5f01550..0000000 --- a/app/src/main/res/layout/fragment_task_under.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/include_task2_top_layout.xml b/app/src/main/res/layout/include_task2_top_layout.xml new file mode 100644 index 0000000..e67041c --- /dev/null +++ b/app/src/main/res/layout/include_task2_top_layout.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_detection_rv_l.xml b/app/src/main/res/layout/item_await_detection_rv_l.xml new file mode 100644 index 0000000..a973100 --- /dev/null +++ b/app/src/main/res/layout/item_await_detection_rv_l.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_task_rv_l.xml b/app/src/main/res/layout/item_await_task_rv_l.xml index a973100..75b3d07 100644 --- a/app/src/main/res/layout/item_await_task_rv_l.xml +++ b/app/src/main/res/layout/item_await_task_rv_l.xml @@ -25,29 +25,6 @@ android:text="测量设备" android:textColor="@color/black" android:textSize="@dimen/sp_14" /> - - - - - - - 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_completed.xml b/app/src/main/res/layout/fragment_task_completed.xml deleted file mode 100644 index 2b3a32d..0000000 --- a/app/src/main/res/layout/fragment_task_completed.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_detection.xml b/app/src/main/res/layout/fragment_task_detection.xml new file mode 100644 index 0000000..1703150 --- /dev/null +++ b/app/src/main/res/layout/fragment_task_detection.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_under.xml b/app/src/main/res/layout/fragment_task_under.xml deleted file mode 100644 index 5f01550..0000000 --- a/app/src/main/res/layout/fragment_task_under.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/include_task2_top_layout.xml b/app/src/main/res/layout/include_task2_top_layout.xml new file mode 100644 index 0000000..e67041c --- /dev/null +++ b/app/src/main/res/layout/include_task2_top_layout.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_detection_rv_l.xml b/app/src/main/res/layout/item_await_detection_rv_l.xml new file mode 100644 index 0000000..a973100 --- /dev/null +++ b/app/src/main/res/layout/item_await_detection_rv_l.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_task_rv_l.xml b/app/src/main/res/layout/item_await_task_rv_l.xml index a973100..75b3d07 100644 --- a/app/src/main/res/layout/item_await_task_rv_l.xml +++ b/app/src/main/res/layout/item_await_task_rv_l.xml @@ -25,29 +25,6 @@ android:text="测量设备" android:textColor="@color/black" android:textSize="@dimen/sp_14" /> - - - - - - - diff --git a/app/src/main/res/layout/item_complete_detection_rv_l.xml b/app/src/main/res/layout/item_complete_detection_rv_l.xml new file mode 100644 index 0000000..113700b --- /dev/null +++ b/app/src/main/res/layout/item_complete_detection_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_completed.xml b/app/src/main/res/layout/fragment_task_completed.xml deleted file mode 100644 index 2b3a32d..0000000 --- a/app/src/main/res/layout/fragment_task_completed.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_detection.xml b/app/src/main/res/layout/fragment_task_detection.xml new file mode 100644 index 0000000..1703150 --- /dev/null +++ b/app/src/main/res/layout/fragment_task_detection.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_under.xml b/app/src/main/res/layout/fragment_task_under.xml deleted file mode 100644 index 5f01550..0000000 --- a/app/src/main/res/layout/fragment_task_under.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/include_task2_top_layout.xml b/app/src/main/res/layout/include_task2_top_layout.xml new file mode 100644 index 0000000..e67041c --- /dev/null +++ b/app/src/main/res/layout/include_task2_top_layout.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_detection_rv_l.xml b/app/src/main/res/layout/item_await_detection_rv_l.xml new file mode 100644 index 0000000..a973100 --- /dev/null +++ b/app/src/main/res/layout/item_await_detection_rv_l.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_task_rv_l.xml b/app/src/main/res/layout/item_await_task_rv_l.xml index a973100..75b3d07 100644 --- a/app/src/main/res/layout/item_await_task_rv_l.xml +++ b/app/src/main/res/layout/item_await_task_rv_l.xml @@ -25,29 +25,6 @@ android:text="测量设备" android:textColor="@color/black" android:textSize="@dimen/sp_14" /> - - - - - - - diff --git a/app/src/main/res/layout/item_complete_detection_rv_l.xml b/app/src/main/res/layout/item_complete_detection_rv_l.xml new file mode 100644 index 0000000..113700b --- /dev/null +++ b/app/src/main/res/layout/item_complete_detection_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_measure_log_rv_l.xml b/app/src/main/res/layout/item_measure_log_rv_l.xml deleted file mode 100644 index 1cd68e8..0000000 --- a/app/src/main/res/layout/item_measure_log_rv_l.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_completed.xml b/app/src/main/res/layout/fragment_task_completed.xml deleted file mode 100644 index 2b3a32d..0000000 --- a/app/src/main/res/layout/fragment_task_completed.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_detection.xml b/app/src/main/res/layout/fragment_task_detection.xml new file mode 100644 index 0000000..1703150 --- /dev/null +++ b/app/src/main/res/layout/fragment_task_detection.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_under.xml b/app/src/main/res/layout/fragment_task_under.xml deleted file mode 100644 index 5f01550..0000000 --- a/app/src/main/res/layout/fragment_task_under.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/include_task2_top_layout.xml b/app/src/main/res/layout/include_task2_top_layout.xml new file mode 100644 index 0000000..e67041c --- /dev/null +++ b/app/src/main/res/layout/include_task2_top_layout.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_detection_rv_l.xml b/app/src/main/res/layout/item_await_detection_rv_l.xml new file mode 100644 index 0000000..a973100 --- /dev/null +++ b/app/src/main/res/layout/item_await_detection_rv_l.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_task_rv_l.xml b/app/src/main/res/layout/item_await_task_rv_l.xml index a973100..75b3d07 100644 --- a/app/src/main/res/layout/item_await_task_rv_l.xml +++ b/app/src/main/res/layout/item_await_task_rv_l.xml @@ -25,29 +25,6 @@ android:text="测量设备" android:textColor="@color/black" android:textSize="@dimen/sp_14" /> - - - - - - - diff --git a/app/src/main/res/layout/item_complete_detection_rv_l.xml b/app/src/main/res/layout/item_complete_detection_rv_l.xml new file mode 100644 index 0000000..113700b --- /dev/null +++ b/app/src/main/res/layout/item_complete_detection_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_measure_log_rv_l.xml b/app/src/main/res/layout/item_measure_log_rv_l.xml deleted file mode 100644 index 1cd68e8..0000000 --- a/app/src/main/res/layout/item_measure_log_rv_l.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/item_overtime_task_rv_l.xml b/app/src/main/res/layout/item_overtime_task_rv_l.xml new file mode 100644 index 0000000..7f98f25 --- /dev/null +++ b/app/src/main/res/layout/item_overtime_task_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_completed.xml b/app/src/main/res/layout/fragment_task_completed.xml deleted file mode 100644 index 2b3a32d..0000000 --- a/app/src/main/res/layout/fragment_task_completed.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_detection.xml b/app/src/main/res/layout/fragment_task_detection.xml new file mode 100644 index 0000000..1703150 --- /dev/null +++ b/app/src/main/res/layout/fragment_task_detection.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_under.xml b/app/src/main/res/layout/fragment_task_under.xml deleted file mode 100644 index 5f01550..0000000 --- a/app/src/main/res/layout/fragment_task_under.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/include_task2_top_layout.xml b/app/src/main/res/layout/include_task2_top_layout.xml new file mode 100644 index 0000000..e67041c --- /dev/null +++ b/app/src/main/res/layout/include_task2_top_layout.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_detection_rv_l.xml b/app/src/main/res/layout/item_await_detection_rv_l.xml new file mode 100644 index 0000000..a973100 --- /dev/null +++ b/app/src/main/res/layout/item_await_detection_rv_l.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_task_rv_l.xml b/app/src/main/res/layout/item_await_task_rv_l.xml index a973100..75b3d07 100644 --- a/app/src/main/res/layout/item_await_task_rv_l.xml +++ b/app/src/main/res/layout/item_await_task_rv_l.xml @@ -25,29 +25,6 @@ android:text="测量设备" android:textColor="@color/black" android:textSize="@dimen/sp_14" /> - - - - - - - diff --git a/app/src/main/res/layout/item_complete_detection_rv_l.xml b/app/src/main/res/layout/item_complete_detection_rv_l.xml new file mode 100644 index 0000000..113700b --- /dev/null +++ b/app/src/main/res/layout/item_complete_detection_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_measure_log_rv_l.xml b/app/src/main/res/layout/item_measure_log_rv_l.xml deleted file mode 100644 index 1cd68e8..0000000 --- a/app/src/main/res/layout/item_measure_log_rv_l.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/item_overtime_task_rv_l.xml b/app/src/main/res/layout/item_overtime_task_rv_l.xml new file mode 100644 index 0000000..7f98f25 --- /dev/null +++ b/app/src/main/res/layout/item_overtime_task_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_process_log_rv_l.xml b/app/src/main/res/layout/item_process_log_rv_l.xml new file mode 100644 index 0000000..1cd68e8 --- /dev/null +++ b/app/src/main/res/layout/item_process_log_rv_l.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_completed.xml b/app/src/main/res/layout/fragment_task_completed.xml deleted file mode 100644 index 2b3a32d..0000000 --- a/app/src/main/res/layout/fragment_task_completed.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_detection.xml b/app/src/main/res/layout/fragment_task_detection.xml new file mode 100644 index 0000000..1703150 --- /dev/null +++ b/app/src/main/res/layout/fragment_task_detection.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_under.xml b/app/src/main/res/layout/fragment_task_under.xml deleted file mode 100644 index 5f01550..0000000 --- a/app/src/main/res/layout/fragment_task_under.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/include_task2_top_layout.xml b/app/src/main/res/layout/include_task2_top_layout.xml new file mode 100644 index 0000000..e67041c --- /dev/null +++ b/app/src/main/res/layout/include_task2_top_layout.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_detection_rv_l.xml b/app/src/main/res/layout/item_await_detection_rv_l.xml new file mode 100644 index 0000000..a973100 --- /dev/null +++ b/app/src/main/res/layout/item_await_detection_rv_l.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_task_rv_l.xml b/app/src/main/res/layout/item_await_task_rv_l.xml index a973100..75b3d07 100644 --- a/app/src/main/res/layout/item_await_task_rv_l.xml +++ b/app/src/main/res/layout/item_await_task_rv_l.xml @@ -25,29 +25,6 @@ android:text="测量设备" android:textColor="@color/black" android:textSize="@dimen/sp_14" /> - - - - - - - diff --git a/app/src/main/res/layout/item_complete_detection_rv_l.xml b/app/src/main/res/layout/item_complete_detection_rv_l.xml new file mode 100644 index 0000000..113700b --- /dev/null +++ b/app/src/main/res/layout/item_complete_detection_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_measure_log_rv_l.xml b/app/src/main/res/layout/item_measure_log_rv_l.xml deleted file mode 100644 index 1cd68e8..0000000 --- a/app/src/main/res/layout/item_measure_log_rv_l.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/item_overtime_task_rv_l.xml b/app/src/main/res/layout/item_overtime_task_rv_l.xml new file mode 100644 index 0000000..7f98f25 --- /dev/null +++ b/app/src/main/res/layout/item_overtime_task_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_process_log_rv_l.xml b/app/src/main/res/layout/item_process_log_rv_l.xml new file mode 100644 index 0000000..1cd68e8 --- /dev/null +++ b/app/src/main/res/layout/item_process_log_rv_l.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_under_detection_rv_l.xml b/app/src/main/res/layout/item_under_detection_rv_l.xml new file mode 100644 index 0000000..b194315 --- /dev/null +++ b/app/src/main/res/layout/item_under_detection_rv_l.xml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_completed.xml b/app/src/main/res/layout/fragment_task_completed.xml deleted file mode 100644 index 2b3a32d..0000000 --- a/app/src/main/res/layout/fragment_task_completed.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_detection.xml b/app/src/main/res/layout/fragment_task_detection.xml new file mode 100644 index 0000000..1703150 --- /dev/null +++ b/app/src/main/res/layout/fragment_task_detection.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_under.xml b/app/src/main/res/layout/fragment_task_under.xml deleted file mode 100644 index 5f01550..0000000 --- a/app/src/main/res/layout/fragment_task_under.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/include_task2_top_layout.xml b/app/src/main/res/layout/include_task2_top_layout.xml new file mode 100644 index 0000000..e67041c --- /dev/null +++ b/app/src/main/res/layout/include_task2_top_layout.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_detection_rv_l.xml b/app/src/main/res/layout/item_await_detection_rv_l.xml new file mode 100644 index 0000000..a973100 --- /dev/null +++ b/app/src/main/res/layout/item_await_detection_rv_l.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_task_rv_l.xml b/app/src/main/res/layout/item_await_task_rv_l.xml index a973100..75b3d07 100644 --- a/app/src/main/res/layout/item_await_task_rv_l.xml +++ b/app/src/main/res/layout/item_await_task_rv_l.xml @@ -25,29 +25,6 @@ android:text="测量设备" android:textColor="@color/black" android:textSize="@dimen/sp_14" /> - - - - - - - diff --git a/app/src/main/res/layout/item_complete_detection_rv_l.xml b/app/src/main/res/layout/item_complete_detection_rv_l.xml new file mode 100644 index 0000000..113700b --- /dev/null +++ b/app/src/main/res/layout/item_complete_detection_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_measure_log_rv_l.xml b/app/src/main/res/layout/item_measure_log_rv_l.xml deleted file mode 100644 index 1cd68e8..0000000 --- a/app/src/main/res/layout/item_measure_log_rv_l.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/item_overtime_task_rv_l.xml b/app/src/main/res/layout/item_overtime_task_rv_l.xml new file mode 100644 index 0000000..7f98f25 --- /dev/null +++ b/app/src/main/res/layout/item_overtime_task_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_process_log_rv_l.xml b/app/src/main/res/layout/item_process_log_rv_l.xml new file mode 100644 index 0000000..1cd68e8 --- /dev/null +++ b/app/src/main/res/layout/item_process_log_rv_l.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_under_detection_rv_l.xml b/app/src/main/res/layout/item_under_detection_rv_l.xml new file mode 100644 index 0000000..b194315 --- /dev/null +++ b/app/src/main/res/layout/item_under_detection_rv_l.xml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_under_task_rv_l.xml b/app/src/main/res/layout/item_under_task_rv_l.xml index f3d9a33..d90d497 100644 --- a/app/src/main/res/layout/item_under_task_rv_l.xml +++ b/app/src/main/res/layout/item_under_task_rv_l.xml @@ -26,28 +26,13 @@ android:textColor="@color/black" android:textSize="@dimen/sp_14" /> - - - - - - + android:text="流程" + android:textColor="@color/gray" + android:textSize="@dimen/sp_12" /> -) : 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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_completed.xml b/app/src/main/res/layout/fragment_task_completed.xml deleted file mode 100644 index 2b3a32d..0000000 --- a/app/src/main/res/layout/fragment_task_completed.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_detection.xml b/app/src/main/res/layout/fragment_task_detection.xml new file mode 100644 index 0000000..1703150 --- /dev/null +++ b/app/src/main/res/layout/fragment_task_detection.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_under.xml b/app/src/main/res/layout/fragment_task_under.xml deleted file mode 100644 index 5f01550..0000000 --- a/app/src/main/res/layout/fragment_task_under.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/include_task2_top_layout.xml b/app/src/main/res/layout/include_task2_top_layout.xml new file mode 100644 index 0000000..e67041c --- /dev/null +++ b/app/src/main/res/layout/include_task2_top_layout.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_detection_rv_l.xml b/app/src/main/res/layout/item_await_detection_rv_l.xml new file mode 100644 index 0000000..a973100 --- /dev/null +++ b/app/src/main/res/layout/item_await_detection_rv_l.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_task_rv_l.xml b/app/src/main/res/layout/item_await_task_rv_l.xml index a973100..75b3d07 100644 --- a/app/src/main/res/layout/item_await_task_rv_l.xml +++ b/app/src/main/res/layout/item_await_task_rv_l.xml @@ -25,29 +25,6 @@ android:text="测量设备" android:textColor="@color/black" android:textSize="@dimen/sp_14" /> - - - - - - - diff --git a/app/src/main/res/layout/item_complete_detection_rv_l.xml b/app/src/main/res/layout/item_complete_detection_rv_l.xml new file mode 100644 index 0000000..113700b --- /dev/null +++ b/app/src/main/res/layout/item_complete_detection_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_measure_log_rv_l.xml b/app/src/main/res/layout/item_measure_log_rv_l.xml deleted file mode 100644 index 1cd68e8..0000000 --- a/app/src/main/res/layout/item_measure_log_rv_l.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/item_overtime_task_rv_l.xml b/app/src/main/res/layout/item_overtime_task_rv_l.xml new file mode 100644 index 0000000..7f98f25 --- /dev/null +++ b/app/src/main/res/layout/item_overtime_task_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_process_log_rv_l.xml b/app/src/main/res/layout/item_process_log_rv_l.xml new file mode 100644 index 0000000..1cd68e8 --- /dev/null +++ b/app/src/main/res/layout/item_process_log_rv_l.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_under_detection_rv_l.xml b/app/src/main/res/layout/item_under_detection_rv_l.xml new file mode 100644 index 0000000..b194315 --- /dev/null +++ b/app/src/main/res/layout/item_under_detection_rv_l.xml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_under_task_rv_l.xml b/app/src/main/res/layout/item_under_task_rv_l.xml index f3d9a33..d90d497 100644 --- a/app/src/main/res/layout/item_under_task_rv_l.xml +++ b/app/src/main/res/layout/item_under_task_rv_l.xml @@ -26,28 +26,13 @@ android:textColor="@color/black" android:textSize="@dimen/sp_14" /> - - - - - - + android:text="流程" + android:textColor="@color/gray" + android:textSize="@dimen/sp_12" /> - - - - \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_completed.xml b/app/src/main/res/layout/fragment_task_completed.xml deleted file mode 100644 index 2b3a32d..0000000 --- a/app/src/main/res/layout/fragment_task_completed.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_detection.xml b/app/src/main/res/layout/fragment_task_detection.xml new file mode 100644 index 0000000..1703150 --- /dev/null +++ b/app/src/main/res/layout/fragment_task_detection.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_under.xml b/app/src/main/res/layout/fragment_task_under.xml deleted file mode 100644 index 5f01550..0000000 --- a/app/src/main/res/layout/fragment_task_under.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/include_task2_top_layout.xml b/app/src/main/res/layout/include_task2_top_layout.xml new file mode 100644 index 0000000..e67041c --- /dev/null +++ b/app/src/main/res/layout/include_task2_top_layout.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_detection_rv_l.xml b/app/src/main/res/layout/item_await_detection_rv_l.xml new file mode 100644 index 0000000..a973100 --- /dev/null +++ b/app/src/main/res/layout/item_await_detection_rv_l.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_task_rv_l.xml b/app/src/main/res/layout/item_await_task_rv_l.xml index a973100..75b3d07 100644 --- a/app/src/main/res/layout/item_await_task_rv_l.xml +++ b/app/src/main/res/layout/item_await_task_rv_l.xml @@ -25,29 +25,6 @@ android:text="测量设备" android:textColor="@color/black" android:textSize="@dimen/sp_14" /> - - - - - - - diff --git a/app/src/main/res/layout/item_complete_detection_rv_l.xml b/app/src/main/res/layout/item_complete_detection_rv_l.xml new file mode 100644 index 0000000..113700b --- /dev/null +++ b/app/src/main/res/layout/item_complete_detection_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_measure_log_rv_l.xml b/app/src/main/res/layout/item_measure_log_rv_l.xml deleted file mode 100644 index 1cd68e8..0000000 --- a/app/src/main/res/layout/item_measure_log_rv_l.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/item_overtime_task_rv_l.xml b/app/src/main/res/layout/item_overtime_task_rv_l.xml new file mode 100644 index 0000000..7f98f25 --- /dev/null +++ b/app/src/main/res/layout/item_overtime_task_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_process_log_rv_l.xml b/app/src/main/res/layout/item_process_log_rv_l.xml new file mode 100644 index 0000000..1cd68e8 --- /dev/null +++ b/app/src/main/res/layout/item_process_log_rv_l.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_under_detection_rv_l.xml b/app/src/main/res/layout/item_under_detection_rv_l.xml new file mode 100644 index 0000000..b194315 --- /dev/null +++ b/app/src/main/res/layout/item_under_detection_rv_l.xml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_under_task_rv_l.xml b/app/src/main/res/layout/item_under_task_rv_l.xml index f3d9a33..d90d497 100644 --- a/app/src/main/res/layout/item_under_task_rv_l.xml +++ b/app/src/main/res/layout/item_under_task_rv_l.xml @@ -26,28 +26,13 @@ android:textColor="@color/black" android:textSize="@dimen/sp_14" /> - - - - - - + android:text="流程" + android:textColor="@color/gray" + android:textSize="@dimen/sp_12" /> - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/sheet_process.xml b/app/src/main/res/layout/sheet_process.xml new file mode 100644 index 0000000..8cb533d --- /dev/null +++ b/app/src/main/res/layout/sheet_process.xml @@ -0,0 +1,13 @@ + + + + + \ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_completed.xml b/app/src/main/res/layout/fragment_task_completed.xml deleted file mode 100644 index 2b3a32d..0000000 --- a/app/src/main/res/layout/fragment_task_completed.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_detection.xml b/app/src/main/res/layout/fragment_task_detection.xml new file mode 100644 index 0000000..1703150 --- /dev/null +++ b/app/src/main/res/layout/fragment_task_detection.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_under.xml b/app/src/main/res/layout/fragment_task_under.xml deleted file mode 100644 index 5f01550..0000000 --- a/app/src/main/res/layout/fragment_task_under.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/include_task2_top_layout.xml b/app/src/main/res/layout/include_task2_top_layout.xml new file mode 100644 index 0000000..e67041c --- /dev/null +++ b/app/src/main/res/layout/include_task2_top_layout.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_detection_rv_l.xml b/app/src/main/res/layout/item_await_detection_rv_l.xml new file mode 100644 index 0000000..a973100 --- /dev/null +++ b/app/src/main/res/layout/item_await_detection_rv_l.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_task_rv_l.xml b/app/src/main/res/layout/item_await_task_rv_l.xml index a973100..75b3d07 100644 --- a/app/src/main/res/layout/item_await_task_rv_l.xml +++ b/app/src/main/res/layout/item_await_task_rv_l.xml @@ -25,29 +25,6 @@ android:text="测量设备" android:textColor="@color/black" android:textSize="@dimen/sp_14" /> - - - - - - - diff --git a/app/src/main/res/layout/item_complete_detection_rv_l.xml b/app/src/main/res/layout/item_complete_detection_rv_l.xml new file mode 100644 index 0000000..113700b --- /dev/null +++ b/app/src/main/res/layout/item_complete_detection_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_measure_log_rv_l.xml b/app/src/main/res/layout/item_measure_log_rv_l.xml deleted file mode 100644 index 1cd68e8..0000000 --- a/app/src/main/res/layout/item_measure_log_rv_l.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/item_overtime_task_rv_l.xml b/app/src/main/res/layout/item_overtime_task_rv_l.xml new file mode 100644 index 0000000..7f98f25 --- /dev/null +++ b/app/src/main/res/layout/item_overtime_task_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_process_log_rv_l.xml b/app/src/main/res/layout/item_process_log_rv_l.xml new file mode 100644 index 0000000..1cd68e8 --- /dev/null +++ b/app/src/main/res/layout/item_process_log_rv_l.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_under_detection_rv_l.xml b/app/src/main/res/layout/item_under_detection_rv_l.xml new file mode 100644 index 0000000..b194315 --- /dev/null +++ b/app/src/main/res/layout/item_under_detection_rv_l.xml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_under_task_rv_l.xml b/app/src/main/res/layout/item_under_task_rv_l.xml index f3d9a33..d90d497 100644 --- a/app/src/main/res/layout/item_under_task_rv_l.xml +++ b/app/src/main/res/layout/item_under_task_rv_l.xml @@ -26,28 +26,13 @@ android:textColor="@color/black" android:textSize="@dimen/sp_14" /> - - - - - - + android:text="流程" + android:textColor="@color/gray" + android:textSize="@dimen/sp_12" /> - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/sheet_process.xml b/app/src/main/res/layout/sheet_process.xml new file mode 100644 index 0000000..8cb533d --- /dev/null +++ b/app/src/main/res/layout/sheet_process.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/overtime_task.png b/app/src/main/res/mipmap-xxxhdpi/overtime_task.png new file mode 100644 index 0000000..f34a698 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/overtime_task.png Binary files differ 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 deleted file mode 100644 index 102a749..0000000 --- a/app/src/main/java/com/casic/xz/meterage/adapter/MeasureProcessAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -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/extensions/Convert.kt b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt new file mode 100644 index 0000000..6a200c5 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/Convert.kt @@ -0,0 +1,35 @@ +package com.casic.xz.meterage.extensions + +import com.casic.xz.meterage.model.DetectionDetailModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskDetailModel + +fun DetectionDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} + +fun TaskDetailModel.DataModel.MeasureProcessListModel.toProcessListModel(): ProcessListModel { + val model = ProcessListModel() + model.id = this.id + model.measurePerson = this.measurePerson + model.measurePersonId = this.measurePersonId + model.measureSegment = this.measureSegment + model.measureSegmentId = this.measureSegmentId + model.measureSequence = this.measureSequence + model.measureStatus = this.measureStatus + model.measureStatusName = this.measureStatusName + model.requireCertifications = this.requireCertifications + model.updateTime = this.updateTime + return model +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt new file mode 100644 index 0000000..f76c6a9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/DetectionPageFragment.kt @@ -0,0 +1,80 @@ +package com.casic.xz.meterage.fragment + +import android.widget.LinearLayout +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.fragment.detection.AwaitDetectionFragment +import com.casic.xz.meterage.fragment.detection.CompletedDetectionFragment +import com.casic.xz.meterage.fragment.detection.UnderDetectionFragment +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_detection.* + +class DetectionPageFragment : KotlinBaseFragment() { + + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private lateinit var detectionViewModel: DetectionViewModel + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(AwaitDetectionFragment()) + fragmentPages.add(UnderDetectionFragment()) + fragmentPages.add(CompletedDetectionFragment()) + } + + override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + + weakReferenceHandler = WeakReferenceHandler { + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() + } + true + } + + val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + + detectionViewPager.adapter = SubViewPagerAdapter( + childFragmentManager, fragmentPages, samplePageTitles + ) + detectionViewPager.offscreenPageLimit = samplePageTitles.size + //绑定 + topTabLayout.setupWithViewPager(detectionViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val params = statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + statusBarView.requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt index ed53e22..fab410d 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/TaskPageFragment.kt @@ -2,17 +2,19 @@ import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.SubViewPagerAdapter -import com.casic.xz.meterage.fragment.task.AwaitDetectionFragment -import com.casic.xz.meterage.fragment.task.CompletedDetectionFragment -import com.casic.xz.meterage.fragment.task.UnderDetectionFragment +import com.casic.xz.meterage.fragment.task.AwaitTaskFragment +import com.casic.xz.meterage.fragment.task.CompletedTaskFragment +import com.casic.xz.meterage.fragment.task.OvertimeTaskFragment +import com.casic.xz.meterage.fragment.task.UnderTaskFragment import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.android.synthetic.main.fragment_task.* -import kotlinx.android.synthetic.main.include_task_top_layout.* class TaskPageFragment : KotlinBaseFragment() { @@ -20,56 +22,44 @@ lateinit var weakReferenceHandler: WeakReferenceHandler } + private lateinit var detectionViewModel: DetectionViewModel private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(AwaitDetectionFragment()) - fragmentPages.add(UnderDetectionFragment()) - fragmentPages.add(CompletedDetectionFragment()) + fragmentPages.add(AwaitTaskFragment()) + fragmentPages.add(UnderTaskFragment()) + fragmentPages.add(CompletedTaskFragment()) + fragmentPages.add(OvertimeTaskFragment()) } override fun initData() { + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionCountResult.observe(this) { +// if (it.code == 200) { +// +// } + } + weakReferenceHandler = WeakReferenceHandler { - when (it.what) { - LocaleConstant.TASK_AWAIT_DETECTION -> { - awaitDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION -> { - underDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION -> { - completedDetectionCountView.text = it.obj.toString() - } - LocaleConstant.TASK_UNDER_DETECTION_AUTO -> { - val underDetectionCount = underDetectionCountView.text.toString() - var count = underDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - underDetectionCountView.text = count.toString() - } - LocaleConstant.TASK_COMPLETED_DETECTION_AUTO -> { - val completedDetectionCount = completedDetectionCountView.text.toString() - var count = completedDetectionCount.ifBlank { - 0 - } as Int - //数量自增1 - count += 1 - completedDetectionCountView.text = count.toString() - } + if (it.what == LocaleConstant.DETECTION_COUNT) { + detectionViewModel.getDetectionCount() } true } - val samplePageTitles = arrayOf("待检测", "检测中", "检测完成") + val samplePageTitles = arrayOf("待分发", "检测中", "检测完成", "已超期") - sampleViewPager.adapter = SubViewPagerAdapter( + taskViewPager.adapter = SubViewPagerAdapter( childFragmentManager, fragmentPages, samplePageTitles ) - sampleViewPager.offscreenPageLimit = samplePageTitles.size + taskViewPager.offscreenPageLimit = samplePageTitles.size //绑定 - topTabLayout.setupWithViewPager(sampleViewPager) + topTabLayout.setupWithViewPager(taskViewPager) + } + + override fun onResume() { + super.onResume() + detectionViewModel.getDetectionCount() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt new file mode 100644 index 0000000..87ef68e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/AwaitDetectionFragment.kt @@ -0,0 +1,228 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitDetectionFragment : KotlinBaseFragment() { + + private val kTag = "AwaitDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042101) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "2", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042101 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待检测样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.receiveDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定将接收此任务?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.receiveDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt new file mode 100644 index 0000000..377a40e --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/CompletedDetectionFragment.kt @@ -0,0 +1,180 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedDetectionFragment : KotlinBaseFragment() { + + private val kTag = "CompletedDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042202) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "4", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042202 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完的样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt new file mode 100644 index 0000000..caeeabf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/detection/UnderDetectionFragment.kt @@ -0,0 +1,227 @@ +package com.casic.xz.meterage.fragment.detection + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.DetectionPageFragment +import com.casic.xz.meterage.model.DetectionListModel +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.DetectionViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderDetectionFragment : KotlinBaseFragment() { + + private val kTag = "UnderDetectionFragment" + private lateinit var detectionViewModel: DetectionViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var detectionAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var clickedPosition = 0 + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] + detectionViewModel.detectionList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042201) + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + + detectionViewModel.detectionDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + + detectionViewModel.receiveResult.observe(this) { + if (it.code == 200) { + dataBeans.removeAt(clickedPosition) + detectionAdapter.notifyItemRemoved(clickedPosition) + detectionAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + } + + //刷新顶部父类数据 + DetectionPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.DETECTION_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getDetectionListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getDetectionListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getDetectionListByState() + } + } + + private fun getDetectionListByState() { + detectionViewModel.getDetectionListByState( + "", + "", + "", + "", + "3", + "", + "", + "", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042201 -> { + if (isRefresh || isLoadMore) { + detectionAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getDetectionListByState() + } + } else { + emptyView!!.hide() + detectionAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_detection_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: DetectionListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看检定记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + detectionViewModel.getDetectionDetail( + item.orderId, item.sampleId + ) + } + + //收入 + viewHolder.setOnClickListener(R.id.completeDetectionView) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("此任务确定已完成?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + detectionViewModel.completeDetection( + item.orderId, item.sampleId + ) + } + }).build().show() + } + } + } + detectionTaskRecyclerView.adapter = detectionAdapter + } + } + } + } + true + } +} \ 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 deleted file mode 100644 index 064b3e3..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_await.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class AwaitDetectionFragment : KotlinBaseFragment() { - - private val kTag = "AwaitDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - awaitTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - awaitTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042101) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_AWAIT_DETECTION - message.obj = dataBeans.size - - //刷新待检测数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_UNDER_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - awaitTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - awaitTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "2", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_await - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042101 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无待检测样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_await_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.receiveDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("确定将接收此任务?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.receiveDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - awaitTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt new file mode 100644 index 0000000..46ab87f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/AwaitTaskFragment.kt @@ -0,0 +1,158 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class AwaitTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042301) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "2", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042301 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无待分发样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_await_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt deleted file mode 100644 index ecb72eb..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedDetectionFragment.kt +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_task_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class CompletedDetectionFragment : KotlinBaseFragment() { - - private val kTag = "CompletedDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_COMPLETED_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - totalTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - totalTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042202) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - totalTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - totalTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "4", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_completed - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042202 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测完的样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_complete_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - } - } - totalTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt new file mode 100644 index 0000000..2de5479 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/CompletedTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class CompletedTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042303) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "4", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042303 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测完成样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_complete_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt new file mode 100644 index 0000000..6b00c27 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/OvertimeTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class OvertimeTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042304) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "8", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042304 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无超期样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_overtime_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt deleted file mode 100644 index 1f09811..0000000 --- a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderDetectionFragment.kt +++ /dev/null @@ -1,225 +0,0 @@ -package com.casic.xz.meterage.fragment.task - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import com.casic.xz.meterage.R -import com.casic.xz.meterage.extensions.formatToYearMonthDay -import com.casic.xz.meterage.extensions.isEarlierThenCurrent -import com.casic.xz.meterage.extensions.showEmptyPage -import com.casic.xz.meterage.fragment.TaskPageFragment -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 -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_task_under.* -import kotlinx.android.synthetic.main.include_empty_view.* - -class UnderDetectionFragment : KotlinBaseFragment() { - - private val kTag = "UnderDetectionFragment" - private lateinit var detectionViewModel: DetectionViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var detectionAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - private var clickedPosition = 0 - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - detectionViewModel = ViewModelProvider(this)[DetectionViewModel::class.java] - detectionViewModel.detectionList.observe(this) { - if (it.code == 200) { - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = it.data.total - - TaskPageFragment.weakReferenceHandler.sendMessage(message) - - //绑定列表 - val dataRows = it.data?.rows!! - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows - underTaskLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows.size == 0) { - "到底了,别拉了".show(requireContext()) - } - dataBeans.addAll(dataRows) - underTaskLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows - } - } - weakReferenceHandler.sendEmptyMessage(2023042201) - } - } - - detectionViewModel.detectionDetail.observe(this) { - if (it.code == 200) { - MeasureProcessBottomSheet.Builder() - .setContext(requireContext()) - .setMeasureProcess(it.data.measureProcessList) - .build().show() - } - } - - detectionViewModel.receiveResult.observe(this) { - if (it.code == 200) { - dataBeans.removeAt(clickedPosition) - detectionAdapter.notifyItemRemoved(clickedPosition) - detectionAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - - //更新顶部任务数量 - val message = TaskPageFragment.weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.TASK_UNDER_DETECTION - message.obj = dataBeans.size - - //刷新检测中数量 - TaskPageFragment.weakReferenceHandler.sendMessage(message) - //刷新检测完数量 - TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COMPLETED_DETECTION_AUTO) - } - } - } - - override fun onResume() { - super.onResume() - pageIndex = 1 - getDetectionListByState() - } - - override fun initEvent() { - underTaskLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - getDetectionListByState() - } - - underTaskLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - getDetectionListByState() - } - } - - private fun getDetectionListByState() { - detectionViewModel.getDetectionListByState( - "", - "", - "", - "", - "3", - "", - "", - "", - "", - "", - pageIndex - ) - } - - override fun initLayoutView(): Int = R.layout.fragment_task_under - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - private val callback = Handler.Callback { - when (it.what) { - 2023042201 -> { - if (isRefresh || isLoadMore) { - detectionAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无检测中样品") { - pageIndex = 1 - getDetectionListByState() - } - } else { - emptyView!!.hide() - detectionAdapter = object : - NormalRecyclerAdapter( - R.layout.item_under_task_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: DetectionListModel.DataModel.RowsModel - ) { - if (item.requireOverTime.isEarlierThenCurrent()) { - viewHolder.setTextColor( - R.id.dateView, R.color.red.convertColor(requireContext()) - ) - } else { - viewHolder.setTextColor( - R.id.dateView, R.color.black.convertColor(requireContext()) - ) - } - - viewHolder.setText(R.id.sampleNameView, item.sampleName) - .setText(R.id.currentLibView, item.currentSegment) - .setText( - R.id.dateView, item.requireOverTime.formatToYearMonthDay() - ) - - //查看检定记录 - viewHolder.setOnClickListener(R.id.showProcessView) { - detectionViewModel.getDetectionDetail( - item.orderId, item.sampleId - ) - } - - //收入 - viewHolder.setOnClickListener(R.id.completeDetectionView) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("此任务确定已完成?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - detectionViewModel.completeDetection( - item.orderId, item.sampleId - ) - } - }).build().show() - } - } - } - underTaskRecyclerView.adapter = detectionAdapter - } - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt new file mode 100644 index 0000000..2f74ecd --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/task/UnderTaskFragment.kt @@ -0,0 +1,178 @@ +package com.casic.xz.meterage.fragment.task + +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.isEarlierThenCurrent +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.extensions.toProcessListModel +import com.casic.xz.meterage.fragment.TaskPageFragment +import com.casic.xz.meterage.model.ProcessListModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.vm.TaskViewModel +import com.casic.xz.meterage.widgets.ProcessBottomSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.android.synthetic.main.fragment_task_detection.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class UnderTaskFragment : KotlinBaseFragment() { + + private lateinit var taskViewModel: TaskViewModel + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var taskAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(callback) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskViewModel.taskList.observe(this) { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + detectionTaskLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows) + detectionTaskLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023042302) + //刷新顶部父类数据 + TaskPageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.TASK_COUNT) + } + } + + taskViewModel.taskDetail.observe(this) { + if (it.code == 200) { + val arrayList = ArrayList() + it.data.measureProcessList.forEach { process -> + arrayList.add(process.toProcessListModel()) + } + + ProcessBottomSheet.Builder() + .setContext(requireContext()).setProcess(arrayList).build().show() + } + } + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getTaskListByState() + } + + override fun initEvent() { + detectionTaskLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getTaskListByState() + } + + detectionTaskLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getTaskListByState() + } + } + + private fun getTaskListByState() { + taskViewModel.getTaskListByState( + "", + "", + "", + arrayOf(), + "", + "", + "", + "", + "3", + "", + "", + pageIndex + ) + } + + override fun initLayoutView(): Int = R.layout.fragment_task_detection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } + + private val callback = Handler.Callback { + when (it.what) { + 2023042302 -> { + if (isRefresh || isLoadMore) { + taskAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("无检测中样品") { + pageIndex = 1 + getTaskListByState() + } + } else { + emptyView!!.hide() + taskAdapter = object : + NormalRecyclerAdapter( + R.layout.item_under_task_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: TaskListModel.DataModel.RowsModel + ) { + if (item.requireOverTime.isEarlierThenCurrent()) { + viewHolder.setTextColor( + R.id.dateView, R.color.red.convertColor(requireContext()) + ) + } else { + viewHolder.setTextColor( + R.id.dateView, R.color.black.convertColor(requireContext()) + ) + } + + viewHolder.setText(R.id.sampleNameView, item.sampleName) + .setText(R.id.currentLibView, item.currentSegment) + .setText( + R.id.dateView, item.requireOverTime.formatToYearMonthDay() + ) + + //查看记录 + viewHolder.setOnClickListener(R.id.showProcessView) { + taskViewModel.getTaskDetail(item.orderId, item.sampleId) + } + } + } + detectionTaskRecyclerView.adapter = taskAdapter + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java new file mode 100644 index 0000000..aaf81ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ProcessListModel.java @@ -0,0 +1,94 @@ +package com.casic.xz.meterage.model; + +public class ProcessListModel { + 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; + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java new file mode 100644 index 0000000..d1013ab --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskDetailModel.java @@ -0,0 +1,475 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskDetailModel { + + 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/model/TaskListModel.java b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java new file mode 100644 index 0000000..6e92aea --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/TaskListModel.java @@ -0,0 +1,256 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class TaskListModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alreadyCertifications; + private String currentSegment; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String handOutProperty; + private String isUrgent; + private String manufacturingNo; + private String orderId; + private String orderNo; + private String realDeliverTime; + private String remark; + private String requireCertifications; + private String requireOverTime; + private String sampleBelong; + private String sampleBelongName; + private String sampleId; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String sampleStatus; + + public String getAlreadyCertifications() { + return alreadyCertifications; + } + + public void setAlreadyCertifications(String alreadyCertifications) { + this.alreadyCertifications = alreadyCertifications; + } + + public String getCurrentSegment() { + return currentSegment; + } + + public void setCurrentSegment(String currentSegment) { + this.currentSegment = currentSegment; + } + + 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 getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getHandOutProperty() { + return handOutProperty; + } + + public void setHandOutProperty(String handOutProperty) { + this.handOutProperty = handOutProperty; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getRealDeliverTime() { + return realDeliverTime; + } + + public void setRealDeliverTime(String realDeliverTime) { + this.realDeliverTime = realDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireCertifications() { + return requireCertifications; + } + + public void setRequireCertifications(String requireCertifications) { + this.requireCertifications = requireCertifications; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + 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 String getSampleStatus() { + return sampleStatus; + } + + public void setSampleStatus(String sampleStatus) { + this.sampleStatus = sampleStatus; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 94b79cd..b31efe0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -43,11 +43,8 @@ * */ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 - const val TASK_AWAIT_DETECTION = 2023000001 - const val TASK_UNDER_DETECTION = 2023000002 - const val TASK_COMPLETED_DETECTION = 2023000003 - const val TASK_UNDER_DETECTION_AUTO = 2023000004 - const val TASK_COMPLETED_DETECTION_AUTO = 2023000005 + const val DETECTION_COUNT = 2023000001 + const val TASK_COUNT = 2023000002 /** * ============================================================================================= 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 e47639d..17e645b 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 @@ -119,7 +119,7 @@ /** * 获取待办提醒列表 */ - @POST("/workbench/remindMessage/list") + @POST("/workbench/remindMessage/listPage") suspend fun getRemindList( @Header("token") token: String, @Body requestBody: RequestBody, @@ -597,4 +597,24 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 根据状态获取任务列表 + */ + @POST("/business/labExecutive/handOut/list") + suspend fun getTaskListByState( + @Header("token") token: String, + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map + ): String + + /** + * 获取任务详情 + */ + @POST("/business/labExecutive/handOut/detail") + suspend fun getTaskDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 77834c6..2755c28 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 @@ -6,6 +6,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LocaleConstant import com.google.gson.Gson +import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory @@ -1318,47 +1319,52 @@ /** * 收入待检测 + * + * 接口考虑到PC端会有多个待检测需要收入,所以采用JsonArray */ suspend fun receiveDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.receiveDetection(AuthenticationHelper.token!!, requestBody) } /** - * 收入待检测 + * 完成检测中 + * + * 接口考虑到PC端会有多个完成检测中,所以采用JsonArray */ suspend fun completeDetection(orderId: String, sampleId: String): String { - //TODO 参数需要确认 - // [ - // { - // "orderId": "1646795440283561986", - // "sampleId": "1646795440585551873" - // } - // ] + val array = JsonArray() val param = JsonObject() param.addProperty("orderId", orderId) param.addProperty("sampleId", sampleId) - val requestBody = param.toString().toRequestBody( + + array.add(param) + + val requestBody = array.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) return api.completeDetection(AuthenticationHelper.token!!, requestBody) } /** + * 获取各状态检测任务数量 + * */ + suspend fun getDetectionCount(): String { + return "" + } + + /** * 获取实时工作统计 */ suspend fun getRealTimeWork(): String { @@ -1379,4 +1385,61 @@ ) return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) } + + /** + * 根据状态获取任务列表 + */ + suspend fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ): String { + val param = JsonObject() + param.addProperty("sampleName", sampleName) + param.addProperty("isUrgent", isUrgent) + param.addProperty("orderNo", orderNo) + param.add("ids", gson.toJsonTree(ids, typeToken).asJsonArray) + param.addProperty("sampleBelong", sampleBelong) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + param.addProperty("sampleNo", sampleNo) + param.addProperty("sampleStatus", sampleStatus) + param.addProperty("customerName", customerName) + param.addProperty("customerNo", customerNo) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskListByState( + AuthenticationHelper.token!!, requestBody, limitMap, offsetMap + ) + } + + /** + * 获取任务详情 + */ + suspend fun getTaskDetail(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.getTaskDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index cd22b8a..bad67dc 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,6 +8,7 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment @@ -47,9 +48,11 @@ userViewModel.staffResult.observe(this) { isMeterStaff -> fragmentPages.add(HomePageFragment(userId)) if (isMeterStaff) { - fragmentPages.add(TaskPageFragment()) + //计量人员 + fragmentPages.add(DetectionPageFragment()) } else { - //TODO 非计量人员 + //非计量人员 + fragmentPages.add(TaskPageFragment()) } fragmentPages.add(MinePageFragment()) 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 442af3e..b0b37ea 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 @@ -14,7 +14,7 @@ import com.pengxh.kt.lite.vm.LoadState /** - * 外场检测 VM + * 检测 VM * */ class DetectionViewModel : BaseViewModel() { @@ -24,6 +24,7 @@ val detectionList = MutableLiveData() val detectionDetail = MutableLiveData() val receiveResult = MutableLiveData() + val detectionCountResult = MutableLiveData() fun getOutfieldDetectionList( approvalStatus: String, @@ -170,4 +171,19 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getDetectionCount() = launch({ + val response = RetrofitServiceManager.getDetectionCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// detectionCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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/vm/TaskViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt new file mode 100644 index 0000000..ab8a598 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/TaskViewModel.kt @@ -0,0 +1,106 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.TaskDetailModel +import com.casic.xz.meterage.model.TaskListModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +/** + * 任务(其实就是检测,只是角色不同,叫法不同,功能略有不同)VM + * */ +class TaskViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val taskList = MutableLiveData() + val taskDetail = MutableLiveData() + val taskCountResult = MutableLiveData() + + //2,3,4,8 + fun getTaskListByState( + sampleName: String, + isUrgent: String, + orderNo: String, + ids: Array, + sampleBelong: String, + startTime: String, + endTime: String, + sampleNo: String, + sampleStatus: String, + customerName: String, + customerNo: String, + offset: Int + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskListByState( + sampleName, + isUrgent, + orderNo, + ids, + sampleBelong, + startTime, + endTime, + sampleNo, + sampleStatus, + customerName, + customerNo, + offset + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskDetail(orderId: String, sampleId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getTaskDetail(orderId, sampleId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + taskDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getTaskCount() = launch({ +// val response = RetrofitServiceManager.getTaskCount() +// val responseCode = response.separateResponseCode() +// if (responseCode == 200) { +// taskCountResult.value = gson.fromJson( +// response, object : TypeToken() {}.type +// ) +// } else { +// response.toErrorMessage().show(BaseApplication.get()) +// } + }, { + 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 deleted file mode 100644 index 449d525..0000000 --- a/app/src/main/java/com/casic/xz/meterage/widgets/MeasureProcessBottomSheet.kt +++ /dev/null @@ -1,49 +0,0 @@ -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/widgets/ProcessBottomSheet.kt b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt new file mode 100644 index 0000000..20103b1 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/widgets/ProcessBottomSheet.kt @@ -0,0 +1,110 @@ +package com.casic.xz.meterage.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +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.ProcessListModel +import com.pengxh.kt.lite.extensions.resetParams + +class ProcessBottomSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + + private val ctx = builder.context + private val process = builder.process + + class Builder { + lateinit var context: Context + lateinit var process: List + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setProcess(process: List): Builder { + this.process = process + return this + } + + fun build(): ProcessBottomSheet { + return ProcessBottomSheet(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1.0) + setContentView(R.layout.sheet_process) + setCancelable(true) + setCanceledOnTouchOutside(true) + + val logRecyclerView: RecyclerView = findViewById(R.id.logRecyclerView) + logRecyclerView.adapter = MeasureProcessAdapter(ctx, process) + } + + inner 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_process_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/res/layout/fragment_detection.xml b/app/src/main/res/layout/fragment_detection.xml new file mode 100644 index 0000000..27f1fdf --- /dev/null +++ b/app/src/main/res/layout/fragment_detection.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task.xml b/app/src/main/res/layout/fragment_task.xml index f4534e3..a12a130 100644 --- a/app/src/main/res/layout/fragment_task.xml +++ b/app/src/main/res/layout/fragment_task.xml @@ -16,11 +16,11 @@ android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" android:gravity="center" - android:text="我的任务" + android:text="任务" android:textColor="@color/black" android:textSize="@dimen/sp_18" /> - + diff --git a/app/src/main/res/layout/fragment_task_await.xml b/app/src/main/res/layout/fragment_task_await.xml deleted file mode 100644 index 95e719c..0000000 --- a/app/src/main/res/layout/fragment_task_await.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_completed.xml b/app/src/main/res/layout/fragment_task_completed.xml deleted file mode 100644 index 2b3a32d..0000000 --- a/app/src/main/res/layout/fragment_task_completed.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_detection.xml b/app/src/main/res/layout/fragment_task_detection.xml new file mode 100644 index 0000000..1703150 --- /dev/null +++ b/app/src/main/res/layout/fragment_task_detection.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_task_under.xml b/app/src/main/res/layout/fragment_task_under.xml deleted file mode 100644 index 5f01550..0000000 --- a/app/src/main/res/layout/fragment_task_under.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/include_task2_top_layout.xml b/app/src/main/res/layout/include_task2_top_layout.xml new file mode 100644 index 0000000..e67041c --- /dev/null +++ b/app/src/main/res/layout/include_task2_top_layout.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_detection_rv_l.xml b/app/src/main/res/layout/item_await_detection_rv_l.xml new file mode 100644 index 0000000..a973100 --- /dev/null +++ b/app/src/main/res/layout/item_await_detection_rv_l.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_await_task_rv_l.xml b/app/src/main/res/layout/item_await_task_rv_l.xml index a973100..75b3d07 100644 --- a/app/src/main/res/layout/item_await_task_rv_l.xml +++ b/app/src/main/res/layout/item_await_task_rv_l.xml @@ -25,29 +25,6 @@ android:text="测量设备" android:textColor="@color/black" android:textSize="@dimen/sp_14" /> - - - - - - - diff --git a/app/src/main/res/layout/item_complete_detection_rv_l.xml b/app/src/main/res/layout/item_complete_detection_rv_l.xml new file mode 100644 index 0000000..113700b --- /dev/null +++ b/app/src/main/res/layout/item_complete_detection_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_measure_log_rv_l.xml b/app/src/main/res/layout/item_measure_log_rv_l.xml deleted file mode 100644 index 1cd68e8..0000000 --- a/app/src/main/res/layout/item_measure_log_rv_l.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/item_overtime_task_rv_l.xml b/app/src/main/res/layout/item_overtime_task_rv_l.xml new file mode 100644 index 0000000..7f98f25 --- /dev/null +++ b/app/src/main/res/layout/item_overtime_task_rv_l.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_process_log_rv_l.xml b/app/src/main/res/layout/item_process_log_rv_l.xml new file mode 100644 index 0000000..1cd68e8 --- /dev/null +++ b/app/src/main/res/layout/item_process_log_rv_l.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_under_detection_rv_l.xml b/app/src/main/res/layout/item_under_detection_rv_l.xml new file mode 100644 index 0000000..b194315 --- /dev/null +++ b/app/src/main/res/layout/item_under_detection_rv_l.xml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_under_task_rv_l.xml b/app/src/main/res/layout/item_under_task_rv_l.xml index f3d9a33..d90d497 100644 --- a/app/src/main/res/layout/item_under_task_rv_l.xml +++ b/app/src/main/res/layout/item_under_task_rv_l.xml @@ -26,28 +26,13 @@ android:textColor="@color/black" android:textSize="@dimen/sp_14" /> - - - - - - + android:text="流程" + android:textColor="@color/gray" + android:textSize="@dimen/sp_12" /> - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/sheet_process.xml b/app/src/main/res/layout/sheet_process.xml new file mode 100644 index 0000000..8cb533d --- /dev/null +++ b/app/src/main/res/layout/sheet_process.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/overtime_task.png b/app/src/main/res/mipmap-xxxhdpi/overtime_task.png new file mode 100644 index 0000000..f34a698 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/overtime_task.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/total_sample.png b/app/src/main/res/mipmap-xxxhdpi/total_sample.png deleted file mode 100644 index f34a698..0000000 --- a/app/src/main/res/mipmap-xxxhdpi/total_sample.png +++ /dev/null Binary files differ