diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt new file mode 100644 index 0000000..9aa1742 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt @@ -0,0 +1,137 @@ +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.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.arrowAnimation +import com.casic.qd.smartwell.model.ExpandableDataModel +import com.casic.qd.smartwell.model.OrderListModel +import com.casic.qd.smartwell.utils.TimeLineItemDecoration +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class CompletedOrderAdapter( + private val context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private var isExpand = false + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): CompletedOrderAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate( + R.layout.item_order_completed_recycleview, parent, false + ) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder( + holder: CompletedOrderAdapter.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 + holder.currentStateView.text = + String.format("${rowsBean.jobStatusName}-${rowsBean.jobBelongTo}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + + val expandableViewAdapter = ExpandableViewAdapter(context) + holder.expandableView.adapter = expandableViewAdapter + holder.expandableView.layoutManager = LinearLayoutManager(context) + holder.expandableView.addItemDecoration(TimeLineItemDecoration(context)) + holder.expandableImageView.setOnClickListener { + if (!isExpand) { + //展开列表动画 + holder.expandableImageView.arrowAnimation(180f) + isExpand = true + //子列表绑定数据 + expandableViewAdapter.setExpandableData(createExpandableList(rowsBean)) + } else { + //关闭列表动画 + holder.expandableImageView.arrowAnimation(0f) + isExpand = false + //子列表清空数据 + expandableViewAdapter.clearAll() + } + } + + holder.transferView.setChangeAlphaWhenPress(true) + holder.transferView.setOnClickListener { + listener!!.onTransferViewClicked(position) + } + } + } + + private fun createExpandableList(rowsBean: OrderListModel.DataBean.RowsBean): MutableList { + val expandableList: MutableList = ArrayList() + expandableList.add(ExpandableDataModel(rowsBean.createTime, "发起工单")) + expandableList.add( + ExpandableDataModel( + rowsBean.getJobTime, + String.format("${rowsBean.getJobPerson}接单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.confirmJobTime, + String.format("${rowsBean.confirmJobPerson}确认工单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.handleJobTime, + String.format("${rowsBean.handleJobPerson}完成工单") + ) + ) + return expandableList + } + + 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 currentStateView: TextView = view.findViewById(R.id.currentStateView) + var expandableImageView: ImageView = view.findViewById(R.id.expandableImageView) + var expandableView: RecyclerView = view.findViewById(R.id.expandableView) + var transferView: QMUIRoundButton = view.findViewById(R.id.transferView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onTransferViewClicked(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/CompletedOrderAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt new file mode 100644 index 0000000..9aa1742 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt @@ -0,0 +1,137 @@ +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.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.arrowAnimation +import com.casic.qd.smartwell.model.ExpandableDataModel +import com.casic.qd.smartwell.model.OrderListModel +import com.casic.qd.smartwell.utils.TimeLineItemDecoration +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class CompletedOrderAdapter( + private val context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private var isExpand = false + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): CompletedOrderAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate( + R.layout.item_order_completed_recycleview, parent, false + ) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder( + holder: CompletedOrderAdapter.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 + holder.currentStateView.text = + String.format("${rowsBean.jobStatusName}-${rowsBean.jobBelongTo}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + + val expandableViewAdapter = ExpandableViewAdapter(context) + holder.expandableView.adapter = expandableViewAdapter + holder.expandableView.layoutManager = LinearLayoutManager(context) + holder.expandableView.addItemDecoration(TimeLineItemDecoration(context)) + holder.expandableImageView.setOnClickListener { + if (!isExpand) { + //展开列表动画 + holder.expandableImageView.arrowAnimation(180f) + isExpand = true + //子列表绑定数据 + expandableViewAdapter.setExpandableData(createExpandableList(rowsBean)) + } else { + //关闭列表动画 + holder.expandableImageView.arrowAnimation(0f) + isExpand = false + //子列表清空数据 + expandableViewAdapter.clearAll() + } + } + + holder.transferView.setChangeAlphaWhenPress(true) + holder.transferView.setOnClickListener { + listener!!.onTransferViewClicked(position) + } + } + } + + private fun createExpandableList(rowsBean: OrderListModel.DataBean.RowsBean): MutableList { + val expandableList: MutableList = ArrayList() + expandableList.add(ExpandableDataModel(rowsBean.createTime, "发起工单")) + expandableList.add( + ExpandableDataModel( + rowsBean.getJobTime, + String.format("${rowsBean.getJobPerson}接单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.confirmJobTime, + String.format("${rowsBean.confirmJobPerson}确认工单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.handleJobTime, + String.format("${rowsBean.handleJobPerson}完成工单") + ) + ) + return expandableList + } + + 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 currentStateView: TextView = view.findViewById(R.id.currentStateView) + var expandableImageView: ImageView = view.findViewById(R.id.expandableImageView) + var expandableView: RecyclerView = view.findViewById(R.id.expandableView) + var transferView: QMUIRoundButton = view.findViewById(R.id.transferView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onTransferViewClicked(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/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index b353d44..5e74d5d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -1,13 +1,33 @@ 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.CompletedOrderAdapter 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.WeakReferenceHandler +import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.casic.qd.smartwell.widgets.TimeLineBottomSheet +import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* /** * 工单-已完成 * */ class OrderCompletedFragment : BaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var completedAdapter: CompletedOrderAdapter + 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_completed override fun setupTopBarLayout() { @@ -15,10 +35,107 @@ } override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + //默认加载第一页 + obtainWorkOrderList() } override fun initEvent() { + orderCompletedLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList() + } + orderCompletedLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList() + } + workOrderViewModel.orderListModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + orderCompletedLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show() + } + dataBeans.addAll(dataRows!!) + orderCompletedLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022061501) + } + }) + + workOrderViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show() + } + } + }) + } + + private fun obtainWorkOrderList() { + workOrderViewModel.obtainOrderListByState("3", pageIndex) + } + + private val callback = Handler.Callback { + if (it.what == 2022061501) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + pageIndex = 1 + obtainWorkOrderList() + } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + orderCompletedView!!.layoutManager = LinearLayoutManager(requireContext()) + orderCompletedView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } +// requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) + } + } + } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt new file mode 100644 index 0000000..9aa1742 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt @@ -0,0 +1,137 @@ +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.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.arrowAnimation +import com.casic.qd.smartwell.model.ExpandableDataModel +import com.casic.qd.smartwell.model.OrderListModel +import com.casic.qd.smartwell.utils.TimeLineItemDecoration +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class CompletedOrderAdapter( + private val context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private var isExpand = false + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): CompletedOrderAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate( + R.layout.item_order_completed_recycleview, parent, false + ) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder( + holder: CompletedOrderAdapter.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 + holder.currentStateView.text = + String.format("${rowsBean.jobStatusName}-${rowsBean.jobBelongTo}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + + val expandableViewAdapter = ExpandableViewAdapter(context) + holder.expandableView.adapter = expandableViewAdapter + holder.expandableView.layoutManager = LinearLayoutManager(context) + holder.expandableView.addItemDecoration(TimeLineItemDecoration(context)) + holder.expandableImageView.setOnClickListener { + if (!isExpand) { + //展开列表动画 + holder.expandableImageView.arrowAnimation(180f) + isExpand = true + //子列表绑定数据 + expandableViewAdapter.setExpandableData(createExpandableList(rowsBean)) + } else { + //关闭列表动画 + holder.expandableImageView.arrowAnimation(0f) + isExpand = false + //子列表清空数据 + expandableViewAdapter.clearAll() + } + } + + holder.transferView.setChangeAlphaWhenPress(true) + holder.transferView.setOnClickListener { + listener!!.onTransferViewClicked(position) + } + } + } + + private fun createExpandableList(rowsBean: OrderListModel.DataBean.RowsBean): MutableList { + val expandableList: MutableList = ArrayList() + expandableList.add(ExpandableDataModel(rowsBean.createTime, "发起工单")) + expandableList.add( + ExpandableDataModel( + rowsBean.getJobTime, + String.format("${rowsBean.getJobPerson}接单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.confirmJobTime, + String.format("${rowsBean.confirmJobPerson}确认工单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.handleJobTime, + String.format("${rowsBean.handleJobPerson}完成工单") + ) + ) + return expandableList + } + + 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 currentStateView: TextView = view.findViewById(R.id.currentStateView) + var expandableImageView: ImageView = view.findViewById(R.id.expandableImageView) + var expandableView: RecyclerView = view.findViewById(R.id.expandableView) + var transferView: QMUIRoundButton = view.findViewById(R.id.transferView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onTransferViewClicked(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/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index b353d44..5e74d5d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -1,13 +1,33 @@ 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.CompletedOrderAdapter 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.WeakReferenceHandler +import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.casic.qd.smartwell.widgets.TimeLineBottomSheet +import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* /** * 工单-已完成 * */ class OrderCompletedFragment : BaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var completedAdapter: CompletedOrderAdapter + 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_completed override fun setupTopBarLayout() { @@ -15,10 +35,107 @@ } override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + //默认加载第一页 + obtainWorkOrderList() } override fun initEvent() { + orderCompletedLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList() + } + orderCompletedLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList() + } + workOrderViewModel.orderListModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + orderCompletedLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show() + } + dataBeans.addAll(dataRows!!) + orderCompletedLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022061501) + } + }) + + workOrderViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show() + } + } + }) + } + + private fun obtainWorkOrderList() { + workOrderViewModel.obtainOrderListByState("3", pageIndex) + } + + private val callback = Handler.Callback { + if (it.what == 2022061501) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + pageIndex = 1 + obtainWorkOrderList() + } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + orderCompletedView!!.layoutManager = LinearLayoutManager(requireContext()) + orderCompletedView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } +// requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) + } + } + } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt new file mode 100644 index 0000000..c5d2c70 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt @@ -0,0 +1,58 @@ +package com.casic.qd.smartwell.model + +class OrderDetailModel { + var code = 0 + var data: List? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var flow: MutableList? = null + var editable = 0 + var alarmTime: String? = null + var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null + var handlePhotos: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + + class FlowBean { + var from: String? = null + var to: String? = null + var time: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt new file mode 100644 index 0000000..9aa1742 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt @@ -0,0 +1,137 @@ +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.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.arrowAnimation +import com.casic.qd.smartwell.model.ExpandableDataModel +import com.casic.qd.smartwell.model.OrderListModel +import com.casic.qd.smartwell.utils.TimeLineItemDecoration +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class CompletedOrderAdapter( + private val context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private var isExpand = false + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): CompletedOrderAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate( + R.layout.item_order_completed_recycleview, parent, false + ) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder( + holder: CompletedOrderAdapter.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 + holder.currentStateView.text = + String.format("${rowsBean.jobStatusName}-${rowsBean.jobBelongTo}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + + val expandableViewAdapter = ExpandableViewAdapter(context) + holder.expandableView.adapter = expandableViewAdapter + holder.expandableView.layoutManager = LinearLayoutManager(context) + holder.expandableView.addItemDecoration(TimeLineItemDecoration(context)) + holder.expandableImageView.setOnClickListener { + if (!isExpand) { + //展开列表动画 + holder.expandableImageView.arrowAnimation(180f) + isExpand = true + //子列表绑定数据 + expandableViewAdapter.setExpandableData(createExpandableList(rowsBean)) + } else { + //关闭列表动画 + holder.expandableImageView.arrowAnimation(0f) + isExpand = false + //子列表清空数据 + expandableViewAdapter.clearAll() + } + } + + holder.transferView.setChangeAlphaWhenPress(true) + holder.transferView.setOnClickListener { + listener!!.onTransferViewClicked(position) + } + } + } + + private fun createExpandableList(rowsBean: OrderListModel.DataBean.RowsBean): MutableList { + val expandableList: MutableList = ArrayList() + expandableList.add(ExpandableDataModel(rowsBean.createTime, "发起工单")) + expandableList.add( + ExpandableDataModel( + rowsBean.getJobTime, + String.format("${rowsBean.getJobPerson}接单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.confirmJobTime, + String.format("${rowsBean.confirmJobPerson}确认工单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.handleJobTime, + String.format("${rowsBean.handleJobPerson}完成工单") + ) + ) + return expandableList + } + + 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 currentStateView: TextView = view.findViewById(R.id.currentStateView) + var expandableImageView: ImageView = view.findViewById(R.id.expandableImageView) + var expandableView: RecyclerView = view.findViewById(R.id.expandableView) + var transferView: QMUIRoundButton = view.findViewById(R.id.transferView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onTransferViewClicked(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/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index b353d44..5e74d5d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -1,13 +1,33 @@ 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.CompletedOrderAdapter 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.WeakReferenceHandler +import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.casic.qd.smartwell.widgets.TimeLineBottomSheet +import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* /** * 工单-已完成 * */ class OrderCompletedFragment : BaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var completedAdapter: CompletedOrderAdapter + 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_completed override fun setupTopBarLayout() { @@ -15,10 +35,107 @@ } override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + //默认加载第一页 + obtainWorkOrderList() } override fun initEvent() { + orderCompletedLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList() + } + orderCompletedLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList() + } + workOrderViewModel.orderListModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + orderCompletedLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show() + } + dataBeans.addAll(dataRows!!) + orderCompletedLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022061501) + } + }) + + workOrderViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show() + } + } + }) + } + + private fun obtainWorkOrderList() { + workOrderViewModel.obtainOrderListByState("3", pageIndex) + } + + private val callback = Handler.Callback { + if (it.what == 2022061501) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + pageIndex = 1 + obtainWorkOrderList() + } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + orderCompletedView!!.layoutManager = LinearLayoutManager(requireContext()) + orderCompletedView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } +// requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) + } + } + } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt new file mode 100644 index 0000000..c5d2c70 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt @@ -0,0 +1,58 @@ +package com.casic.qd.smartwell.model + +class OrderDetailModel { + var code = 0 + var data: List? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var flow: MutableList? = null + var editable = 0 + var alarmTime: String? = null + var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null + var handlePhotos: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + + class FlowBean { + var from: String? = null + var to: String? = null + var time: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt new file mode 100644 index 0000000..5457fde --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt @@ -0,0 +1,52 @@ +package com.casic.qd.smartwell.model + +class OrderListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var success = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt new file mode 100644 index 0000000..9aa1742 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt @@ -0,0 +1,137 @@ +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.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.arrowAnimation +import com.casic.qd.smartwell.model.ExpandableDataModel +import com.casic.qd.smartwell.model.OrderListModel +import com.casic.qd.smartwell.utils.TimeLineItemDecoration +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class CompletedOrderAdapter( + private val context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private var isExpand = false + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): CompletedOrderAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate( + R.layout.item_order_completed_recycleview, parent, false + ) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder( + holder: CompletedOrderAdapter.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 + holder.currentStateView.text = + String.format("${rowsBean.jobStatusName}-${rowsBean.jobBelongTo}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + + val expandableViewAdapter = ExpandableViewAdapter(context) + holder.expandableView.adapter = expandableViewAdapter + holder.expandableView.layoutManager = LinearLayoutManager(context) + holder.expandableView.addItemDecoration(TimeLineItemDecoration(context)) + holder.expandableImageView.setOnClickListener { + if (!isExpand) { + //展开列表动画 + holder.expandableImageView.arrowAnimation(180f) + isExpand = true + //子列表绑定数据 + expandableViewAdapter.setExpandableData(createExpandableList(rowsBean)) + } else { + //关闭列表动画 + holder.expandableImageView.arrowAnimation(0f) + isExpand = false + //子列表清空数据 + expandableViewAdapter.clearAll() + } + } + + holder.transferView.setChangeAlphaWhenPress(true) + holder.transferView.setOnClickListener { + listener!!.onTransferViewClicked(position) + } + } + } + + private fun createExpandableList(rowsBean: OrderListModel.DataBean.RowsBean): MutableList { + val expandableList: MutableList = ArrayList() + expandableList.add(ExpandableDataModel(rowsBean.createTime, "发起工单")) + expandableList.add( + ExpandableDataModel( + rowsBean.getJobTime, + String.format("${rowsBean.getJobPerson}接单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.confirmJobTime, + String.format("${rowsBean.confirmJobPerson}确认工单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.handleJobTime, + String.format("${rowsBean.handleJobPerson}完成工单") + ) + ) + return expandableList + } + + 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 currentStateView: TextView = view.findViewById(R.id.currentStateView) + var expandableImageView: ImageView = view.findViewById(R.id.expandableImageView) + var expandableView: RecyclerView = view.findViewById(R.id.expandableView) + var transferView: QMUIRoundButton = view.findViewById(R.id.transferView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onTransferViewClicked(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/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index b353d44..5e74d5d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -1,13 +1,33 @@ 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.CompletedOrderAdapter 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.WeakReferenceHandler +import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.casic.qd.smartwell.widgets.TimeLineBottomSheet +import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* /** * 工单-已完成 * */ class OrderCompletedFragment : BaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var completedAdapter: CompletedOrderAdapter + 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_completed override fun setupTopBarLayout() { @@ -15,10 +35,107 @@ } override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + //默认加载第一页 + obtainWorkOrderList() } override fun initEvent() { + orderCompletedLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList() + } + orderCompletedLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList() + } + workOrderViewModel.orderListModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + orderCompletedLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show() + } + dataBeans.addAll(dataRows!!) + orderCompletedLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022061501) + } + }) + + workOrderViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show() + } + } + }) + } + + private fun obtainWorkOrderList() { + workOrderViewModel.obtainOrderListByState("3", pageIndex) + } + + private val callback = Handler.Callback { + if (it.what == 2022061501) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + pageIndex = 1 + obtainWorkOrderList() + } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + orderCompletedView!!.layoutManager = LinearLayoutManager(requireContext()) + orderCompletedView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } +// requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) + } + } + } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt new file mode 100644 index 0000000..c5d2c70 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt @@ -0,0 +1,58 @@ +package com.casic.qd.smartwell.model + +class OrderDetailModel { + var code = 0 + var data: List? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var flow: MutableList? = null + var editable = 0 + var alarmTime: String? = null + var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null + var handlePhotos: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + + class FlowBean { + var from: String? = null + var to: String? = null + var time: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt new file mode 100644 index 0000000..5457fde --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt @@ -0,0 +1,52 @@ +package com.casic.qd.smartwell.model + +class OrderListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var success = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt deleted file mode 100644 index ebd1709..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.qd.smartwell.model - -class WorkOrderDetailModel { - var code = 0 - var data: List? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var firstState: String? = null - var alarmContent = 0 - var deptName: String? = null - var jobStatus: String? = null - var handleJobPerson: String? = null - var alarmContentName: String? = null - var shouldGetTime: String? = null - var firstStatePhotos: String? = null - var wellCode: String? = null - var deptid: String? = null - var alarmTypeName: String? = null - var jobCode: String? = null - var jobBelongTo: String? = null - var jobFlag: String? = null - var confirmJobPerson: String? = null - var confirmJobTime: String? = null - var jobStatusName: String? = null - var alarmValue: String? = null - var alarmId: String? = null - var alarmLevel: String? = null - var handleJobTime: String? = null - var tel: String? = null - var id: String? = null - var wellId: String? = null - var jobType: String? = null - var flow: MutableList? = null - var editable = 0 - var alarmTime: String? = null - var handleMessage: String? = null - var alarmMessage: String? = null - var staff: String? = null - var handlePhotos: String? = null - var getJobTime: String? = null - var getJobPerson: String? = null - var shouldHandleTime: String? = null - var jobId: String? = null - var alarmType: String? = null - var alarmStatus: String? = null - var devcode: String? = null - var createTime: String? = null - var position: String? = null - - class FlowBean { - var from: String? = null - var to: String? = null - var time: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt new file mode 100644 index 0000000..9aa1742 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt @@ -0,0 +1,137 @@ +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.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.arrowAnimation +import com.casic.qd.smartwell.model.ExpandableDataModel +import com.casic.qd.smartwell.model.OrderListModel +import com.casic.qd.smartwell.utils.TimeLineItemDecoration +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class CompletedOrderAdapter( + private val context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private var isExpand = false + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): CompletedOrderAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate( + R.layout.item_order_completed_recycleview, parent, false + ) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder( + holder: CompletedOrderAdapter.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 + holder.currentStateView.text = + String.format("${rowsBean.jobStatusName}-${rowsBean.jobBelongTo}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + + val expandableViewAdapter = ExpandableViewAdapter(context) + holder.expandableView.adapter = expandableViewAdapter + holder.expandableView.layoutManager = LinearLayoutManager(context) + holder.expandableView.addItemDecoration(TimeLineItemDecoration(context)) + holder.expandableImageView.setOnClickListener { + if (!isExpand) { + //展开列表动画 + holder.expandableImageView.arrowAnimation(180f) + isExpand = true + //子列表绑定数据 + expandableViewAdapter.setExpandableData(createExpandableList(rowsBean)) + } else { + //关闭列表动画 + holder.expandableImageView.arrowAnimation(0f) + isExpand = false + //子列表清空数据 + expandableViewAdapter.clearAll() + } + } + + holder.transferView.setChangeAlphaWhenPress(true) + holder.transferView.setOnClickListener { + listener!!.onTransferViewClicked(position) + } + } + } + + private fun createExpandableList(rowsBean: OrderListModel.DataBean.RowsBean): MutableList { + val expandableList: MutableList = ArrayList() + expandableList.add(ExpandableDataModel(rowsBean.createTime, "发起工单")) + expandableList.add( + ExpandableDataModel( + rowsBean.getJobTime, + String.format("${rowsBean.getJobPerson}接单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.confirmJobTime, + String.format("${rowsBean.confirmJobPerson}确认工单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.handleJobTime, + String.format("${rowsBean.handleJobPerson}完成工单") + ) + ) + return expandableList + } + + 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 currentStateView: TextView = view.findViewById(R.id.currentStateView) + var expandableImageView: ImageView = view.findViewById(R.id.expandableImageView) + var expandableView: RecyclerView = view.findViewById(R.id.expandableView) + var transferView: QMUIRoundButton = view.findViewById(R.id.transferView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onTransferViewClicked(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/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index b353d44..5e74d5d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -1,13 +1,33 @@ 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.CompletedOrderAdapter 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.WeakReferenceHandler +import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.casic.qd.smartwell.widgets.TimeLineBottomSheet +import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* /** * 工单-已完成 * */ class OrderCompletedFragment : BaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var completedAdapter: CompletedOrderAdapter + 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_completed override fun setupTopBarLayout() { @@ -15,10 +35,107 @@ } override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + //默认加载第一页 + obtainWorkOrderList() } override fun initEvent() { + orderCompletedLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList() + } + orderCompletedLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList() + } + workOrderViewModel.orderListModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + orderCompletedLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show() + } + dataBeans.addAll(dataRows!!) + orderCompletedLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022061501) + } + }) + + workOrderViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show() + } + } + }) + } + + private fun obtainWorkOrderList() { + workOrderViewModel.obtainOrderListByState("3", pageIndex) + } + + private val callback = Handler.Callback { + if (it.what == 2022061501) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + pageIndex = 1 + obtainWorkOrderList() + } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + orderCompletedView!!.layoutManager = LinearLayoutManager(requireContext()) + orderCompletedView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } +// requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) + } + } + } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt new file mode 100644 index 0000000..c5d2c70 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt @@ -0,0 +1,58 @@ +package com.casic.qd.smartwell.model + +class OrderDetailModel { + var code = 0 + var data: List? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var flow: MutableList? = null + var editable = 0 + var alarmTime: String? = null + var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null + var handlePhotos: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + + class FlowBean { + var from: String? = null + var to: String? = null + var time: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt new file mode 100644 index 0000000..5457fde --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt @@ -0,0 +1,52 @@ +package com.casic.qd.smartwell.model + +class OrderListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var success = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt deleted file mode 100644 index ebd1709..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.qd.smartwell.model - -class WorkOrderDetailModel { - var code = 0 - var data: List? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var firstState: String? = null - var alarmContent = 0 - var deptName: String? = null - var jobStatus: String? = null - var handleJobPerson: String? = null - var alarmContentName: String? = null - var shouldGetTime: String? = null - var firstStatePhotos: String? = null - var wellCode: String? = null - var deptid: String? = null - var alarmTypeName: String? = null - var jobCode: String? = null - var jobBelongTo: String? = null - var jobFlag: String? = null - var confirmJobPerson: String? = null - var confirmJobTime: String? = null - var jobStatusName: String? = null - var alarmValue: String? = null - var alarmId: String? = null - var alarmLevel: String? = null - var handleJobTime: String? = null - var tel: String? = null - var id: String? = null - var wellId: String? = null - var jobType: String? = null - var flow: MutableList? = null - var editable = 0 - var alarmTime: String? = null - var handleMessage: String? = null - var alarmMessage: String? = null - var staff: String? = null - var handlePhotos: String? = null - var getJobTime: String? = null - var getJobPerson: String? = null - var shouldHandleTime: String? = null - var jobId: String? = null - var alarmType: String? = null - var alarmStatus: String? = null - var devcode: String? = null - var createTime: String? = null - var position: String? = null - - class FlowBean { - var from: String? = null - var to: String? = null - var time: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index ccbf3b1..afa5dd9 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -308,4 +308,19 @@ @Header("token") token: String, @Field("id") id: String ): String + + /** + * 根据工单状态获取工单列表 + * + * @param jobStatus 工单状态 + * @param limit 每页数据条数 + * @param offset 页码 + */ + @GET("/job/list") + suspend fun obtainOrderListByState( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt new file mode 100644 index 0000000..9aa1742 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt @@ -0,0 +1,137 @@ +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.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.arrowAnimation +import com.casic.qd.smartwell.model.ExpandableDataModel +import com.casic.qd.smartwell.model.OrderListModel +import com.casic.qd.smartwell.utils.TimeLineItemDecoration +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class CompletedOrderAdapter( + private val context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private var isExpand = false + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): CompletedOrderAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate( + R.layout.item_order_completed_recycleview, parent, false + ) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder( + holder: CompletedOrderAdapter.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 + holder.currentStateView.text = + String.format("${rowsBean.jobStatusName}-${rowsBean.jobBelongTo}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + + val expandableViewAdapter = ExpandableViewAdapter(context) + holder.expandableView.adapter = expandableViewAdapter + holder.expandableView.layoutManager = LinearLayoutManager(context) + holder.expandableView.addItemDecoration(TimeLineItemDecoration(context)) + holder.expandableImageView.setOnClickListener { + if (!isExpand) { + //展开列表动画 + holder.expandableImageView.arrowAnimation(180f) + isExpand = true + //子列表绑定数据 + expandableViewAdapter.setExpandableData(createExpandableList(rowsBean)) + } else { + //关闭列表动画 + holder.expandableImageView.arrowAnimation(0f) + isExpand = false + //子列表清空数据 + expandableViewAdapter.clearAll() + } + } + + holder.transferView.setChangeAlphaWhenPress(true) + holder.transferView.setOnClickListener { + listener!!.onTransferViewClicked(position) + } + } + } + + private fun createExpandableList(rowsBean: OrderListModel.DataBean.RowsBean): MutableList { + val expandableList: MutableList = ArrayList() + expandableList.add(ExpandableDataModel(rowsBean.createTime, "发起工单")) + expandableList.add( + ExpandableDataModel( + rowsBean.getJobTime, + String.format("${rowsBean.getJobPerson}接单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.confirmJobTime, + String.format("${rowsBean.confirmJobPerson}确认工单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.handleJobTime, + String.format("${rowsBean.handleJobPerson}完成工单") + ) + ) + return expandableList + } + + 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 currentStateView: TextView = view.findViewById(R.id.currentStateView) + var expandableImageView: ImageView = view.findViewById(R.id.expandableImageView) + var expandableView: RecyclerView = view.findViewById(R.id.expandableView) + var transferView: QMUIRoundButton = view.findViewById(R.id.transferView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onTransferViewClicked(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/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index b353d44..5e74d5d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -1,13 +1,33 @@ 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.CompletedOrderAdapter 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.WeakReferenceHandler +import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.casic.qd.smartwell.widgets.TimeLineBottomSheet +import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* /** * 工单-已完成 * */ class OrderCompletedFragment : BaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var completedAdapter: CompletedOrderAdapter + 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_completed override fun setupTopBarLayout() { @@ -15,10 +35,107 @@ } override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + //默认加载第一页 + obtainWorkOrderList() } override fun initEvent() { + orderCompletedLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList() + } + orderCompletedLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList() + } + workOrderViewModel.orderListModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + orderCompletedLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show() + } + dataBeans.addAll(dataRows!!) + orderCompletedLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022061501) + } + }) + + workOrderViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show() + } + } + }) + } + + private fun obtainWorkOrderList() { + workOrderViewModel.obtainOrderListByState("3", pageIndex) + } + + private val callback = Handler.Callback { + if (it.what == 2022061501) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + pageIndex = 1 + obtainWorkOrderList() + } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + orderCompletedView!!.layoutManager = LinearLayoutManager(requireContext()) + orderCompletedView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } +// requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) + } + } + } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt new file mode 100644 index 0000000..c5d2c70 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt @@ -0,0 +1,58 @@ +package com.casic.qd.smartwell.model + +class OrderDetailModel { + var code = 0 + var data: List? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var flow: MutableList? = null + var editable = 0 + var alarmTime: String? = null + var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null + var handlePhotos: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + + class FlowBean { + var from: String? = null + var to: String? = null + var time: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt new file mode 100644 index 0000000..5457fde --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt @@ -0,0 +1,52 @@ +package com.casic.qd.smartwell.model + +class OrderListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var success = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt deleted file mode 100644 index ebd1709..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.qd.smartwell.model - -class WorkOrderDetailModel { - var code = 0 - var data: List? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var firstState: String? = null - var alarmContent = 0 - var deptName: String? = null - var jobStatus: String? = null - var handleJobPerson: String? = null - var alarmContentName: String? = null - var shouldGetTime: String? = null - var firstStatePhotos: String? = null - var wellCode: String? = null - var deptid: String? = null - var alarmTypeName: String? = null - var jobCode: String? = null - var jobBelongTo: String? = null - var jobFlag: String? = null - var confirmJobPerson: String? = null - var confirmJobTime: String? = null - var jobStatusName: String? = null - var alarmValue: String? = null - var alarmId: String? = null - var alarmLevel: String? = null - var handleJobTime: String? = null - var tel: String? = null - var id: String? = null - var wellId: String? = null - var jobType: String? = null - var flow: MutableList? = null - var editable = 0 - var alarmTime: String? = null - var handleMessage: String? = null - var alarmMessage: String? = null - var staff: String? = null - var handlePhotos: String? = null - var getJobTime: String? = null - var getJobPerson: String? = null - var shouldHandleTime: String? = null - var jobId: String? = null - var alarmType: String? = null - var alarmStatus: String? = null - var devcode: String? = null - var createTime: String? = null - var position: String? = null - - class FlowBean { - var from: String? = null - var to: String? = null - var time: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index ccbf3b1..afa5dd9 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -308,4 +308,19 @@ @Header("token") token: String, @Field("id") id: String ): String + + /** + * 根据工单状态获取工单列表 + * + * @param jobStatus 工单状态 + * @param limit 每页数据条数 + * @param offset 页码 + */ + @GET("/job/list") + suspend fun obtainOrderListByState( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 67714cd..0619be3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -287,4 +287,16 @@ suspend fun acceptWorkOrder(id: String): String { return api.acceptWorkOrder(AuthenticationHelper.token!!, id) } + + /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainOrderListByState(jobStatus: String, page: Int): String { + return api.obtainOrderListByState( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt new file mode 100644 index 0000000..9aa1742 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt @@ -0,0 +1,137 @@ +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.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.arrowAnimation +import com.casic.qd.smartwell.model.ExpandableDataModel +import com.casic.qd.smartwell.model.OrderListModel +import com.casic.qd.smartwell.utils.TimeLineItemDecoration +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class CompletedOrderAdapter( + private val context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private var isExpand = false + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): CompletedOrderAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate( + R.layout.item_order_completed_recycleview, parent, false + ) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder( + holder: CompletedOrderAdapter.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 + holder.currentStateView.text = + String.format("${rowsBean.jobStatusName}-${rowsBean.jobBelongTo}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + + val expandableViewAdapter = ExpandableViewAdapter(context) + holder.expandableView.adapter = expandableViewAdapter + holder.expandableView.layoutManager = LinearLayoutManager(context) + holder.expandableView.addItemDecoration(TimeLineItemDecoration(context)) + holder.expandableImageView.setOnClickListener { + if (!isExpand) { + //展开列表动画 + holder.expandableImageView.arrowAnimation(180f) + isExpand = true + //子列表绑定数据 + expandableViewAdapter.setExpandableData(createExpandableList(rowsBean)) + } else { + //关闭列表动画 + holder.expandableImageView.arrowAnimation(0f) + isExpand = false + //子列表清空数据 + expandableViewAdapter.clearAll() + } + } + + holder.transferView.setChangeAlphaWhenPress(true) + holder.transferView.setOnClickListener { + listener!!.onTransferViewClicked(position) + } + } + } + + private fun createExpandableList(rowsBean: OrderListModel.DataBean.RowsBean): MutableList { + val expandableList: MutableList = ArrayList() + expandableList.add(ExpandableDataModel(rowsBean.createTime, "发起工单")) + expandableList.add( + ExpandableDataModel( + rowsBean.getJobTime, + String.format("${rowsBean.getJobPerson}接单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.confirmJobTime, + String.format("${rowsBean.confirmJobPerson}确认工单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.handleJobTime, + String.format("${rowsBean.handleJobPerson}完成工单") + ) + ) + return expandableList + } + + 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 currentStateView: TextView = view.findViewById(R.id.currentStateView) + var expandableImageView: ImageView = view.findViewById(R.id.expandableImageView) + var expandableView: RecyclerView = view.findViewById(R.id.expandableView) + var transferView: QMUIRoundButton = view.findViewById(R.id.transferView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onTransferViewClicked(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/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index b353d44..5e74d5d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -1,13 +1,33 @@ 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.CompletedOrderAdapter 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.WeakReferenceHandler +import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.casic.qd.smartwell.widgets.TimeLineBottomSheet +import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* /** * 工单-已完成 * */ class OrderCompletedFragment : BaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var completedAdapter: CompletedOrderAdapter + 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_completed override fun setupTopBarLayout() { @@ -15,10 +35,107 @@ } override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + //默认加载第一页 + obtainWorkOrderList() } override fun initEvent() { + orderCompletedLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList() + } + orderCompletedLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList() + } + workOrderViewModel.orderListModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + orderCompletedLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show() + } + dataBeans.addAll(dataRows!!) + orderCompletedLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022061501) + } + }) + + workOrderViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show() + } + } + }) + } + + private fun obtainWorkOrderList() { + workOrderViewModel.obtainOrderListByState("3", pageIndex) + } + + private val callback = Handler.Callback { + if (it.what == 2022061501) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + pageIndex = 1 + obtainWorkOrderList() + } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + orderCompletedView!!.layoutManager = LinearLayoutManager(requireContext()) + orderCompletedView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } +// requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) + } + } + } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt new file mode 100644 index 0000000..c5d2c70 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt @@ -0,0 +1,58 @@ +package com.casic.qd.smartwell.model + +class OrderDetailModel { + var code = 0 + var data: List? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var flow: MutableList? = null + var editable = 0 + var alarmTime: String? = null + var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null + var handlePhotos: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + + class FlowBean { + var from: String? = null + var to: String? = null + var time: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt new file mode 100644 index 0000000..5457fde --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt @@ -0,0 +1,52 @@ +package com.casic.qd.smartwell.model + +class OrderListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var success = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt deleted file mode 100644 index ebd1709..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.qd.smartwell.model - -class WorkOrderDetailModel { - var code = 0 - var data: List? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var firstState: String? = null - var alarmContent = 0 - var deptName: String? = null - var jobStatus: String? = null - var handleJobPerson: String? = null - var alarmContentName: String? = null - var shouldGetTime: String? = null - var firstStatePhotos: String? = null - var wellCode: String? = null - var deptid: String? = null - var alarmTypeName: String? = null - var jobCode: String? = null - var jobBelongTo: String? = null - var jobFlag: String? = null - var confirmJobPerson: String? = null - var confirmJobTime: String? = null - var jobStatusName: String? = null - var alarmValue: String? = null - var alarmId: String? = null - var alarmLevel: String? = null - var handleJobTime: String? = null - var tel: String? = null - var id: String? = null - var wellId: String? = null - var jobType: String? = null - var flow: MutableList? = null - var editable = 0 - var alarmTime: String? = null - var handleMessage: String? = null - var alarmMessage: String? = null - var staff: String? = null - var handlePhotos: String? = null - var getJobTime: String? = null - var getJobPerson: String? = null - var shouldHandleTime: String? = null - var jobId: String? = null - var alarmType: String? = null - var alarmStatus: String? = null - var devcode: String? = null - var createTime: String? = null - var position: String? = null - - class FlowBean { - var from: String? = null - var to: String? = null - var time: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index ccbf3b1..afa5dd9 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -308,4 +308,19 @@ @Header("token") token: String, @Field("id") id: String ): String + + /** + * 根据工单状态获取工单列表 + * + * @param jobStatus 工单状态 + * @param limit 每页数据条数 + * @param offset 页码 + */ + @GET("/job/list") + suspend fun obtainOrderListByState( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 67714cd..0619be3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -287,4 +287,16 @@ suspend fun acceptWorkOrder(id: String): String { return api.acceptWorkOrder(AuthenticationHelper.token!!, id) } + + /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainOrderListByState(jobStatus: String, page: Int): String { + return api.obtainOrderListByState( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 6e7e65e..659e64a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -46,11 +46,24 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + + obtainSearchResult(args) } override fun initEvent() { - obtainSearchResult(args, pageIndex) - workOrderViewModel.listModel.observe(this, { + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args) + } + + workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { @@ -85,17 +98,6 @@ } } }) - resultRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainSearchResult(args, pageIndex) - } - resultRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainSearchResult(args, pageIndex) - } //接单状态处理 operationViewModel.loadState.observe(this, { @@ -128,7 +130,7 @@ }) } - private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + private fun obtainSearchResult(args: ArrayList) { workOrderViewModel.obtainSearchResult( keywords = args[0], alarmContent = args[1], @@ -145,7 +147,7 @@ 2022040102 -> { isRefresh = true pageIndex = 1 - obtainSearchResult(args, pageIndex) + obtainSearchResult(args) } 2022040101 -> { if (isRefresh || isLoadMore) { @@ -153,7 +155,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(args, pageIndex) + pageIndex = 1 + obtainSearchResult(args) } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt new file mode 100644 index 0000000..9aa1742 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt @@ -0,0 +1,137 @@ +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.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.arrowAnimation +import com.casic.qd.smartwell.model.ExpandableDataModel +import com.casic.qd.smartwell.model.OrderListModel +import com.casic.qd.smartwell.utils.TimeLineItemDecoration +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class CompletedOrderAdapter( + private val context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private var isExpand = false + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): CompletedOrderAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate( + R.layout.item_order_completed_recycleview, parent, false + ) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder( + holder: CompletedOrderAdapter.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 + holder.currentStateView.text = + String.format("${rowsBean.jobStatusName}-${rowsBean.jobBelongTo}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + + val expandableViewAdapter = ExpandableViewAdapter(context) + holder.expandableView.adapter = expandableViewAdapter + holder.expandableView.layoutManager = LinearLayoutManager(context) + holder.expandableView.addItemDecoration(TimeLineItemDecoration(context)) + holder.expandableImageView.setOnClickListener { + if (!isExpand) { + //展开列表动画 + holder.expandableImageView.arrowAnimation(180f) + isExpand = true + //子列表绑定数据 + expandableViewAdapter.setExpandableData(createExpandableList(rowsBean)) + } else { + //关闭列表动画 + holder.expandableImageView.arrowAnimation(0f) + isExpand = false + //子列表清空数据 + expandableViewAdapter.clearAll() + } + } + + holder.transferView.setChangeAlphaWhenPress(true) + holder.transferView.setOnClickListener { + listener!!.onTransferViewClicked(position) + } + } + } + + private fun createExpandableList(rowsBean: OrderListModel.DataBean.RowsBean): MutableList { + val expandableList: MutableList = ArrayList() + expandableList.add(ExpandableDataModel(rowsBean.createTime, "发起工单")) + expandableList.add( + ExpandableDataModel( + rowsBean.getJobTime, + String.format("${rowsBean.getJobPerson}接单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.confirmJobTime, + String.format("${rowsBean.confirmJobPerson}确认工单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.handleJobTime, + String.format("${rowsBean.handleJobPerson}完成工单") + ) + ) + return expandableList + } + + 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 currentStateView: TextView = view.findViewById(R.id.currentStateView) + var expandableImageView: ImageView = view.findViewById(R.id.expandableImageView) + var expandableView: RecyclerView = view.findViewById(R.id.expandableView) + var transferView: QMUIRoundButton = view.findViewById(R.id.transferView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onTransferViewClicked(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/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index b353d44..5e74d5d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -1,13 +1,33 @@ 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.CompletedOrderAdapter 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.WeakReferenceHandler +import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.casic.qd.smartwell.widgets.TimeLineBottomSheet +import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* /** * 工单-已完成 * */ class OrderCompletedFragment : BaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var completedAdapter: CompletedOrderAdapter + 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_completed override fun setupTopBarLayout() { @@ -15,10 +35,107 @@ } override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + //默认加载第一页 + obtainWorkOrderList() } override fun initEvent() { + orderCompletedLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList() + } + orderCompletedLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList() + } + workOrderViewModel.orderListModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + orderCompletedLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show() + } + dataBeans.addAll(dataRows!!) + orderCompletedLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022061501) + } + }) + + workOrderViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show() + } + } + }) + } + + private fun obtainWorkOrderList() { + workOrderViewModel.obtainOrderListByState("3", pageIndex) + } + + private val callback = Handler.Callback { + if (it.what == 2022061501) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + pageIndex = 1 + obtainWorkOrderList() + } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + orderCompletedView!!.layoutManager = LinearLayoutManager(requireContext()) + orderCompletedView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } +// requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) + } + } + } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt new file mode 100644 index 0000000..c5d2c70 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt @@ -0,0 +1,58 @@ +package com.casic.qd.smartwell.model + +class OrderDetailModel { + var code = 0 + var data: List? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var flow: MutableList? = null + var editable = 0 + var alarmTime: String? = null + var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null + var handlePhotos: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + + class FlowBean { + var from: String? = null + var to: String? = null + var time: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt new file mode 100644 index 0000000..5457fde --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt @@ -0,0 +1,52 @@ +package com.casic.qd.smartwell.model + +class OrderListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var success = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt deleted file mode 100644 index ebd1709..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.qd.smartwell.model - -class WorkOrderDetailModel { - var code = 0 - var data: List? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var firstState: String? = null - var alarmContent = 0 - var deptName: String? = null - var jobStatus: String? = null - var handleJobPerson: String? = null - var alarmContentName: String? = null - var shouldGetTime: String? = null - var firstStatePhotos: String? = null - var wellCode: String? = null - var deptid: String? = null - var alarmTypeName: String? = null - var jobCode: String? = null - var jobBelongTo: String? = null - var jobFlag: String? = null - var confirmJobPerson: String? = null - var confirmJobTime: String? = null - var jobStatusName: String? = null - var alarmValue: String? = null - var alarmId: String? = null - var alarmLevel: String? = null - var handleJobTime: String? = null - var tel: String? = null - var id: String? = null - var wellId: String? = null - var jobType: String? = null - var flow: MutableList? = null - var editable = 0 - var alarmTime: String? = null - var handleMessage: String? = null - var alarmMessage: String? = null - var staff: String? = null - var handlePhotos: String? = null - var getJobTime: String? = null - var getJobPerson: String? = null - var shouldHandleTime: String? = null - var jobId: String? = null - var alarmType: String? = null - var alarmStatus: String? = null - var devcode: String? = null - var createTime: String? = null - var position: String? = null - - class FlowBean { - var from: String? = null - var to: String? = null - var time: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index ccbf3b1..afa5dd9 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -308,4 +308,19 @@ @Header("token") token: String, @Field("id") id: String ): String + + /** + * 根据工单状态获取工单列表 + * + * @param jobStatus 工单状态 + * @param limit 每页数据条数 + * @param offset 页码 + */ + @GET("/job/list") + suspend fun obtainOrderListByState( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 67714cd..0619be3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -287,4 +287,16 @@ suspend fun acceptWorkOrder(id: String): String { return api.acceptWorkOrder(AuthenticationHelper.token!!, id) } + + /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainOrderListByState(jobStatus: String, page: Int): String { + return api.obtainOrderListByState( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 6e7e65e..659e64a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -46,11 +46,24 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + + obtainSearchResult(args) } override fun initEvent() { - obtainSearchResult(args, pageIndex) - workOrderViewModel.listModel.observe(this, { + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args) + } + + workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { @@ -85,17 +98,6 @@ } } }) - resultRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainSearchResult(args, pageIndex) - } - resultRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainSearchResult(args, pageIndex) - } //接单状态处理 operationViewModel.loadState.observe(this, { @@ -128,7 +130,7 @@ }) } - private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + private fun obtainSearchResult(args: ArrayList) { workOrderViewModel.obtainSearchResult( keywords = args[0], alarmContent = args[1], @@ -145,7 +147,7 @@ 2022040102 -> { isRefresh = true pageIndex = 1 - obtainSearchResult(args, pageIndex) + obtainSearchResult(args) } 2022040101 -> { if (isRefresh || isLoadMore) { @@ -153,7 +155,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(args, pageIndex) + pageIndex = 1 + obtainSearchResult(args) } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/WorkOrderViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/WorkOrderViewModel.kt index 411c9a8..c3f7b0b 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/WorkOrderViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/WorkOrderViewModel.kt @@ -6,9 +6,10 @@ import com.casic.qd.smartwell.extensions.separateResponseCode import com.casic.qd.smartwell.extensions.show import com.casic.qd.smartwell.extensions.toErrorMessage +import com.casic.qd.smartwell.model.OrderDetailModel +import com.casic.qd.smartwell.model.OrderListModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.model.SearchResultModel -import com.casic.qd.smartwell.model.WorkOrderDetailModel import com.casic.qd.smartwell.utils.LoadState import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -18,8 +19,9 @@ private val gson = Gson() val orderStatusModel = MutableLiveData() - val listModel = MutableLiveData() - val detailModel = MutableLiveData() + val searchResultModel = MutableLiveData() + val orderListModel = MutableLiveData() + val detailModel = MutableLiveData() // val resultModel = MutableLiveData>() @@ -53,7 +55,7 @@ val responseCode = response.separateResponseCode() if (responseCode == 200) { loadState.value = LoadState.Success - listModel.value = gson.fromJson( + searchResultModel.value = gson.fromJson( response, object : TypeToken() {}.type ) } else { @@ -65,14 +67,28 @@ it.printStackTrace() }) + fun obtainOrderListByState(jobStatus: String, page: Int) = launch({ + val response = RetrofitServiceManager.obtainOrderListByState(jobStatus, page) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + orderListModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show() + } + }, { + it.printStackTrace() + }) + fun obtainWorkOrderDetail(id: String) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.obtainWorkOrderDetail(id) val responseCode = response.separateResponseCode() if (responseCode == 200) { loadState.value = LoadState.Success - detailModel.value = gson.fromJson( - response, object : TypeToken() {}.type + detailModel.value = gson.fromJson( + response, object : TypeToken() {}.type ) } else { loadState.value = LoadState.Fail diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt new file mode 100644 index 0000000..9aa1742 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt @@ -0,0 +1,137 @@ +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.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.arrowAnimation +import com.casic.qd.smartwell.model.ExpandableDataModel +import com.casic.qd.smartwell.model.OrderListModel +import com.casic.qd.smartwell.utils.TimeLineItemDecoration +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class CompletedOrderAdapter( + private val context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private var isExpand = false + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): CompletedOrderAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate( + R.layout.item_order_completed_recycleview, parent, false + ) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder( + holder: CompletedOrderAdapter.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 + holder.currentStateView.text = + String.format("${rowsBean.jobStatusName}-${rowsBean.jobBelongTo}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + + val expandableViewAdapter = ExpandableViewAdapter(context) + holder.expandableView.adapter = expandableViewAdapter + holder.expandableView.layoutManager = LinearLayoutManager(context) + holder.expandableView.addItemDecoration(TimeLineItemDecoration(context)) + holder.expandableImageView.setOnClickListener { + if (!isExpand) { + //展开列表动画 + holder.expandableImageView.arrowAnimation(180f) + isExpand = true + //子列表绑定数据 + expandableViewAdapter.setExpandableData(createExpandableList(rowsBean)) + } else { + //关闭列表动画 + holder.expandableImageView.arrowAnimation(0f) + isExpand = false + //子列表清空数据 + expandableViewAdapter.clearAll() + } + } + + holder.transferView.setChangeAlphaWhenPress(true) + holder.transferView.setOnClickListener { + listener!!.onTransferViewClicked(position) + } + } + } + + private fun createExpandableList(rowsBean: OrderListModel.DataBean.RowsBean): MutableList { + val expandableList: MutableList = ArrayList() + expandableList.add(ExpandableDataModel(rowsBean.createTime, "发起工单")) + expandableList.add( + ExpandableDataModel( + rowsBean.getJobTime, + String.format("${rowsBean.getJobPerson}接单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.confirmJobTime, + String.format("${rowsBean.confirmJobPerson}确认工单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.handleJobTime, + String.format("${rowsBean.handleJobPerson}完成工单") + ) + ) + return expandableList + } + + 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 currentStateView: TextView = view.findViewById(R.id.currentStateView) + var expandableImageView: ImageView = view.findViewById(R.id.expandableImageView) + var expandableView: RecyclerView = view.findViewById(R.id.expandableView) + var transferView: QMUIRoundButton = view.findViewById(R.id.transferView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onTransferViewClicked(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/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index b353d44..5e74d5d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -1,13 +1,33 @@ 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.CompletedOrderAdapter 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.WeakReferenceHandler +import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.casic.qd.smartwell.widgets.TimeLineBottomSheet +import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* /** * 工单-已完成 * */ class OrderCompletedFragment : BaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var completedAdapter: CompletedOrderAdapter + 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_completed override fun setupTopBarLayout() { @@ -15,10 +35,107 @@ } override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + //默认加载第一页 + obtainWorkOrderList() } override fun initEvent() { + orderCompletedLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList() + } + orderCompletedLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList() + } + workOrderViewModel.orderListModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + orderCompletedLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show() + } + dataBeans.addAll(dataRows!!) + orderCompletedLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022061501) + } + }) + + workOrderViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show() + } + } + }) + } + + private fun obtainWorkOrderList() { + workOrderViewModel.obtainOrderListByState("3", pageIndex) + } + + private val callback = Handler.Callback { + if (it.what == 2022061501) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + pageIndex = 1 + obtainWorkOrderList() + } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + orderCompletedView!!.layoutManager = LinearLayoutManager(requireContext()) + orderCompletedView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } +// requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) + } + } + } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt new file mode 100644 index 0000000..c5d2c70 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt @@ -0,0 +1,58 @@ +package com.casic.qd.smartwell.model + +class OrderDetailModel { + var code = 0 + var data: List? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var flow: MutableList? = null + var editable = 0 + var alarmTime: String? = null + var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null + var handlePhotos: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + + class FlowBean { + var from: String? = null + var to: String? = null + var time: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt new file mode 100644 index 0000000..5457fde --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt @@ -0,0 +1,52 @@ +package com.casic.qd.smartwell.model + +class OrderListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var success = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt deleted file mode 100644 index ebd1709..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.qd.smartwell.model - -class WorkOrderDetailModel { - var code = 0 - var data: List? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var firstState: String? = null - var alarmContent = 0 - var deptName: String? = null - var jobStatus: String? = null - var handleJobPerson: String? = null - var alarmContentName: String? = null - var shouldGetTime: String? = null - var firstStatePhotos: String? = null - var wellCode: String? = null - var deptid: String? = null - var alarmTypeName: String? = null - var jobCode: String? = null - var jobBelongTo: String? = null - var jobFlag: String? = null - var confirmJobPerson: String? = null - var confirmJobTime: String? = null - var jobStatusName: String? = null - var alarmValue: String? = null - var alarmId: String? = null - var alarmLevel: String? = null - var handleJobTime: String? = null - var tel: String? = null - var id: String? = null - var wellId: String? = null - var jobType: String? = null - var flow: MutableList? = null - var editable = 0 - var alarmTime: String? = null - var handleMessage: String? = null - var alarmMessage: String? = null - var staff: String? = null - var handlePhotos: String? = null - var getJobTime: String? = null - var getJobPerson: String? = null - var shouldHandleTime: String? = null - var jobId: String? = null - var alarmType: String? = null - var alarmStatus: String? = null - var devcode: String? = null - var createTime: String? = null - var position: String? = null - - class FlowBean { - var from: String? = null - var to: String? = null - var time: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index ccbf3b1..afa5dd9 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -308,4 +308,19 @@ @Header("token") token: String, @Field("id") id: String ): String + + /** + * 根据工单状态获取工单列表 + * + * @param jobStatus 工单状态 + * @param limit 每页数据条数 + * @param offset 页码 + */ + @GET("/job/list") + suspend fun obtainOrderListByState( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 67714cd..0619be3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -287,4 +287,16 @@ suspend fun acceptWorkOrder(id: String): String { return api.acceptWorkOrder(AuthenticationHelper.token!!, id) } + + /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainOrderListByState(jobStatus: String, page: Int): String { + return api.obtainOrderListByState( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 6e7e65e..659e64a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -46,11 +46,24 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + + obtainSearchResult(args) } override fun initEvent() { - obtainSearchResult(args, pageIndex) - workOrderViewModel.listModel.observe(this, { + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args) + } + + workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { @@ -85,17 +98,6 @@ } } }) - resultRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainSearchResult(args, pageIndex) - } - resultRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainSearchResult(args, pageIndex) - } //接单状态处理 operationViewModel.loadState.observe(this, { @@ -128,7 +130,7 @@ }) } - private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + private fun obtainSearchResult(args: ArrayList) { workOrderViewModel.obtainSearchResult( keywords = args[0], alarmContent = args[1], @@ -145,7 +147,7 @@ 2022040102 -> { isRefresh = true pageIndex = 1 - obtainSearchResult(args, pageIndex) + obtainSearchResult(args) } 2022040101 -> { if (isRefresh || isLoadMore) { @@ -153,7 +155,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(args, pageIndex) + pageIndex = 1 + obtainSearchResult(args) } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/WorkOrderViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/WorkOrderViewModel.kt index 411c9a8..c3f7b0b 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/WorkOrderViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/WorkOrderViewModel.kt @@ -6,9 +6,10 @@ import com.casic.qd.smartwell.extensions.separateResponseCode import com.casic.qd.smartwell.extensions.show import com.casic.qd.smartwell.extensions.toErrorMessage +import com.casic.qd.smartwell.model.OrderDetailModel +import com.casic.qd.smartwell.model.OrderListModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.model.SearchResultModel -import com.casic.qd.smartwell.model.WorkOrderDetailModel import com.casic.qd.smartwell.utils.LoadState import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -18,8 +19,9 @@ private val gson = Gson() val orderStatusModel = MutableLiveData() - val listModel = MutableLiveData() - val detailModel = MutableLiveData() + val searchResultModel = MutableLiveData() + val orderListModel = MutableLiveData() + val detailModel = MutableLiveData() // val resultModel = MutableLiveData>() @@ -53,7 +55,7 @@ val responseCode = response.separateResponseCode() if (responseCode == 200) { loadState.value = LoadState.Success - listModel.value = gson.fromJson( + searchResultModel.value = gson.fromJson( response, object : TypeToken() {}.type ) } else { @@ -65,14 +67,28 @@ it.printStackTrace() }) + fun obtainOrderListByState(jobStatus: String, page: Int) = launch({ + val response = RetrofitServiceManager.obtainOrderListByState(jobStatus, page) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + orderListModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show() + } + }, { + it.printStackTrace() + }) + fun obtainWorkOrderDetail(id: String) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.obtainWorkOrderDetail(id) val responseCode = response.separateResponseCode() if (responseCode == 200) { loadState.value = LoadState.Success - detailModel.value = gson.fromJson( - response, object : TypeToken() {}.type + detailModel.value = gson.fromJson( + response, object : TypeToken() {}.type ) } else { loadState.value = LoadState.Fail diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/TimeLineBottomSheet.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/TimeLineBottomSheet.kt index 2b3dfe7..08a2caf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/widgets/TimeLineBottomSheet.kt +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/TimeLineBottomSheet.kt @@ -11,25 +11,25 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.model.WorkOrderDetailModel +import com.casic.qd.smartwell.model.OrderDetailModel import com.pengxh.app.multilib.utils.SizeUtil class TimeLineBottomSheet private constructor(builder: Builder) : Dialog( builder.context!!, R.style.ActionSheetDialogStyle ) { private val ctx: Context = builder.context!! - private val items: MutableList = builder.items!! + private val items: MutableList = builder.items!! class Builder { var context: Context? = null - var items: MutableList? = null + var items: MutableList? = null fun setContext(context: Context?): Builder { this.context = context return this } - fun setFlowItems(flowItems: MutableList?): Builder { + fun setFlowItems(flowItems: MutableList?): Builder { this.items = flowItems return this } diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt new file mode 100644 index 0000000..9aa1742 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/adapter/CompletedOrderAdapter.kt @@ -0,0 +1,137 @@ +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.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.arrowAnimation +import com.casic.qd.smartwell.model.ExpandableDataModel +import com.casic.qd.smartwell.model.OrderListModel +import com.casic.qd.smartwell.utils.TimeLineItemDecoration +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class CompletedOrderAdapter( + private val context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private var isExpand = false + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): CompletedOrderAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate( + R.layout.item_order_completed_recycleview, parent, false + ) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder( + holder: CompletedOrderAdapter.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 + holder.currentStateView.text = + String.format("${rowsBean.jobStatusName}-${rowsBean.jobBelongTo}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + + val expandableViewAdapter = ExpandableViewAdapter(context) + holder.expandableView.adapter = expandableViewAdapter + holder.expandableView.layoutManager = LinearLayoutManager(context) + holder.expandableView.addItemDecoration(TimeLineItemDecoration(context)) + holder.expandableImageView.setOnClickListener { + if (!isExpand) { + //展开列表动画 + holder.expandableImageView.arrowAnimation(180f) + isExpand = true + //子列表绑定数据 + expandableViewAdapter.setExpandableData(createExpandableList(rowsBean)) + } else { + //关闭列表动画 + holder.expandableImageView.arrowAnimation(0f) + isExpand = false + //子列表清空数据 + expandableViewAdapter.clearAll() + } + } + + holder.transferView.setChangeAlphaWhenPress(true) + holder.transferView.setOnClickListener { + listener!!.onTransferViewClicked(position) + } + } + } + + private fun createExpandableList(rowsBean: OrderListModel.DataBean.RowsBean): MutableList { + val expandableList: MutableList = ArrayList() + expandableList.add(ExpandableDataModel(rowsBean.createTime, "发起工单")) + expandableList.add( + ExpandableDataModel( + rowsBean.getJobTime, + String.format("${rowsBean.getJobPerson}接单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.confirmJobTime, + String.format("${rowsBean.confirmJobPerson}确认工单") + ) + ) + expandableList.add( + ExpandableDataModel( + rowsBean.handleJobTime, + String.format("${rowsBean.handleJobPerson}完成工单") + ) + ) + return expandableList + } + + 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 currentStateView: TextView = view.findViewById(R.id.currentStateView) + var expandableImageView: ImageView = view.findViewById(R.id.expandableImageView) + var expandableView: RecyclerView = view.findViewById(R.id.expandableView) + var transferView: QMUIRoundButton = view.findViewById(R.id.transferView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onTransferViewClicked(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/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index b353d44..5e74d5d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -1,13 +1,33 @@ 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.CompletedOrderAdapter 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.WeakReferenceHandler +import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.casic.qd.smartwell.widgets.TimeLineBottomSheet +import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* /** * 工单-已完成 * */ class OrderCompletedFragment : BaseFragment() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var completedAdapter: CompletedOrderAdapter + 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_completed override fun setupTopBarLayout() { @@ -15,10 +35,107 @@ } override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + //默认加载第一页 + obtainWorkOrderList() } override fun initEvent() { + orderCompletedLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList() + } + orderCompletedLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList() + } + workOrderViewModel.orderListModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + orderCompletedLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show() + } + dataBeans.addAll(dataRows!!) + orderCompletedLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022061501) + } + }) + + workOrderViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show() + } + } + }) + } + + private fun obtainWorkOrderList() { + workOrderViewModel.obtainOrderListByState("3", pageIndex) + } + + private val callback = Handler.Callback { + if (it.what == 2022061501) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + pageIndex = 1 + obtainWorkOrderList() + } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + orderCompletedView!!.layoutManager = LinearLayoutManager(requireContext()) + orderCompletedView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } +// requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) + } + } + } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt new file mode 100644 index 0000000..c5d2c70 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderDetailModel.kt @@ -0,0 +1,58 @@ +package com.casic.qd.smartwell.model + +class OrderDetailModel { + var code = 0 + var data: List? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var flow: MutableList? = null + var editable = 0 + var alarmTime: String? = null + var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null + var handlePhotos: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + + class FlowBean { + var from: String? = null + var to: String? = null + var time: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt new file mode 100644 index 0000000..5457fde --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/OrderListModel.kt @@ -0,0 +1,52 @@ +package com.casic.qd.smartwell.model + +class OrderListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var success = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt deleted file mode 100644 index ebd1709..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/model/WorkOrderDetailModel.kt +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.qd.smartwell.model - -class WorkOrderDetailModel { - var code = 0 - var data: List? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var firstState: String? = null - var alarmContent = 0 - var deptName: String? = null - var jobStatus: String? = null - var handleJobPerson: String? = null - var alarmContentName: String? = null - var shouldGetTime: String? = null - var firstStatePhotos: String? = null - var wellCode: String? = null - var deptid: String? = null - var alarmTypeName: String? = null - var jobCode: String? = null - var jobBelongTo: String? = null - var jobFlag: String? = null - var confirmJobPerson: String? = null - var confirmJobTime: String? = null - var jobStatusName: String? = null - var alarmValue: String? = null - var alarmId: String? = null - var alarmLevel: String? = null - var handleJobTime: String? = null - var tel: String? = null - var id: String? = null - var wellId: String? = null - var jobType: String? = null - var flow: MutableList? = null - var editable = 0 - var alarmTime: String? = null - var handleMessage: String? = null - var alarmMessage: String? = null - var staff: String? = null - var handlePhotos: String? = null - var getJobTime: String? = null - var getJobPerson: String? = null - var shouldHandleTime: String? = null - var jobId: String? = null - var alarmType: String? = null - var alarmStatus: String? = null - var devcode: String? = null - var createTime: String? = null - var position: String? = null - - class FlowBean { - var from: String? = null - var to: String? = null - var time: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index ccbf3b1..afa5dd9 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -308,4 +308,19 @@ @Header("token") token: String, @Field("id") id: String ): String + + /** + * 根据工单状态获取工单列表 + * + * @param jobStatus 工单状态 + * @param limit 每页数据条数 + * @param offset 页码 + */ + @GET("/job/list") + suspend fun obtainOrderListByState( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 67714cd..0619be3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -287,4 +287,16 @@ suspend fun acceptWorkOrder(id: String): String { return api.acceptWorkOrder(AuthenticationHelper.token!!, id) } + + /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainOrderListByState(jobStatus: String, page: Int): String { + return api.obtainOrderListByState( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 6e7e65e..659e64a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -46,11 +46,24 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + + obtainSearchResult(args) } override fun initEvent() { - obtainSearchResult(args, pageIndex) - workOrderViewModel.listModel.observe(this, { + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args) + } + + workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { @@ -85,17 +98,6 @@ } } }) - resultRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainSearchResult(args, pageIndex) - } - resultRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainSearchResult(args, pageIndex) - } //接单状态处理 operationViewModel.loadState.observe(this, { @@ -128,7 +130,7 @@ }) } - private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + private fun obtainSearchResult(args: ArrayList) { workOrderViewModel.obtainSearchResult( keywords = args[0], alarmContent = args[1], @@ -145,7 +147,7 @@ 2022040102 -> { isRefresh = true pageIndex = 1 - obtainSearchResult(args, pageIndex) + obtainSearchResult(args) } 2022040101 -> { if (isRefresh || isLoadMore) { @@ -153,7 +155,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(args, pageIndex) + pageIndex = 1 + obtainSearchResult(args) } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/WorkOrderViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/WorkOrderViewModel.kt index 411c9a8..c3f7b0b 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/WorkOrderViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/WorkOrderViewModel.kt @@ -6,9 +6,10 @@ import com.casic.qd.smartwell.extensions.separateResponseCode import com.casic.qd.smartwell.extensions.show import com.casic.qd.smartwell.extensions.toErrorMessage +import com.casic.qd.smartwell.model.OrderDetailModel +import com.casic.qd.smartwell.model.OrderListModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.model.SearchResultModel -import com.casic.qd.smartwell.model.WorkOrderDetailModel import com.casic.qd.smartwell.utils.LoadState import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -18,8 +19,9 @@ private val gson = Gson() val orderStatusModel = MutableLiveData() - val listModel = MutableLiveData() - val detailModel = MutableLiveData() + val searchResultModel = MutableLiveData() + val orderListModel = MutableLiveData() + val detailModel = MutableLiveData() // val resultModel = MutableLiveData>() @@ -53,7 +55,7 @@ val responseCode = response.separateResponseCode() if (responseCode == 200) { loadState.value = LoadState.Success - listModel.value = gson.fromJson( + searchResultModel.value = gson.fromJson( response, object : TypeToken() {}.type ) } else { @@ -65,14 +67,28 @@ it.printStackTrace() }) + fun obtainOrderListByState(jobStatus: String, page: Int) = launch({ + val response = RetrofitServiceManager.obtainOrderListByState(jobStatus, page) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + orderListModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show() + } + }, { + it.printStackTrace() + }) + fun obtainWorkOrderDetail(id: String) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.obtainWorkOrderDetail(id) val responseCode = response.separateResponseCode() if (responseCode == 200) { loadState.value = LoadState.Success - detailModel.value = gson.fromJson( - response, object : TypeToken() {}.type + detailModel.value = gson.fromJson( + response, object : TypeToken() {}.type ) } else { loadState.value = LoadState.Fail diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/TimeLineBottomSheet.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/TimeLineBottomSheet.kt index 2b3dfe7..08a2caf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/widgets/TimeLineBottomSheet.kt +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/TimeLineBottomSheet.kt @@ -11,25 +11,25 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.model.WorkOrderDetailModel +import com.casic.qd.smartwell.model.OrderDetailModel import com.pengxh.app.multilib.utils.SizeUtil class TimeLineBottomSheet private constructor(builder: Builder) : Dialog( builder.context!!, R.style.ActionSheetDialogStyle ) { private val ctx: Context = builder.context!! - private val items: MutableList = builder.items!! + private val items: MutableList = builder.items!! class Builder { var context: Context? = null - var items: MutableList? = null + var items: MutableList? = null fun setContext(context: Context?): Builder { this.context = context return this } - fun setFlowItems(flowItems: MutableList?): Builder { + fun setFlowItems(flowItems: MutableList?): Builder { this.items = flowItems return this } diff --git a/app/src/main/res/layout/item_order_completed_recycleview.xml b/app/src/main/res/layout/item_order_completed_recycleview.xml new file mode 100644 index 0000000..822d7f4 --- /dev/null +++ b/app/src/main/res/layout/item_order_completed_recycleview.xml @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file