diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt index ecece0e..3d2d37b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt @@ -10,7 +10,6 @@ class LoginOutViewModel : BaseViewModel() { private val kTag = "LoginOutViewModel" - val resultModel = MutableLiveData() fun loginOut() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt index ecece0e..3d2d37b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt @@ -10,7 +10,6 @@ class LoginOutViewModel : BaseViewModel() { private val kTag = "LoginOutViewModel" - val resultModel = MutableLiveData() fun loginOut() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt index 668e2e9..ea4077d 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UpdateVersionViewModel : BaseViewModel() { + val resultModel = MutableLiveData() fun updateVersion() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt index ecece0e..3d2d37b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt @@ -10,7 +10,6 @@ class LoginOutViewModel : BaseViewModel() { private val kTag = "LoginOutViewModel" - val resultModel = MutableLiveData() fun loginOut() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt index 668e2e9..ea4077d 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UpdateVersionViewModel : BaseViewModel() { + val resultModel = MutableLiveData() fun updateVersion() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 2baf4c0..d47af74 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UserDetailViewModel : BaseViewModel() { - private val kTag = "UserDetailViewModel" + private val kTag = "UserDetailViewModel" val userDetailModel = MutableLiveData() fun obtainUserDetail() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt index ecece0e..3d2d37b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt @@ -10,7 +10,6 @@ class LoginOutViewModel : BaseViewModel() { private val kTag = "LoginOutViewModel" - val resultModel = MutableLiveData() fun loginOut() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt index 668e2e9..ea4077d 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UpdateVersionViewModel : BaseViewModel() { + val resultModel = MutableLiveData() fun updateVersion() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 2baf4c0..d47af74 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UserDetailViewModel : BaseViewModel() { - private val kTag = "UserDetailViewModel" + private val kTag = "UserDetailViewModel" val userDetailModel = MutableLiveData() fun obtainUserDetail() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt index 363e46b..60389fa 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WellCountViewModel : BaseViewModel() { + private val kTag = "WellCountViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt index ecece0e..3d2d37b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt @@ -10,7 +10,6 @@ class LoginOutViewModel : BaseViewModel() { private val kTag = "LoginOutViewModel" - val resultModel = MutableLiveData() fun loginOut() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt index 668e2e9..ea4077d 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UpdateVersionViewModel : BaseViewModel() { + val resultModel = MutableLiveData() fun updateVersion() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 2baf4c0..d47af74 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UserDetailViewModel : BaseViewModel() { - private val kTag = "UserDetailViewModel" + private val kTag = "UserDetailViewModel" val userDetailModel = MutableLiveData() fun obtainUserDetail() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt index 363e46b..60389fa 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WellCountViewModel : BaseViewModel() { + private val kTag = "WellCountViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt index 8075940..4ba71c9 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellDetailViewModel : BaseViewModel() { + val detailModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt index ecece0e..3d2d37b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt @@ -10,7 +10,6 @@ class LoginOutViewModel : BaseViewModel() { private val kTag = "LoginOutViewModel" - val resultModel = MutableLiveData() fun loginOut() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt index 668e2e9..ea4077d 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UpdateVersionViewModel : BaseViewModel() { + val resultModel = MutableLiveData() fun updateVersion() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 2baf4c0..d47af74 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UserDetailViewModel : BaseViewModel() { - private val kTag = "UserDetailViewModel" + private val kTag = "UserDetailViewModel" val userDetailModel = MutableLiveData() fun obtainUserDetail() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt index 363e46b..60389fa 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WellCountViewModel : BaseViewModel() { + private val kTag = "WellCountViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt index 8075940..4ba71c9 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellDetailViewModel : BaseViewModel() { + val detailModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt index 4157cb9..874e449 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellListViewModel : BaseViewModel() { - private val kTag = "WellListViewModel" + private val kTag = "WellListViewModel" val listModel = MutableLiveData() fun obtainWellList( diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt index ecece0e..3d2d37b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt @@ -10,7 +10,6 @@ class LoginOutViewModel : BaseViewModel() { private val kTag = "LoginOutViewModel" - val resultModel = MutableLiveData() fun loginOut() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt index 668e2e9..ea4077d 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UpdateVersionViewModel : BaseViewModel() { + val resultModel = MutableLiveData() fun updateVersion() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 2baf4c0..d47af74 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UserDetailViewModel : BaseViewModel() { - private val kTag = "UserDetailViewModel" + private val kTag = "UserDetailViewModel" val userDetailModel = MutableLiveData() fun obtainUserDetail() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt index 363e46b..60389fa 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WellCountViewModel : BaseViewModel() { + private val kTag = "WellCountViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt index 8075940..4ba71c9 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellDetailViewModel : BaseViewModel() { + val detailModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt index 4157cb9..874e449 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellListViewModel : BaseViewModel() { - private val kTag = "WellListViewModel" + private val kTag = "WellListViewModel" val listModel = MutableLiveData() fun obtainWellList( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt index 518e021..0200c19 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellMonitorViewModel : BaseViewModel() { + val monitorModel = MutableLiveData() fun obtainMonitorResult(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt index ecece0e..3d2d37b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt @@ -10,7 +10,6 @@ class LoginOutViewModel : BaseViewModel() { private val kTag = "LoginOutViewModel" - val resultModel = MutableLiveData() fun loginOut() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt index 668e2e9..ea4077d 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UpdateVersionViewModel : BaseViewModel() { + val resultModel = MutableLiveData() fun updateVersion() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 2baf4c0..d47af74 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UserDetailViewModel : BaseViewModel() { - private val kTag = "UserDetailViewModel" + private val kTag = "UserDetailViewModel" val userDetailModel = MutableLiveData() fun obtainUserDetail() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt index 363e46b..60389fa 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WellCountViewModel : BaseViewModel() { + private val kTag = "WellCountViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt index 8075940..4ba71c9 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellDetailViewModel : BaseViewModel() { + val detailModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt index 4157cb9..874e449 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellListViewModel : BaseViewModel() { - private val kTag = "WellListViewModel" + private val kTag = "WellListViewModel" val listModel = MutableLiveData() fun obtainWellList( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt index 518e021..0200c19 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellMonitorViewModel : BaseViewModel() { + val monitorModel = MutableLiveData() fun obtainMonitorResult(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt index 43c66a6..62d5675 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt @@ -8,11 +8,12 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellOperationViewModel : BaseViewModel() { + val operationResultModel = MutableLiveData() - fun obtainOperationResult(wellId: String, bfzt: String) = launch({ + fun obtainOperationResult(id: String, state: String) = launch({ loadState.value = LoadState.Loading - operationResultModel.value = RetrofitServiceManager.obtainOperationResult(wellId, bfzt) + operationResultModel.value = RetrofitServiceManager.obtainOperationResult(id, state) loadState.value = LoadState.Success }, { loadState.value = LoadState.Fail diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt index ecece0e..3d2d37b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt @@ -10,7 +10,6 @@ class LoginOutViewModel : BaseViewModel() { private val kTag = "LoginOutViewModel" - val resultModel = MutableLiveData() fun loginOut() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt index 668e2e9..ea4077d 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UpdateVersionViewModel : BaseViewModel() { + val resultModel = MutableLiveData() fun updateVersion() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 2baf4c0..d47af74 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UserDetailViewModel : BaseViewModel() { - private val kTag = "UserDetailViewModel" + private val kTag = "UserDetailViewModel" val userDetailModel = MutableLiveData() fun obtainUserDetail() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt index 363e46b..60389fa 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WellCountViewModel : BaseViewModel() { + private val kTag = "WellCountViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt index 8075940..4ba71c9 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellDetailViewModel : BaseViewModel() { + val detailModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt index 4157cb9..874e449 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellListViewModel : BaseViewModel() { - private val kTag = "WellListViewModel" + private val kTag = "WellListViewModel" val listModel = MutableLiveData() fun obtainWellList( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt index 518e021..0200c19 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellMonitorViewModel : BaseViewModel() { + val monitorModel = MutableLiveData() fun obtainMonitorResult(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt index 43c66a6..62d5675 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt @@ -8,11 +8,12 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellOperationViewModel : BaseViewModel() { + val operationResultModel = MutableLiveData() - fun obtainOperationResult(wellId: String, bfzt: String) = launch({ + fun obtainOperationResult(id: String, state: String) = launch({ loadState.value = LoadState.Loading - operationResultModel.value = RetrofitServiceManager.obtainOperationResult(wellId, bfzt) + operationResultModel.value = RetrofitServiceManager.obtainOperationResult(id, state) loadState.value = LoadState.Success }, { loadState.value = LoadState.Fail diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt index 015d92e..f86d7d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellTypeViewModel : BaseViewModel() { - private val kTag = "WellTypeViewModel" + private val kTag = "WellTypeViewModel" val wellTypeModel = MutableLiveData() fun obtainWellType() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt index ecece0e..3d2d37b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt @@ -10,7 +10,6 @@ class LoginOutViewModel : BaseViewModel() { private val kTag = "LoginOutViewModel" - val resultModel = MutableLiveData() fun loginOut() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt index 668e2e9..ea4077d 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UpdateVersionViewModel : BaseViewModel() { + val resultModel = MutableLiveData() fun updateVersion() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 2baf4c0..d47af74 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UserDetailViewModel : BaseViewModel() { - private val kTag = "UserDetailViewModel" + private val kTag = "UserDetailViewModel" val userDetailModel = MutableLiveData() fun obtainUserDetail() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt index 363e46b..60389fa 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WellCountViewModel : BaseViewModel() { + private val kTag = "WellCountViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt index 8075940..4ba71c9 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellDetailViewModel : BaseViewModel() { + val detailModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt index 4157cb9..874e449 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellListViewModel : BaseViewModel() { - private val kTag = "WellListViewModel" + private val kTag = "WellListViewModel" val listModel = MutableLiveData() fun obtainWellList( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt index 518e021..0200c19 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellMonitorViewModel : BaseViewModel() { + val monitorModel = MutableLiveData() fun obtainMonitorResult(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt index 43c66a6..62d5675 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt @@ -8,11 +8,12 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellOperationViewModel : BaseViewModel() { + val operationResultModel = MutableLiveData() - fun obtainOperationResult(wellId: String, bfzt: String) = launch({ + fun obtainOperationResult(id: String, state: String) = launch({ loadState.value = LoadState.Loading - operationResultModel.value = RetrofitServiceManager.obtainOperationResult(wellId, bfzt) + operationResultModel.value = RetrofitServiceManager.obtainOperationResult(id, state) loadState.value = LoadState.Success }, { loadState.value = LoadState.Fail diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt index 015d92e..f86d7d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellTypeViewModel : BaseViewModel() { - private val kTag = "WellTypeViewModel" + private val kTag = "WellTypeViewModel" val wellTypeModel = MutableLiveData() fun obtainWellType() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt new file mode 100644 index 0000000..aa1df2c --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class WorkOrderListViewModel : BaseViewModel() { + + private val kTag = "WorkOrderListViewModel" + val resultModel = MutableLiveData() + + fun obtainWorkOrderListByState(jobStatus: String, page: Int) = launch({ + resultModel.value = RetrofitServiceManager.obtainWorkOrderList(jobStatus, page) + }, { + Log.d(kTag, "obtainWorkOrderListByState: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt index ecece0e..3d2d37b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt @@ -10,7 +10,6 @@ class LoginOutViewModel : BaseViewModel() { private val kTag = "LoginOutViewModel" - val resultModel = MutableLiveData() fun loginOut() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt index 668e2e9..ea4077d 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UpdateVersionViewModel : BaseViewModel() { + val resultModel = MutableLiveData() fun updateVersion() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 2baf4c0..d47af74 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UserDetailViewModel : BaseViewModel() { - private val kTag = "UserDetailViewModel" + private val kTag = "UserDetailViewModel" val userDetailModel = MutableLiveData() fun obtainUserDetail() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt index 363e46b..60389fa 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WellCountViewModel : BaseViewModel() { + private val kTag = "WellCountViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt index 8075940..4ba71c9 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellDetailViewModel : BaseViewModel() { + val detailModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt index 4157cb9..874e449 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellListViewModel : BaseViewModel() { - private val kTag = "WellListViewModel" + private val kTag = "WellListViewModel" val listModel = MutableLiveData() fun obtainWellList( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt index 518e021..0200c19 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellMonitorViewModel : BaseViewModel() { + val monitorModel = MutableLiveData() fun obtainMonitorResult(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt index 43c66a6..62d5675 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt @@ -8,11 +8,12 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellOperationViewModel : BaseViewModel() { + val operationResultModel = MutableLiveData() - fun obtainOperationResult(wellId: String, bfzt: String) = launch({ + fun obtainOperationResult(id: String, state: String) = launch({ loadState.value = LoadState.Loading - operationResultModel.value = RetrofitServiceManager.obtainOperationResult(wellId, bfzt) + operationResultModel.value = RetrofitServiceManager.obtainOperationResult(id, state) loadState.value = LoadState.Success }, { loadState.value = LoadState.Fail diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt index 015d92e..f86d7d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellTypeViewModel : BaseViewModel() { - private val kTag = "WellTypeViewModel" + private val kTag = "WellTypeViewModel" val wellTypeModel = MutableLiveData() fun obtainWellType() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt new file mode 100644 index 0000000..aa1df2c --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class WorkOrderListViewModel : BaseViewModel() { + + private val kTag = "WorkOrderListViewModel" + val resultModel = MutableLiveData() + + fun obtainWorkOrderListByState(jobStatus: String, page: Int) = launch({ + resultModel.value = RetrofitServiceManager.obtainWorkOrderList(jobStatus, page) + }, { + Log.d(kTag, "obtainWorkOrderListByState: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt index e28026e..a9ea8d3 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WorkOrderViewModel : BaseViewModel() { + private val kTag = "WorkOrderViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt index ecece0e..3d2d37b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt @@ -10,7 +10,6 @@ class LoginOutViewModel : BaseViewModel() { private val kTag = "LoginOutViewModel" - val resultModel = MutableLiveData() fun loginOut() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt index 668e2e9..ea4077d 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UpdateVersionViewModel : BaseViewModel() { + val resultModel = MutableLiveData() fun updateVersion() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 2baf4c0..d47af74 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UserDetailViewModel : BaseViewModel() { - private val kTag = "UserDetailViewModel" + private val kTag = "UserDetailViewModel" val userDetailModel = MutableLiveData() fun obtainUserDetail() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt index 363e46b..60389fa 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WellCountViewModel : BaseViewModel() { + private val kTag = "WellCountViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt index 8075940..4ba71c9 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellDetailViewModel : BaseViewModel() { + val detailModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt index 4157cb9..874e449 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellListViewModel : BaseViewModel() { - private val kTag = "WellListViewModel" + private val kTag = "WellListViewModel" val listModel = MutableLiveData() fun obtainWellList( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt index 518e021..0200c19 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellMonitorViewModel : BaseViewModel() { + val monitorModel = MutableLiveData() fun obtainMonitorResult(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt index 43c66a6..62d5675 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt @@ -8,11 +8,12 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellOperationViewModel : BaseViewModel() { + val operationResultModel = MutableLiveData() - fun obtainOperationResult(wellId: String, bfzt: String) = launch({ + fun obtainOperationResult(id: String, state: String) = launch({ loadState.value = LoadState.Loading - operationResultModel.value = RetrofitServiceManager.obtainOperationResult(wellId, bfzt) + operationResultModel.value = RetrofitServiceManager.obtainOperationResult(id, state) loadState.value = LoadState.Success }, { loadState.value = LoadState.Fail diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt index 015d92e..f86d7d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellTypeViewModel : BaseViewModel() { - private val kTag = "WellTypeViewModel" + private val kTag = "WellTypeViewModel" val wellTypeModel = MutableLiveData() fun obtainWellType() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt new file mode 100644 index 0000000..aa1df2c --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class WorkOrderListViewModel : BaseViewModel() { + + private val kTag = "WorkOrderListViewModel" + val resultModel = MutableLiveData() + + fun obtainWorkOrderListByState(jobStatus: String, page: Int) = launch({ + resultModel.value = RetrofitServiceManager.obtainWorkOrderList(jobStatus, page) + }, { + Log.d(kTag, "obtainWorkOrderListByState: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt index e28026e..a9ea8d3 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WorkOrderViewModel : BaseViewModel() { + private val kTag = "WorkOrderViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/res/layout/fragment_order_completed.xml b/app/src/main/res/layout/fragment_order_completed.xml index 77d9ef6..ae93da9 100644 --- a/app/src/main/res/layout/fragment_order_completed.xml +++ b/app/src/main/res/layout/fragment_order_completed.xml @@ -1,6 +1,38 @@ - + android:layout_height="match_parent" + android:background="@color/white" + android:orientation="vertical"> - \ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt index ecece0e..3d2d37b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt @@ -10,7 +10,6 @@ class LoginOutViewModel : BaseViewModel() { private val kTag = "LoginOutViewModel" - val resultModel = MutableLiveData() fun loginOut() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt index 668e2e9..ea4077d 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UpdateVersionViewModel : BaseViewModel() { + val resultModel = MutableLiveData() fun updateVersion() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 2baf4c0..d47af74 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UserDetailViewModel : BaseViewModel() { - private val kTag = "UserDetailViewModel" + private val kTag = "UserDetailViewModel" val userDetailModel = MutableLiveData() fun obtainUserDetail() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt index 363e46b..60389fa 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WellCountViewModel : BaseViewModel() { + private val kTag = "WellCountViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt index 8075940..4ba71c9 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellDetailViewModel : BaseViewModel() { + val detailModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt index 4157cb9..874e449 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellListViewModel : BaseViewModel() { - private val kTag = "WellListViewModel" + private val kTag = "WellListViewModel" val listModel = MutableLiveData() fun obtainWellList( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt index 518e021..0200c19 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellMonitorViewModel : BaseViewModel() { + val monitorModel = MutableLiveData() fun obtainMonitorResult(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt index 43c66a6..62d5675 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt @@ -8,11 +8,12 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellOperationViewModel : BaseViewModel() { + val operationResultModel = MutableLiveData() - fun obtainOperationResult(wellId: String, bfzt: String) = launch({ + fun obtainOperationResult(id: String, state: String) = launch({ loadState.value = LoadState.Loading - operationResultModel.value = RetrofitServiceManager.obtainOperationResult(wellId, bfzt) + operationResultModel.value = RetrofitServiceManager.obtainOperationResult(id, state) loadState.value = LoadState.Success }, { loadState.value = LoadState.Fail diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt index 015d92e..f86d7d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellTypeViewModel : BaseViewModel() { - private val kTag = "WellTypeViewModel" + private val kTag = "WellTypeViewModel" val wellTypeModel = MutableLiveData() fun obtainWellType() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt new file mode 100644 index 0000000..aa1df2c --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class WorkOrderListViewModel : BaseViewModel() { + + private val kTag = "WorkOrderListViewModel" + val resultModel = MutableLiveData() + + fun obtainWorkOrderListByState(jobStatus: String, page: Int) = launch({ + resultModel.value = RetrofitServiceManager.obtainWorkOrderList(jobStatus, page) + }, { + Log.d(kTag, "obtainWorkOrderListByState: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt index e28026e..a9ea8d3 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WorkOrderViewModel : BaseViewModel() { + private val kTag = "WorkOrderViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/res/layout/fragment_order_completed.xml b/app/src/main/res/layout/fragment_order_completed.xml index 77d9ef6..ae93da9 100644 --- a/app/src/main/res/layout/fragment_order_completed.xml +++ b/app/src/main/res/layout/fragment_order_completed.xml @@ -1,6 +1,38 @@ - + android:layout_height="match_parent" + android:background="@color/white" + android:orientation="vertical"> - \ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_order_todo.xml b/app/src/main/res/layout/fragment_order_todo.xml index 77d9ef6..e512f69 100644 --- a/app/src/main/res/layout/fragment_order_todo.xml +++ b/app/src/main/res/layout/fragment_order_todo.xml @@ -1,6 +1,38 @@ - + android:layout_height="match_parent" + android:background="@color/white" + android:orientation="vertical"> - \ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt index ecece0e..3d2d37b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt @@ -10,7 +10,6 @@ class LoginOutViewModel : BaseViewModel() { private val kTag = "LoginOutViewModel" - val resultModel = MutableLiveData() fun loginOut() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt index 668e2e9..ea4077d 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UpdateVersionViewModel : BaseViewModel() { + val resultModel = MutableLiveData() fun updateVersion() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 2baf4c0..d47af74 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UserDetailViewModel : BaseViewModel() { - private val kTag = "UserDetailViewModel" + private val kTag = "UserDetailViewModel" val userDetailModel = MutableLiveData() fun obtainUserDetail() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt index 363e46b..60389fa 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WellCountViewModel : BaseViewModel() { + private val kTag = "WellCountViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt index 8075940..4ba71c9 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellDetailViewModel : BaseViewModel() { + val detailModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt index 4157cb9..874e449 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellListViewModel : BaseViewModel() { - private val kTag = "WellListViewModel" + private val kTag = "WellListViewModel" val listModel = MutableLiveData() fun obtainWellList( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt index 518e021..0200c19 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellMonitorViewModel : BaseViewModel() { + val monitorModel = MutableLiveData() fun obtainMonitorResult(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt index 43c66a6..62d5675 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt @@ -8,11 +8,12 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellOperationViewModel : BaseViewModel() { + val operationResultModel = MutableLiveData() - fun obtainOperationResult(wellId: String, bfzt: String) = launch({ + fun obtainOperationResult(id: String, state: String) = launch({ loadState.value = LoadState.Loading - operationResultModel.value = RetrofitServiceManager.obtainOperationResult(wellId, bfzt) + operationResultModel.value = RetrofitServiceManager.obtainOperationResult(id, state) loadState.value = LoadState.Success }, { loadState.value = LoadState.Fail diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt index 015d92e..f86d7d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellTypeViewModel : BaseViewModel() { - private val kTag = "WellTypeViewModel" + private val kTag = "WellTypeViewModel" val wellTypeModel = MutableLiveData() fun obtainWellType() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt new file mode 100644 index 0000000..aa1df2c --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class WorkOrderListViewModel : BaseViewModel() { + + private val kTag = "WorkOrderListViewModel" + val resultModel = MutableLiveData() + + fun obtainWorkOrderListByState(jobStatus: String, page: Int) = launch({ + resultModel.value = RetrofitServiceManager.obtainWorkOrderList(jobStatus, page) + }, { + Log.d(kTag, "obtainWorkOrderListByState: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt index e28026e..a9ea8d3 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WorkOrderViewModel : BaseViewModel() { + private val kTag = "WorkOrderViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/res/layout/fragment_order_completed.xml b/app/src/main/res/layout/fragment_order_completed.xml index 77d9ef6..ae93da9 100644 --- a/app/src/main/res/layout/fragment_order_completed.xml +++ b/app/src/main/res/layout/fragment_order_completed.xml @@ -1,6 +1,38 @@ - + android:layout_height="match_parent" + android:background="@color/white" + android:orientation="vertical"> - \ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_order_todo.xml b/app/src/main/res/layout/fragment_order_todo.xml index 77d9ef6..e512f69 100644 --- a/app/src/main/res/layout/fragment_order_todo.xml +++ b/app/src/main/res/layout/fragment_order_todo.xml @@ -1,6 +1,38 @@ - + android:layout_height="match_parent" + android:background="@color/white" + android:orientation="vertical"> - \ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_order_todo_recycleview.xml b/app/src/main/res/layout/item_order_todo_recycleview.xml new file mode 100644 index 0000000..c9ac10f --- /dev/null +++ b/app/src/main/res/layout/item_order_todo_recycleview.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt new file mode 100644 index 0000000..7267e88 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/adapter/TodoWorkOrderListAdapter.kt @@ -0,0 +1,74 @@ +package com.casic.app.smartwell.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.valueToType +import com.casic.app.smartwell.model.WorkOrderListModel +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +class TodoWorkOrderListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt index ecece0e..3d2d37b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt @@ -10,7 +10,6 @@ class LoginOutViewModel : BaseViewModel() { private val kTag = "LoginOutViewModel" - val resultModel = MutableLiveData() fun loginOut() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt index 668e2e9..ea4077d 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UpdateVersionViewModel : BaseViewModel() { + val resultModel = MutableLiveData() fun updateVersion() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 2baf4c0..d47af74 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UserDetailViewModel : BaseViewModel() { - private val kTag = "UserDetailViewModel" + private val kTag = "UserDetailViewModel" val userDetailModel = MutableLiveData() fun obtainUserDetail() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt index 363e46b..60389fa 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WellCountViewModel : BaseViewModel() { + private val kTag = "WellCountViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt index 8075940..4ba71c9 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellDetailViewModel : BaseViewModel() { + val detailModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt index 4157cb9..874e449 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellListViewModel : BaseViewModel() { - private val kTag = "WellListViewModel" + private val kTag = "WellListViewModel" val listModel = MutableLiveData() fun obtainWellList( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt index 518e021..0200c19 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellMonitorViewModel : BaseViewModel() { + val monitorModel = MutableLiveData() fun obtainMonitorResult(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt index 43c66a6..62d5675 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt @@ -8,11 +8,12 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellOperationViewModel : BaseViewModel() { + val operationResultModel = MutableLiveData() - fun obtainOperationResult(wellId: String, bfzt: String) = launch({ + fun obtainOperationResult(id: String, state: String) = launch({ loadState.value = LoadState.Loading - operationResultModel.value = RetrofitServiceManager.obtainOperationResult(wellId, bfzt) + operationResultModel.value = RetrofitServiceManager.obtainOperationResult(id, state) loadState.value = LoadState.Success }, { loadState.value = LoadState.Fail diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt index 015d92e..f86d7d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellTypeViewModel : BaseViewModel() { - private val kTag = "WellTypeViewModel" + private val kTag = "WellTypeViewModel" val wellTypeModel = MutableLiveData() fun obtainWellType() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt new file mode 100644 index 0000000..aa1df2c --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class WorkOrderListViewModel : BaseViewModel() { + + private val kTag = "WorkOrderListViewModel" + val resultModel = MutableLiveData() + + fun obtainWorkOrderListByState(jobStatus: String, page: Int) = launch({ + resultModel.value = RetrofitServiceManager.obtainWorkOrderList(jobStatus, page) + }, { + Log.d(kTag, "obtainWorkOrderListByState: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt index e28026e..a9ea8d3 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WorkOrderViewModel : BaseViewModel() { + private val kTag = "WorkOrderViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/res/layout/fragment_order_completed.xml b/app/src/main/res/layout/fragment_order_completed.xml index 77d9ef6..ae93da9 100644 --- a/app/src/main/res/layout/fragment_order_completed.xml +++ b/app/src/main/res/layout/fragment_order_completed.xml @@ -1,6 +1,38 @@ - + android:layout_height="match_parent" + android:background="@color/white" + android:orientation="vertical"> - \ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_order_todo.xml b/app/src/main/res/layout/fragment_order_todo.xml index 77d9ef6..e512f69 100644 --- a/app/src/main/res/layout/fragment_order_todo.xml +++ b/app/src/main/res/layout/fragment_order_todo.xml @@ -1,6 +1,38 @@ - + android:layout_height="match_parent" + android:background="@color/white" + android:orientation="vertical"> - \ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_order_todo_recycleview.xml b/app/src/main/res/layout/item_order_todo_recycleview.xml new file mode 100644 index 0000000..c9ac10f --- /dev/null +++ b/app/src/main/res/layout/item_order_todo_recycleview.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_well_operation_recycleview.xml b/app/src/main/res/layout/item_well_operation_recycleview.xml index 75c154f..dedbe41 100644 --- a/app/src/main/res/layout/item_well_operation_recycleview.xml +++ b/app/src/main/res/layout/item_well_operation_recycleview.xml @@ -18,16 +18,17 @@ android:layout_weight="1" android:padding="@dimen/dp_10"> - + android:layout_toStartOf="@id/operationButton" + android:gravity="center_vertical" + android:orientation="horizontal"> - + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): TodoWorkOrderListAdapter.ItemViewHolder { + val view: View = + layoutInflater.inflate(R.layout.item_order_todo_recycleview, parent, false) + return ItemViewHolder(view) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.wellTypeView.text = rowsBean.wellId.valueToType() + holder.alarmTypeView.text = rowsBean.alarmContentName + holder.wellCodeView.text = rowsBean.wellCode + holder.wellLocationView.text = rowsBean.position + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + holder.operationButton.setOnClickListener { + listener!!.onOperationClicked(position) + } + holder.navigationButton.setOnClickListener { + listener!!.onNavigationButtonClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var wellTypeView: QMUIRoundButton = view.findViewById(R.id.wellTypeView) + var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView) + var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) + var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) + var operationButton: QMUIRoundButton = view.findViewById(R.id.wellStateView) + var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + + fun onOperationClicked(position: Int) + + fun onNavigationButtonClicked(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/extensions/Int.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt index 6948f2d..7b4eee8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Int.kt @@ -4,4 +4,23 @@ import androidx.core.content.ContextCompat //颜色扩展 -fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) \ No newline at end of file +fun Int.covertColor(context: Context): Int = ContextCompat.getColor(context, this) + +//窨井类型转换 +fun Int.valueToType(): String { + return when (this) { + 1 -> "雨水井" + 2 -> "污水井" + 3 -> "燃气井" + 4 -> "热力井" + 5 -> "电力井" + 6 -> "交通井" + 7 -> "路灯井" + 8 -> "通信井" + 9 -> "监控井" + 10 -> "其他" + else -> { + "未知类型" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt new file mode 100644 index 0000000..1d894cb --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderListModel.kt @@ -0,0 +1,75 @@ +package com.casic.app.smartwell.model + + +class WorkOrderListModel { + /** + * code : 200 + * message : success + * data : {"rows":[{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}],"total":200} + */ + var code = 0 + var message: String? = null + var data: DataBean? = null + + + class DataBean { + /** + * rows : [{"id":1,"wellId":1,"wellCode":"N51F131","devcode":"4120182441","position":"宋郎路","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","alarmValue":"12","deptid":"1","deptName":"一分公司","jobId":1,"jobCode":"2019282717892","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00"}] + * total : 200 + */ + var total = 0 + var rows: MutableList? = null + + + class RowsBean { + /** + * id : 1 + * wellId : 1 + * wellCode : N51F131 + * devcode : 4120182441 + * position : 宋郎路 + * alarmType : 1 + * alarmTypeName : 数据异常 + * alarmContent : 1 + * alarmContentName : 液位超限 + * alarmValue : 12 + * deptid : 1 + * deptName : 一分公司 + * jobId : 1 + * jobCode : 2019282717892 + * jobStatus : 0 + * jobStatusName : 待处理 + * createTime : 2018-12-27 00:00:00 + * getJobPerson : 1321321 + * getJobTime : 2018-12-27 00:00:00 + * confirmJobPerson : 1321321 + * confirmJobTime : 2018-12-27 00:00:00 + * handleJobPerson : 1321321 + * handleJobTime : 2018-12-27 00:00:00 + */ + var id = 0 + var wellId = 0 + var wellCode: String? = null + var devcode: String? = null + var position: String? = null + var alarmType: String? = null + var alarmTypeName: String? = null + var alarmContent: String? = null + var alarmContentName: String? = null + var alarmValue: String? = null + var deptid: String? = null + var deptName: String? = null + var jobId = 0 + var jobCode: String? = null + var jobStatus: String? = null + var jobStatusName: String? = null + var createTime: String? = null + var getJobPerson: String? = null + var getJobTime: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var handleJobPerson: String? = null + var handleJobTime: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 1961a6f..75a6bd4 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -87,6 +87,17 @@ ): CommonResultModel /** + * 根据工单状态获取工单列表 + */ + @GET("/job/list") + suspend fun obtainWorkOrderList( + @Header("token") token: String, + @Query("jobStatus") jobStatus: String, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): WorkOrderListModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7734d7d..790fb72 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -84,6 +84,18 @@ } /** + * 根据工单状态获取工单列表 + */ + suspend fun obtainWorkOrderList(jobStatus: String, page: Int): WorkOrderListModel { + return api.obtainWorkOrderList( + AuthenticationHelper.token!!, + jobStatus, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index a73cc8f..bc64dca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -251,7 +251,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { activity.operationViewModel.obtainOperationResult( - wellId, bfzt + id = wellId, state = bfzt ) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 5002066..5e54523 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -4,6 +4,7 @@ import com.pengxh.app.multilib.base.BaseFragment class CompletedOrderFragment : BaseFragment() { + override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { @@ -13,5 +14,4 @@ override fun initEvent() { } - } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index d2171b2..9faf71d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -1,17 +1,119 @@ package com.casic.app.smartwell.view.fragment +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R +import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment +import kotlinx.android.synthetic.main.fragment_order_todo.* +import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { + + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter + private lateinit var workOrderListViewModel: WorkOrderListViewModel + 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_todo override fun initData() { - + weakReferenceHandler = WeakReferenceHandler(this) + workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + obtainWorkOrderList(pageIndex) + workOrderListViewModel.resultModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + todoOrderLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(requireContext()) + } + dataBeans.addAll(dataRows!!) + todoOrderLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022032901) + } + }) } override fun initEvent() { - + todoOrderLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainWorkOrderList(pageIndex) + } + todoOrderLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainWorkOrderList(pageIndex) + } } + private fun obtainWorkOrderList(index: Int) { + workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) + } + + private class WeakReferenceHandler(fragment: TodoOrderFragment) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(fragment) + + @SuppressLint("NotifyDataSetChanged") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = reference.get()!! + if (msg.what == 2022032901) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = + TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + + } + + override fun onOperationClicked(position: Int) { + + } + + override fun onNavigationButtonClicked(position: Int) { + + } + }) + } + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 2ff9ecf..201c46b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -9,8 +9,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class AuthenticateViewModel : BaseViewModel() { - private val kTag = "AuthenticateViewModel" + private val kTag = "AuthenticateViewModel" val keyModel = MutableLiveData() fun obtainPublicKey() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt index 3b1a229..cc0b898 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginInViewModel.kt @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken class LoginInViewModel : BaseViewModel() { + private val gson = Gson() val resultModel = MutableLiveData() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt index ecece0e..3d2d37b 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/LoginOutViewModel.kt @@ -10,7 +10,6 @@ class LoginOutViewModel : BaseViewModel() { private val kTag = "LoginOutViewModel" - val resultModel = MutableLiveData() fun loginOut() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt index 668e2e9..ea4077d 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UpdateVersionViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UpdateVersionViewModel : BaseViewModel() { + val resultModel = MutableLiveData() fun updateVersion() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 2baf4c0..d47af74 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class UserDetailViewModel : BaseViewModel() { - private val kTag = "UserDetailViewModel" + private val kTag = "UserDetailViewModel" val userDetailModel = MutableLiveData() fun obtainUserDetail() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt index 363e46b..60389fa 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellCountViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WellCountViewModel : BaseViewModel() { + private val kTag = "WellCountViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt index 8075940..4ba71c9 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellDetailViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellDetailViewModel : BaseViewModel() { + val detailModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt index 4157cb9..874e449 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellListViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellListViewModel : BaseViewModel() { - private val kTag = "WellListViewModel" + private val kTag = "WellListViewModel" val listModel = MutableLiveData() fun obtainWellList( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt index 518e021..0200c19 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellMonitorViewModel.kt @@ -8,6 +8,7 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellMonitorViewModel : BaseViewModel() { + val monitorModel = MutableLiveData() fun obtainMonitorResult(id: String) = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt index 43c66a6..62d5675 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellOperationViewModel.kt @@ -8,11 +8,12 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellOperationViewModel : BaseViewModel() { + val operationResultModel = MutableLiveData() - fun obtainOperationResult(wellId: String, bfzt: String) = launch({ + fun obtainOperationResult(id: String, state: String) = launch({ loadState.value = LoadState.Loading - operationResultModel.value = RetrofitServiceManager.obtainOperationResult(wellId, bfzt) + operationResultModel.value = RetrofitServiceManager.obtainOperationResult(id, state) loadState.value = LoadState.Success }, { loadState.value = LoadState.Fail diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt index 015d92e..f86d7d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WellTypeViewModel.kt @@ -8,8 +8,8 @@ import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager class WellTypeViewModel : BaseViewModel() { - private val kTag = "WellTypeViewModel" + private val kTag = "WellTypeViewModel" val wellTypeModel = MutableLiveData() fun obtainWellType() = launch({ diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt new file mode 100644 index 0000000..aa1df2c --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderListViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class WorkOrderListViewModel : BaseViewModel() { + + private val kTag = "WorkOrderListViewModel" + val resultModel = MutableLiveData() + + fun obtainWorkOrderListByState(jobStatus: String, page: Int) = launch({ + resultModel.value = RetrofitServiceManager.obtainWorkOrderList(jobStatus, page) + }, { + Log.d(kTag, "obtainWorkOrderListByState: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt index e28026e..a9ea8d3 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/WorkOrderViewModel.kt @@ -8,6 +8,7 @@ import org.json.JSONObject class WorkOrderViewModel : BaseViewModel() { + private val kTag = "WorkOrderViewModel" val resultModel = MutableLiveData>() diff --git a/app/src/main/res/layout/fragment_order_completed.xml b/app/src/main/res/layout/fragment_order_completed.xml index 77d9ef6..ae93da9 100644 --- a/app/src/main/res/layout/fragment_order_completed.xml +++ b/app/src/main/res/layout/fragment_order_completed.xml @@ -1,6 +1,38 @@ - + android:layout_height="match_parent" + android:background="@color/white" + android:orientation="vertical"> - \ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_order_todo.xml b/app/src/main/res/layout/fragment_order_todo.xml index 77d9ef6..e512f69 100644 --- a/app/src/main/res/layout/fragment_order_todo.xml +++ b/app/src/main/res/layout/fragment_order_todo.xml @@ -1,6 +1,38 @@ - + android:layout_height="match_parent" + android:background="@color/white" + android:orientation="vertical"> - \ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_order_todo_recycleview.xml b/app/src/main/res/layout/item_order_todo_recycleview.xml new file mode 100644 index 0000000..c9ac10f --- /dev/null +++ b/app/src/main/res/layout/item_order_todo_recycleview.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_well_operation_recycleview.xml b/app/src/main/res/layout/item_well_operation_recycleview.xml index 75c154f..dedbe41 100644 --- a/app/src/main/res/layout/item_well_operation_recycleview.xml +++ b/app/src/main/res/layout/item_well_operation_recycleview.xml @@ -18,16 +18,17 @@ android:layout_weight="1" android:padding="@dimen/dp_10"> - + android:layout_toStartOf="@id/operationButton" + android:gravity="center_vertical" + android:orientation="horizontal"> - + - + android:layout_height="wrap_content" + android:gravity="center_vertical"> - +