diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/WorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/WorkOrderListAdapter.kt new file mode 100644 index 0000000..04dce3c --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/WorkOrderListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.app.smartwell.sanxi.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Button +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.sanxi.R +import com.casic.app.smartwell.sanxi.model.WorkOrderListModel + +class WorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): WorkOrderListAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_work_order_recycleview, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + val jobStatusName = rowsBean.jobStatusName + if (jobStatusName == "已完成") { + holder.orderStateView.setBackgroundResource(R.drawable.bg_text_tag_green) + holder.operationButton.visibility = View.GONE + } else { + holder.orderStateView.setBackgroundResource(R.drawable.bg_text_tag_orange) + holder.operationButton.visibility = View.VISIBLE + } + holder.orderStateView.text = jobStatusName + holder.alarmMessageView.text = rowsBean.alarmMessage + val alarmValue = rowsBean.alarmValue.toString() + if (alarmValue.isBlank()) { + holder.alarmValueView.text = "报警值未知" + } else { + holder.alarmValueView.text = alarmValue + } + holder.devCodeView.text = String.format("工单编号:${rowsBean.jobCode}") + holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") + holder.wellLocationView.text = String.format("位置:${rowsBean.position}") + holder.createTimeView.text = String.format("工单创建时间:${rowsBean.createTime}") + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var orderStateView: TextView = view.findViewById(R.id.orderStateView) + var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) + var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) + var devCodeView: TextView = view.findViewById(R.id.devCodeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var createTimeView: TextView = view.findViewById(R.id.createTimeView) + var operationButton: Button = view.findViewById(R.id.operationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/WorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/WorkOrderListAdapter.kt new file mode 100644 index 0000000..04dce3c --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/WorkOrderListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.app.smartwell.sanxi.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Button +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.sanxi.R +import com.casic.app.smartwell.sanxi.model.WorkOrderListModel + +class WorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): WorkOrderListAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_work_order_recycleview, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + val jobStatusName = rowsBean.jobStatusName + if (jobStatusName == "已完成") { + holder.orderStateView.setBackgroundResource(R.drawable.bg_text_tag_green) + holder.operationButton.visibility = View.GONE + } else { + holder.orderStateView.setBackgroundResource(R.drawable.bg_text_tag_orange) + holder.operationButton.visibility = View.VISIBLE + } + holder.orderStateView.text = jobStatusName + holder.alarmMessageView.text = rowsBean.alarmMessage + val alarmValue = rowsBean.alarmValue.toString() + if (alarmValue.isBlank()) { + holder.alarmValueView.text = "报警值未知" + } else { + holder.alarmValueView.text = alarmValue + } + holder.devCodeView.text = String.format("工单编号:${rowsBean.jobCode}") + holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") + holder.wellLocationView.text = String.format("位置:${rowsBean.position}") + holder.createTimeView.text = String.format("工单创建时间:${rowsBean.createTime}") + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var orderStateView: TextView = view.findViewById(R.id.orderStateView) + var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) + var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) + var devCodeView: TextView = view.findViewById(R.id.devCodeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var createTimeView: TextView = view.findViewById(R.id.createTimeView) + var operationButton: Button = view.findViewById(R.id.operationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/String.kt index 9a5e50b..b5afb82 100644 --- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/String.kt @@ -168,4 +168,14 @@ } } }) +} + +/** + * 解析用户详细信息 + * */ +inline fun String.obtainUserDetail(): T? { + if (this.isBlank()) return null + return Gson().fromJson( + this, object : TypeToken() {}.type + ) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/WorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/WorkOrderListAdapter.kt new file mode 100644 index 0000000..04dce3c --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/WorkOrderListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.app.smartwell.sanxi.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Button +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.sanxi.R +import com.casic.app.smartwell.sanxi.model.WorkOrderListModel + +class WorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, viewType: Int + ): WorkOrderListAdapter.ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_work_order_recycleview, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + val jobStatusName = rowsBean.jobStatusName + if (jobStatusName == "已完成") { + holder.orderStateView.setBackgroundResource(R.drawable.bg_text_tag_green) + holder.operationButton.visibility = View.GONE + } else { + holder.orderStateView.setBackgroundResource(R.drawable.bg_text_tag_orange) + holder.operationButton.visibility = View.VISIBLE + } + holder.orderStateView.text = jobStatusName + holder.alarmMessageView.text = rowsBean.alarmMessage + val alarmValue = rowsBean.alarmValue.toString() + if (alarmValue.isBlank()) { + holder.alarmValueView.text = "报警值未知" + } else { + holder.alarmValueView.text = alarmValue + } + holder.devCodeView.text = String.format("工单编号:${rowsBean.jobCode}") + holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") + holder.wellLocationView.text = String.format("位置:${rowsBean.position}") + holder.createTimeView.text = String.format("工单创建时间:${rowsBean.createTime}") + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var orderStateView: TextView = view.findViewById(R.id.orderStateView) + var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) + var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) + var devCodeView: TextView = view.findViewById(R.id.devCodeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var createTimeView: TextView = view.findViewById(R.id.createTimeView) + var operationButton: Button = view.findViewById(R.id.operationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/String.kt index 9a5e50b..b5afb82 100644 --- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/String.kt @@ -168,4 +168,14 @@ } } }) +} + +/** + * 解析用户详细信息 + * */ +inline fun String.obtainUserDetail(): T? { + if (this.isBlank()) return null + return Gson().fromJson( + this, object : TypeToken() {}.type + ) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/fragment/WorkOrderPageFragment.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/fragment/WorkOrderPageFragment.kt index 43a5dfb..4370ba9 100644 --- a/app/src/main/java/com/casic/app/smartwell/sanxi/fragment/WorkOrderPageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/sanxi/fragment/WorkOrderPageFragment.kt @@ -1,24 +1,176 @@ package com.casic.app.smartwell.sanxi.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message import android.view.View +import android.widget.Button +import android.widget.TextView +import androidx.core.view.GravityCompat +import androidx.drawerlayout.widget.DrawerLayout +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.sanxi.R +import com.casic.app.smartwell.sanxi.adapter.WorkOrderListAdapter import com.casic.app.smartwell.sanxi.base.BaseFragment -import kotlinx.android.synthetic.main.include_base_title.* +import com.casic.app.smartwell.sanxi.extensions.navigatePageTo +import com.casic.app.smartwell.sanxi.extensions.show +import com.casic.app.smartwell.sanxi.extensions.showEmptyPage +import com.casic.app.smartwell.sanxi.model.WorkOrderListModel +import com.casic.app.smartwell.sanxi.view.WellDetailActivity +import com.casic.app.smartwell.sanxi.vm.WorkOrderViewModel +import kotlinx.android.synthetic.main.fragment_work_order.* +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference -class WorkOrderPageFragment : BaseFragment() { +class WorkOrderPageFragment : BaseFragment(), DrawerLayout.DrawerListener { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var workOrderListAdapter: WorkOrderListAdapter + private var dataBeans: MutableList = ArrayList() + private var keywords = "" + private var alarmType = "" + private var alarmContent = "" + private var jobStatus = "" + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false override fun initLayoutView(): Int = R.layout.fragment_work_order override fun setupTopBarLayout() { - leftBackView.visibility = View.GONE - titleView.text = "工单" + titleView.text = "工单管理" + rightOptionView.setOnClickListener { + if (rightDrawerLayout.isDrawerOpen(GravityCompat.END)) { + rightDrawerLayout.closeDrawer(GravityCompat.END) + } else { + rightDrawerLayout.openDrawer(GravityCompat.END) + } + } + rightDrawerLayout.addDrawerListener(this) } override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + //默认加载所有数据 + obtainWorkOrderListByPage() } override fun initEvent() { + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderListByPage() + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderListByPage() + } + workOrderViewModel.orderListModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show() + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022051202) + } + }) + } + + private fun obtainWorkOrderListByPage() { + workOrderViewModel.obtainWorkOrderListByState( + keywords, alarmType, alarmContent, jobStatus, pageIndex + ) + } + + override fun onDrawerSlide(drawerView: View, slideOffset: Float) { + + } + + override fun onDrawerOpened(drawerView: View) { + val alarmTypeView = drawerView.findViewById(R.id.alarmTypeView) + val alarmContentView = drawerView.findViewById(R.id.alarmContentView) + val searchButton = drawerView.findViewById