diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/OrderNotProcessedAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/OrderNotProcessedAdapter.kt new file mode 100644 index 0000000..4c98608 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/adapter/OrderNotProcessedAdapter.kt @@ -0,0 +1,76 @@ +package com.casic.qd.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.model.OrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class OrderNotProcessedAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): OrderNotProcessedAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate( + R.layout.item_order_not_processed_recycleview, parent, false + ) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.alarmContentView.text = rowsBean.alarmContentName + holder.createTimeView.text = rowsBean.createTime + holder.wellCodeView.text = rowsBean.wellCode + val alarmValue = rowsBean.alarmValue.toString() + if (alarmValue.isBlank()) { + holder.alarmValueView.text = "报警值未知" + } else { + holder.alarmValueView.text = alarmValue + } + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setChangeAlphaWhenPress(true) + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var alarmContentView: TextView = view.findViewById(R.id.alarmContentView) + var createTimeView: TextView = view.findViewById(R.id.createTimeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/OrderNotProcessedAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/OrderNotProcessedAdapter.kt new file mode 100644 index 0000000..4c98608 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/adapter/OrderNotProcessedAdapter.kt @@ -0,0 +1,76 @@ +package com.casic.qd.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.model.OrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class OrderNotProcessedAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): OrderNotProcessedAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate( + R.layout.item_order_not_processed_recycleview, parent, false + ) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.alarmContentView.text = rowsBean.alarmContentName + holder.createTimeView.text = rowsBean.createTime + holder.wellCodeView.text = rowsBean.wellCode + val alarmValue = rowsBean.alarmValue.toString() + if (alarmValue.isBlank()) { + holder.alarmValueView.text = "报警值未知" + } else { + holder.alarmValueView.text = alarmValue + } + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setChangeAlphaWhenPress(true) + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var alarmContentView: TextView = view.findViewById(R.id.alarmContentView) + var createTimeView: TextView = view.findViewById(R.id.createTimeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index c31e6d2..db9ba0a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -1,13 +1,37 @@ package com.casic.qd.smartwell.fragment +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.adapter.OrderNotProcessedAdapter import com.casic.qd.smartwell.base.BaseFragment +import com.casic.qd.smartwell.extensions.show +import com.casic.qd.smartwell.extensions.showEmptyPage +import com.casic.qd.smartwell.model.OrderListModel +import com.casic.qd.smartwell.utils.DialogHelper +import com.casic.qd.smartwell.utils.LoadState +import com.casic.qd.smartwell.utils.WeakReferenceHandler +import com.casic.qd.smartwell.vm.OperationViewModel +import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.pengxh.app.multilib.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_order_not_processed.* +import kotlinx.android.synthetic.main.include_empty_view.* /** * 工单-待处理 * */ class OrderNotProcessedFragment : BaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var operationViewModel: OperationViewModel + private lateinit var notProcessedAdapter: OrderNotProcessedAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + override fun initLayoutView(): Int = R.layout.fragment_order_not_processed override fun setupTopBarLayout() { @@ -15,10 +39,127 @@ } override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + //默认加载第一页 + obtainWorkOrderList() } override fun initEvent() { + notProcessedLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList() + } + notProcessedLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList() + } + workOrderViewModel.orderListModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + notProcessedLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show() + } + dataBeans.addAll(dataRows!!) + notProcessedLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022061504) + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + } + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 +// BroadcastReceiverManager.instance.sendMultiBroadcast( +// Constant.NOT_PROCESSED_ACTION, Constant.NOT_CONFIRMED_ACTION +// ) + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + } + + private fun obtainWorkOrderList() { + workOrderViewModel.obtainOrderListByState("0", pageIndex) + } + + private val callback = Handler.Callback { + if (it.what == 2022061504) { + notProcessedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("没有需要您处理的工单") { + pageIndex = 1 + obtainWorkOrderList() + } + } else { + emptyView!!.hide() + notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) + notProcessedView!!.layoutManager = LinearLayoutManager(requireContext()) + notProcessedView!!.adapter = notProcessedAdapter + notProcessedAdapter.setOnItemClickListener(object : + OrderNotProcessedAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } +// requireContext().navigatePageTo(jobId) + } + + override fun onOperationClicked(position: Int) { + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + } + } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/OrderNotProcessedAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/OrderNotProcessedAdapter.kt new file mode 100644 index 0000000..4c98608 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/adapter/OrderNotProcessedAdapter.kt @@ -0,0 +1,76 @@ +package com.casic.qd.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.model.OrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class OrderNotProcessedAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): OrderNotProcessedAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate( + R.layout.item_order_not_processed_recycleview, parent, false + ) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.alarmContentView.text = rowsBean.alarmContentName + holder.createTimeView.text = rowsBean.createTime + holder.wellCodeView.text = rowsBean.wellCode + val alarmValue = rowsBean.alarmValue.toString() + if (alarmValue.isBlank()) { + holder.alarmValueView.text = "报警值未知" + } else { + holder.alarmValueView.text = alarmValue + } + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setChangeAlphaWhenPress(true) + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var alarmContentView: TextView = view.findViewById(R.id.alarmContentView) + var createTimeView: TextView = view.findViewById(R.id.createTimeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index c31e6d2..db9ba0a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -1,13 +1,37 @@ package com.casic.qd.smartwell.fragment +import android.os.Handler +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.adapter.OrderNotProcessedAdapter import com.casic.qd.smartwell.base.BaseFragment +import com.casic.qd.smartwell.extensions.show +import com.casic.qd.smartwell.extensions.showEmptyPage +import com.casic.qd.smartwell.model.OrderListModel +import com.casic.qd.smartwell.utils.DialogHelper +import com.casic.qd.smartwell.utils.LoadState +import com.casic.qd.smartwell.utils.WeakReferenceHandler +import com.casic.qd.smartwell.vm.OperationViewModel +import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.pengxh.app.multilib.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.fragment_order_not_processed.* +import kotlinx.android.synthetic.main.include_empty_view.* /** * 工单-待处理 * */ class OrderNotProcessedFragment : BaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var operationViewModel: OperationViewModel + private lateinit var notProcessedAdapter: OrderNotProcessedAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + override fun initLayoutView(): Int = R.layout.fragment_order_not_processed override fun setupTopBarLayout() { @@ -15,10 +39,127 @@ } override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + //默认加载第一页 + obtainWorkOrderList() } override fun initEvent() { + notProcessedLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList() + } + notProcessedLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList() + } + workOrderViewModel.orderListModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + notProcessedLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show() + } + dataBeans.addAll(dataRows!!) + notProcessedLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022061504) + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + } + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 +// BroadcastReceiverManager.instance.sendMultiBroadcast( +// Constant.NOT_PROCESSED_ACTION, Constant.NOT_CONFIRMED_ACTION +// ) + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + } + + private fun obtainWorkOrderList() { + workOrderViewModel.obtainOrderListByState("0", pageIndex) + } + + private val callback = Handler.Callback { + if (it.what == 2022061504) { + notProcessedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("没有需要您处理的工单") { + pageIndex = 1 + obtainWorkOrderList() + } + } else { + emptyView!!.hide() + notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) + notProcessedView!!.layoutManager = LinearLayoutManager(requireContext()) + notProcessedView!!.adapter = notProcessedAdapter + notProcessedAdapter.setOnItemClickListener(object : + OrderNotProcessedAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } +// requireContext().navigatePageTo(jobId) + } + + override fun onOperationClicked(position: Int) { + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + } + } + true } } \ No newline at end of file diff --git a/app/src/main/res/layout/item_order_not_processed_recycleview.xml b/app/src/main/res/layout/item_order_not_processed_recycleview.xml new file mode 100644 index 0000000..a88e14b --- /dev/null +++ b/app/src/main/res/layout/item_order_not_processed_recycleview.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file